- 补充 React 19、lodash-es、SQLite/cuid2 技术细节 - 运行 prettier 格式化受影响文件 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.0 KiB
2.0 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
Seclusion 是一个基于 Next.js + NestJS 的 Monorepo 项目模板,使用 pnpm workspace + Turborepo 管理。
Commands
# 开发(同时启动前后端)
pnpm dev
# 构建
pnpm build
# 代码检查
pnpm lint
pnpm format # 格式化
pnpm format:check # 检查格式
# 测试
pnpm test
cd apps/api && pnpm test:watch # 单个测试文件监听
cd apps/api && pnpm test:cov # 测试覆盖率报告
# 数据库
pnpm db:generate # 生成 Prisma Client
pnpm db:push # 推送 schema 到数据库
pnpm db:migrate # 运行迁移
cd apps/api && pnpm db:studio # 打开 Prisma Studio
Architecture
Monorepo 结构
- apps/web - Next.js 16 前端 (端口 3000),使用 React 19
- apps/api - NestJS 10 后端 (端口 4000,API 文档: /api/docs)
- packages/shared - 共享类型定义和工具函数(使用 lodash-es)
- packages/eslint-config - 共享 ESLint 9 flat config 配置
- packages/typescript-config - 共享 TypeScript 配置
后端模块 (apps/api)
NestJS 采用模块化架构:
- PrismaModule - 全局数据库服务,其他模块通过依赖注入使用
- AuthModule - JWT 认证(注册、登录、token 验证)
- UserModule - 用户 CRUD
认证流程:使用 @Public() 装饰器标记公开接口,其他接口需要 JWT Bearer Token。使用 @CurrentUser() 装饰器获取当前登录用户信息。
共享包使用
import type { User, ApiResponse } from '@seclusion/shared';
import { formatDate, generateId } from '@seclusion/shared';
注意: packages/shared 中的工具函数应优先使用 lodash-es 实现。
Key Files
apps/api/prisma/schema.prisma- 数据库模型定义(使用 SQLite,ID 使用 cuid2)apps/api/.env- 后端环境变量 (DATABASE_URL, JWT_SECRET)apps/web/.env.local- 前端环境变量 (NEXT_PUBLIC_API_URL)turbo.json- Turborepo 任务依赖配置