Files
seclusion/CLAUDE.md
charilezhou b5624a664d docs: 更新 CLAUDE.md 并格式化代码
- 补充 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>
2025-12-28 16:36:19 +08:00

2.0 KiB
Raw Blame History

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 后端 (端口 4000API 文档: /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 - 数据库模型定义(使用 SQLiteID 使用 cuid2
  • apps/api/.env - 后端环境变量 (DATABASE_URL, JWT_SECRET)
  • apps/web/.env.local - 前端环境变量 (NEXT_PUBLIC_API_URL)
  • turbo.json - Turborepo 任务依赖配置