153 lines
5.0 KiB
Markdown
153 lines
5.0 KiB
Markdown
# Technology Stack
|
|
|
|
**Analysis Date:** 2026-05-07
|
|
|
|
## Languages
|
|
|
|
**Primary:**
|
|
- TypeScript 5 - All application code, types, and configuration
|
|
- React 19 - UI components and application logic (via Next.js)
|
|
- CSS / Tailwind - Styling
|
|
|
|
**Secondary:**
|
|
- JavaScript - Configuration files, optional runtime
|
|
|
|
## Runtime
|
|
|
|
**Environment:**
|
|
- Node.js 22.10.0 (Alpine Linux) - as specified in Dockerfile
|
|
|
|
**Package Manager:**
|
|
- Yarn (primary for Docker builds; npm/pnpm also supported locally)
|
|
- Lockfiles: `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock` present
|
|
- Registry: npm registry (Dockerfile uses Taobao mirror `registry.npmmirror.com` for builds)
|
|
|
|
## Frameworks
|
|
|
|
**Core:**
|
|
- Next.js 15.2.4 - App Router, React Server Components, standalone output mode
|
|
- Configuration: `next.config.mjs`
|
|
- Build output: standalone (optimized for Docker)
|
|
- Experimental features: webpackBuildWorker, parallelServerBuildTraces, parallelServerCompiles
|
|
|
|
**Styling:**
|
|
- Tailwind CSS 3.4.17 - Utility-first CSS framework
|
|
- Animation plugin: `tailwindcss-animate` 1.0.7
|
|
- Config: `tailwind.config.ts`
|
|
- CSS Variables enabled for theming (light/dark mode)
|
|
|
|
**UI Components:**
|
|
- Radix UI (15+ component libraries) - Headless, accessible primitives
|
|
- Core: accordion, alert-dialog, avatar, checkbox, dialog, dropdown-menu, label, popover, select, tabs, toast, tooltip, etc.
|
|
- shadcn/ui style components (local copies, not npm packages)
|
|
- Config: `components.json`
|
|
- Aliases: `@/components`, `@/components/ui`, `@/lib`, `@/hooks`
|
|
|
|
**Form Management:**
|
|
- React Hook Form (latest) - Lightweight form state management
|
|
- Zod (latest) - Schema validation and type-safe form schemas
|
|
- @hookform/resolvers (latest) - Integration between React Hook Form and validation libraries
|
|
|
|
**Data Visualization:**
|
|
- Recharts (latest) - React charting library built on D3.js
|
|
- Used for dashboard analytics/metrics visualization
|
|
|
|
**Notifications & Toasts:**
|
|
- Sonner 1.7.1 - Toast notification library
|
|
- Radix UI Toast 1.2.4 - Low-level toast primitive (wrapped by use-toast)
|
|
|
|
**Navigation & Theming:**
|
|
- next-themes 0.4.4 - Dark/light mode switching
|
|
- lucide-react 0.454.0 - Icon library (240+ icons)
|
|
|
|
**HTTP Client:**
|
|
- Axios 1.9.0 - Promise-based HTTP client
|
|
- Configured with request/response interceptors in `lib/api/client.ts`
|
|
- Automatic token injection via Authorization header
|
|
- 401 error handling (token expiry redirect to /login)
|
|
|
|
**Utilities:**
|
|
- js-cookie 3.0.5 - Cookie management (auth token persistence)
|
|
- date-fns 4.1.0 - Date utility library
|
|
- class-variance-authority 0.7.1 - Component variant utilities
|
|
- clsx 2.1.1 - Conditional className merging
|
|
- tailwind-merge 2.5.5 - Tailwind class conflict resolution
|
|
- cmdk 1.0.4 - Command palette component
|
|
- embla-carousel-react 8.5.1 - Carousel component
|
|
- react-day-picker 8.10.1 - Calendar/date picker
|
|
- input-otp 1.4.1 - OTP input component
|
|
- react-resizable-panels 2.1.7 - Resizable panel layout
|
|
- vaul 0.9.6 - Drawer component
|
|
|
|
## Testing & Development
|
|
|
|
**Type Checking:**
|
|
- TypeScript 5 (strict mode enabled)
|
|
- Type checking via `npm run lint`
|
|
|
|
**Linting:**
|
|
- Next.js ESLint (build-time linting)
|
|
- Config: ignored during builds (`eslint.ignoreDuringBuilds: true`)
|
|
|
|
**Development Server:**
|
|
- Next.js dev server: `npm run dev` (default port 3000)
|
|
|
|
## Configuration
|
|
|
|
**Environment:**
|
|
- Location: `.env.local` (local overrides), `.env.development`, `.env.production`, `.env.example`
|
|
- Example file: `c:\Users\admin\Desktop\Lila-Server\qy-lty-admin\.env.example`
|
|
- Key env vars:
|
|
- `NEXT_PUBLIC_API_BASE_URL` - Backend API base URL (e.g., `http://localhost:8000/api`)
|
|
- `NODE_ENV` - Set to `production` in Docker runtime
|
|
|
|
**TypeScript:**
|
|
- Config: `tsconfig.json`
|
|
- Strict mode: enabled
|
|
- Path aliases: `@/*` maps to project root
|
|
|
|
**Next.js:**
|
|
- Config: `next.config.mjs`
|
|
- Output mode: `standalone` (self-contained app)
|
|
- Images: unoptimized (external image optimization)
|
|
- Build optimization: parallel webpack, server build traces, server compilation
|
|
|
|
## Platform Requirements
|
|
|
|
**Development:**
|
|
- Node.js 22+ (or compatible version)
|
|
- Package manager: yarn, npm, or pnpm
|
|
- Environment variables: `.env.local` with `NEXT_PUBLIC_API_BASE_URL`
|
|
|
|
**Production:**
|
|
- Docker runtime: Node.js 22.10.0 Alpine
|
|
- Memory: Typical SPA requirements (~500MB minimum)
|
|
- Port: 3000 (exposed in Dockerfile)
|
|
- Build artifacts: `.next/standalone`, `public/`
|
|
|
|
## Build Process
|
|
|
|
**Development Build:**
|
|
```bash
|
|
npm install # Install dependencies
|
|
npm run dev # Start dev server (hot reload)
|
|
```
|
|
|
|
**Production Build:**
|
|
```bash
|
|
npm install # Install all dependencies
|
|
npm run build # Next.js standalone build → .next/ directory
|
|
npm run start # Start production server (requires .next/ + public/)
|
|
```
|
|
|
|
**Docker Build (CI/CD):**
|
|
- Multi-stage build (builder + runner)
|
|
- Builder stage: installs full dependencies, runs `npm run build`
|
|
- Runner stage: installs production-only dependencies, copies .next/ and public/
|
|
- Yarn mirror: Taobao registry (`registry.npmmirror.com`)
|
|
- Final CMD: `yarn start` (port 3000)
|
|
|
|
---
|
|
|
|
*Stack analysis: 2026-05-07*
|