# fastify-code **Repository Path**: alexfengfeng/fastify-code ## Basic Information - **Project Name**: fastify-code - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-26 - **Last Updated**: 2026-01-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Fastify Admin System 基于 Fastify 5.x + Vue 3 + Shadcn UI 的快速开发后台系统 ## 特性 - 🚀 **快速开发**: CLI 代码生成器,一键生成完整 CRUD - 🔐 **JWT 认证**: 完整的登录认证和权限管理 - 🎨 **Vue 3 + Shadcn UI**: 现代化前端组件库 - 📦 **Monorepo**: pnpm workspace 统一管理 - 🛠️ **TypeScript**: 全栈类型安全 - 📊 **RBAC 权限**: 灵活的角色权限系统 ## 技术栈 ### 后端 - Fastify 5.x - Web 框架 - MySQL 5 - 数据库 - @fastify/jwt - JWT 认证 - @fastify/swagger - API 文档 - JSON Schema - 数据验证 ### 前端 - Vue 3 - 前端框架 - Vite - 构建工具 - Pinia - 状态管理 - Shadcn UI - UI 组件库 - Vue Router - 路由管理 ### 代码生成器 - Inquirer - 交互式 CLI - 模板引擎 - 代码生成 - fs-extra - 文件操作 ## 快速开始 ### 一键初始化(推荐) ```bash # 全自动初始化(配置环境变量 + 安装依赖 + 初始化数据库) pnpm init ``` 执行后会提示: - 输入 MySQL 密码 - 自动生成 JWT 密钥 - 自动安装依赖 - 自动初始化数据库 ### 手动初始化 #### 1. 安装依赖 ```bash pnpm install ``` #### 2. 配置环境变量 ```bash cp .env.example .env ``` 编辑项目根目录的 `.env` 文件,配置数据库密码和 JWT 密钥。 生成强随机 JWT 密钥: ```bash node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" ``` #### 3. 初始化数据库 ```bash pnpm db:init ``` #### 4. 启动开发服务器 ```bash # 同时启动前后端 pnpm dev # 或分别启动 pnpm dev:backend # http://localhost:3000 pnpm dev:frontend # http://localhost:5173 ``` ### 访问系统 - 前端地址: http://localhost:5173 - API 文档: http://localhost:3000/docs - 默认账号: admin / admin123 ## 代码生成器使用 ```bash pnpm generate ``` 按提示输入模块名称(如 `product`)、字段信息,自动生成完整的 CRUD 代码。 ### 生成内容 - **后端**: Entity, Repository, Service, Controller, Routes, Schema - **前端**: Vue 3 列表页(支持分页、搜索、删除)、编辑弹窗(支持新增、修改、表单验证) - **数据库**: 自动生成 SQL 迁移文件 ### 生成后步骤 1. **检查文件**: 确认 `packages/backend/src/modules` 和 `packages/frontend/src/views` 下生成的文件。 2. **执行迁移**: 运行 `pnpm db:migrate` 创建数据库表。 3. **注册路由**: 在 `packages/backend/src/app.ts` 中注册新模块的路由: ```typescript import { productRoutes } from './modules/product/product.routes.js' // ... fastify.register(productRoutes, { prefix: '/api/products' }) ``` 4. **前端路由**: 在 `packages/frontend/src/router/index.ts` 中添加新页面路由(如果需要菜单显示)。 5. **重启服务**: 重启开发服务器以生效。 ## 项目结构 ``` fastify-code/ ├── .env # 环境变量配置(不提交到git) ├── .env.example # 环境变量模板 ├── CLAUDE.md # Claude Code 工作指南 ├── INIT.md # 详细初始化指南 ├── scripts/ │ └── init.mjs # 自动初始化脚本 ├── packages/ │ ├── backend/ # Fastify 后端 │ ├── frontend/ # Vue 3 前端 │ └── cli-generator/ # 代码生成器 ├── pnpm-workspace.yaml └── package.json ``` ## 环境变量说明 | 变量 | 说明 | 默认值 | |------|------|--------| | `NODE_ENV` | 运行环境 | development | | `BACKEND_PORT` | 后端端口 | 3000 | | `FRONTEND_PORT` | 前端端口 | 5173 | | `DB_HOST` | 数据库地址 | localhost | | `DB_PORT` | 数据库端口 | 3306 | | `DB_USER` | 数据库用户 | root | | `DB_PASSWORD` | 数据库密码 | - | | `DB_NAME` | 数据库名称 | fastify_admin | | `JWT_SECRET` | JWT密钥 | - | | `JWT_ACCESS_EXPIRY` | 访问令牌有效期 | 15m | | `JWT_REFRESH_EXPIRY` | 刷新令牌有效期 | 7d | | `VITE_API_URL` | 前端API地址 | http://localhost:3000/api | ## 开发指南 ### 添加新模块 使用代码生成器快速创建新模块: ```bash pnpm generate ``` ### 数据库迁移 ```bash pnpm db:migrate ``` ### 代码规范 ```bash pnpm lint ``` ## License MIT