.roorules 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. # 全栈应用开发规范
  2. ## 项目结构
  3. ```
  4. src/
  5. ├── client/ # 前端代码 (React + Vite)
  6. ├── server/ # 后端代码 (Hono + TypeORM)
  7. │ ├── api/ # API路由
  8. │ ├── migrations/ # 数据库迁移脚本
  9. │ ├── modules/ # 业务模块
  10. │ └── middleware/ # 中间件
  11. ```
  12. ## 技术栈
  13. ### 前端
  14. - React 18
  15. - TypeScript (严格模式)
  16. - Vite 构建工具
  17. ### 后端
  18. - Hono 框架
  19. - TypeORM (MySQL)
  20. - Redis (缓存/会话管理)
  21. ## 开发规范
  22. 1. **TypeScript严格模式**
  23. - 启用所有严格类型检查选项
  24. - 避免使用`any`类型
  25. 2. **模块化组织**
  26. - 按功能划分模块
  27. - 每个模块包含:
  28. - 实体定义
  29. - 服务层
  30. - 路由控制器
  31. 3. **接口定义**
  32. - 清晰的DTO(Data Transfer Object)定义
  33. - 统一的API响应格式
  34. - 完善的Swagger文档
  35. 4. **数据库规范**
  36. - 使用迁移脚本管理表结构变更
  37. - 实体类与数据库表严格映射
  38. 5. **Hono OpenAPI规范**
  39. - 使用`@hono/zod-openapi`的`createRoute`创建路由
  40. - 每个路由必须包含:
  41. - 请求方法(method)和路径(path)
  42. - 请求体验证(使用Zod模式):
  43. ```typescript
  44. request: {
  45. body: {
  46. content: {
  47. 'application/json': {
  48. schema: YourZodSchema
  49. }
  50. }
  51. }
  52. }
  53. ```
  54. - 响应定义(必须包含200/400/500等状态码):
  55. ```typescript
  56. responses: {
  57. 200: {
  58. description: '成功响应描述',
  59. content: {
  60. 'application/json': {
  61. schema: SuccessSchema
  62. }
  63. }
  64. },
  65. 400: {
  66. description: '客户端错误',
  67. content: {
  68. 'application/json': {
  69. schema: ErrorSchema
  70. }
  71. }
  72. }
  73. }
  74. ```
  75. - 错误响应必须使用统一格式:
  76. ```typescript
  77. {
  78. code: number, // HTTP状态码
  79. message: string // 错误描述
  80. }
  81. ```
  82. - 实际响应必须与OpenAPI定义完全一致
  83. - 使用中间件统一处理错误格式
  84. - 示例完整路由定义:
  85. ```typescript
  86. const route = createRoute({
  87. method: 'post',
  88. path: '/example',
  89. 100| request: {
  90. 101| body: {
  91. 102| content: {
  92. 103| 'application/json': {
  93. 104| schema: ExampleSchema
  94. 105| }
  95. 106| }
  96. 107| }
  97. 108| },
  98. 109| responses: {
  99. 110| 200: { /*...*/ },
  100. 111| 400: { /*...*/ },
  101. 112| 500: { /*...*/ }
  102. 113| }
  103. 114| });
  104. 115| ```