一个以元数据(JSON 模型)为核心的 CRUD 自动化引擎示例:只需定义一次 JSON 模型,即可自动生成 Drizzle Schema、Valibot 校验器、Repository/Service/Route,并完成约定式路由注册。
基于 Hono + Drizzle ORM + Valibot,轻量、类型安全,符合现代 TypeScript 全栈最佳实践。
适合的使用场景包括:
- SaaS 或 BaaS 轻后端
- 个人项目 / 独立开发者
- Serverless API 服务
- 快速验证型 MVP
- 内部工具平台
- 🚀 Hono - 轻量级 Web 框架
- 🗄️ Drizzle ORM - 类型安全的 PostgreSQL ORM
- ✅ Valibot - 轻量级请求校验
- 🎯 JSON 模型驱动开发 - 通过 JSON 配置自动生成完整模块代码
- 🤖 智能默认值 - 自动应用最佳实践配置
- ✨ 约定式开发 - 自动扫描模型文件,自动注册路由,零配置开发
- 🔧 配置式加载 - 灵活选择加载特定模型
# 安装依赖
pnpm install
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置 DATABASE_URL# 一键启动数据库并初始化
pnpm run setup
# 或者分步执行
pnpm run docker:up # 启动 PostgreSQL
pnpm run db:push # 创建表结构# 确保 PostgreSQL 正在运行
# 更新 .env 中的 DATABASE_URL
# 推送 schema 到数据库
pnpm run db:push
# 打开 Drizzle Studio (可视化数据库管理)
pnpm run db:studio详细的 Docker 使用说明请查看 docs/DOCKER.md
# 开发模式
pnpm run dev
# 生产模式
pnpm start服务将运行在 http://localhost:3000
使用 JSON 模型驱动开发,只需创建一个 JSON 文件即可生成完整模块!
在 src/models/ 下创建 product.model.json:
{
"name": "Product",
"description": "商品管理",
"fields": [
{
"name": "id",
"type": "integer",
"primaryKey": true,
"autoIncrement": true
},
{
"name": "name",
"type": "string",
"required": true,
"validation": {
"min": 1,
"max": 200
}
},
{
"name": "price",
"type": "decimal",
"precision": 10,
"scale": 2,
"required": true
}
]
}pnpm run generate:model productpnpm run db:push就这么简单! 自动生成:
- ✅ Drizzle Schema (src/db/schema/product.ts)
- ✅ Valibot Validator (src/validators/product.validator.ts)
- ✅ Repository (src/modules/product/product.repository.ts)
- ✅ Service (src/modules/product/product.service.ts)
- ✅ Route (src/modules/product/product.route.ts)
- ✅ 自动注册到 schema/index.ts 和 router.ts
详细文档:
- 📖 JSON 模型快速开始
- 📖 完整 JSON 模型指南
- 📖 字段配置指南
GET /users- 获取所有用户GET /users/:id- 获取单个用户POST /users- 创建用户{ "username": "zhangsan", "email": "zhangsan@example.com" }PUT /users/:id- 更新用户DELETE /users/:id- 删除用户
📌 注意:API 路径遵循 RESTful 规范,使用复数名词(如
/users而非/user)
web-lite/
├── src/
│ ├── app.ts # Hono App 主入口
│ ├── index.ts # 服务器启动
│ ├── router.ts # 路由自动注册
│ ├── db/
│ │ ├── client.ts # Drizzle 客户端
│ │ └── schema/ # 数据库 Schema
│ │ ├── index.ts # Schema 自动注册
│ │ ├── user.ts
│ │ ├── product.ts
│ │ └── order.ts
│ ├── models/ # JSON 模型定义
│ │ ├── types.ts # TypeScript 类型
│ │ ├── schema.json # JSON Schema 验证
│ │ ├── validator.ts # 模型验证器
│ │ ├── loader.ts # 模型加载器
│ │ ├── index.ts # 模型注册中心
│ │ ├── user.model.json # 用户模型
│ │ ├── product.model.json # 商品模型
│ │ └── order.model.json # 订单模型
│ ├── modules/ # 业务模块
│ │ ├── user/
│ │ │ ├── index.ts
│ │ │ ├── user.repository.ts
│ │ │ ├── user.service.ts
│ │ │ └── user.route.ts
│ │ ├── product/
│ │ └── order/
│ └── validators/ # Valibot 校验器
│ ├── user.validator.ts
│ ├── product.validator.ts
│ └── order.validator.ts
├── scripts/
│ ├── model-generator.ts # 模型代码生成器
│ ├── generate-from-model.ts # CLI 工具
│ └── route-register.ts # 路由自动注册
├── docs/ # 完整文档
│ ├── JSON_MODEL.md
│ ├── JSON_MODEL_QUICKSTART.md
│ └── JSON_MODEL_FIELD_CONFIG.md
├── package.json
└── tsconfig.json
- Runtime: Node.js
- Language: TypeScript
- Web Framework: Hono
- ORM: Drizzle ORM
- Database: PostgreSQL
- Validation: Valibot
- Schema Validation: Ajv + JSON Schema
- Code Generator: 自研模型驱动生成器
-
创建 JSON 模型定义
# 在 src/models/ 中创建 JSON 模型 # 例如: article.model.json
-
生成完整模块
pnpm run generate:model article # 自动生成 Schema、Validator、Repository、Service、Route # 自动注册到 schema/index.ts 和 router.ts
-
更新数据库
pnpm run db:push
详细文档: JSON 模型定义指南
- 类型安全: 从数据库到 API 的端到端类型安全
- 模型驱动: 定义一次 JSON 模型,自动生成全部代码
- 自动化: 自动应用默认值、自动注册路由、自动验证
- 模块化: 清晰的分层架构 (Repository → Service → Route)
- 高效开发: 5 分钟完成一个完整 CRUD 模块
- 轻量高效: Hono + Valibot 性能优异
- 智能验证: 支持 regex、email、url、enum 等多种验证
详细文档请查看 docs 目录:
或访问 文档中心 查看完整索引。
MIT