duoqi-admin/CLAUDE.md
Wang Zhuoxuan 23e0438f2c 更新 CLAUDE.md:反映 Phase 1a 完成状态,补充库版本注意事项
- 更新项目状态为 Phase 1a 完成
- 补充实际目录结构(含 styles/globals.css)
- 新增 Key Patterns:路由配置、API 客户端细节
- 新增 Gotchas:shadcn/ui CLI 路径、ky v2 API、TS6、Tailwind v4
- 移除过时的"Pre-implementation"描述
2026-04-07 10:53:28 +08:00

4.4 KiB
Raw Blame History

CLAUDE.md — duoqi-admin

多奇管理后台,基于 Vite + React + TypeScript + shadcn/ui + Tailwind CSS 调用 duoqi-api 的 admin 端点CSR 纯前端应用

Current Status

Phase 1a complete. Project scaffold built. Phase 1b (Question CRUD) is next.

Development follows the phased roadmap in dev-spec.md §九.

Quick Start

bun install
bun run dev          # Vite dev server, default port 5173
bun run build        # Production build → dist/

Environment

.env is already configured. To change the API URL, edit .env:

VITE_API_BASE_URL=http://localhost:3000   # duoqi-api address

Architecture

src/
├── main.tsx              # Entry point
├── App.tsx               # Root (router + layout)
├── styles/globals.css    # Tailwind v4 + shadcn/ui CSS variables
├── routes/               # Pages (login, dashboard, questions/*, categories/*, ...)
├── components/
│   ├── ui/               # shadcn/ui primitives
│   ├── layout/           # Sidebar, Header, AdminLayout
│   ├── charts/           # StatsCard, chart wrappers
│   └── data-table/       # (Phase 1b) DataTable
│   └── question-form/    # (Phase 1b) Question editing form
├── lib/
│   ├── api-client.ts     # HTTP client for /admin/* endpoints
│   ├── auth.ts           # Admin JWT token management
│   ├── utils.ts          # Utility functions
│   └── constants.ts      # Status enums, difficulty levels
├── hooks/                # useAuth
├── stores/               # Zustand stores (auth-store)
└── types/                # question, user, category, api types

Key Patterns

  • Routing: React Router v7 library mode (createBrowserRouter + RouterProvider). Routes defined in App.tsx. Root layout (routes/__root.tsx) handles auth guard — redirects to /login when not authenticated.
  • Development order: Follow dev-spec.md §九 (Phase roadmap).
  • Auth flow: Login page → POST /admin/auth/login with token → receive admin JWT → store in auth-store → attach as Authorization: Bearer <jwt> on all subsequent requests
  • API client: All admin API calls go through lib/api-client.ts (ky v2). Uses baseUrl + prefix: "/admin". Auto-attaches auth header. 401 responses trigger logout + redirect to /login.
  • Data tables: TanStack Table v8 headless + shadcn/ui styled components in components/data-table/
  • Forms: React Hook Form + Zod validation for all admin forms
  • State: Zustand for client state only; server state fetched via API client

Gotchas

  • shadcn/ui CLI: After bunx shadcn@latest add ..., verify files land in src/components/ui/ — sometimes they end up in @/components/ui/ at project root instead.
  • ky v2: Uses baseUrl + prefix (not prefixUrl). Hooks receive a single state object ({ request }, { response }) instead of positional arguments.
  • TypeScript 6: Requires "ignoreDeprecations": "6.0" in tsconfig when using baseUrl + paths for @/* aliases.
  • Tailwind v4: Uses @import "tailwindcss" and @theme inline block (not @tailwind base/components/utilities).

Design Docs

Doc Path Notes
Dev spec (primary) ./dev-spec.md Full engineering spec — read before development
Product overview ../docs/product-overview.md Product scope, phases
Tech stack ../docs/tech-stack.md Full-stack decisions
duoqi-api spec ../docs/specs/duoqi-api/dev-spec.md Admin API endpoint definitions
Question format ../docs/specs/shared/question-format-design.md Question data model (core for CRUD)
Gamification ../docs/specs/shared/gamification-monetization-design.md Skill tree, subscription tiers
Analytics ../docs/specs/shared/analytics-feedback-design.md Stats metrics, feedback data

技术栈速查

  • 框架Vite + React 18
  • 语言TypeScript
  • UIshadcn/ui + Tailwind CSS
  • 数据表格TanStack Table v8
  • 表单React Hook Form + Zod
  • 图表Recharts
  • HTTPky v2
  • 状态Zustand
  • 路由React Router v7
  • 包管理bun