@bloomneo/appkit 1.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +902 -0
  3. package/bin/appkit.js +71 -0
  4. package/bin/commands/generate.js +1050 -0
  5. package/bin/templates/backend/README.md.template +39 -0
  6. package/bin/templates/backend/api.http.template +0 -0
  7. package/bin/templates/backend/docs/APPKIT_CLI.md +507 -0
  8. package/bin/templates/backend/docs/APPKIT_COMMENTS_GUIDELINES.md +61 -0
  9. package/bin/templates/backend/docs/APPKIT_LLM_GUIDE.md +2539 -0
  10. package/bin/templates/backend/package.json.template +34 -0
  11. package/bin/templates/backend/src/api/features/welcome/welcome.http.template +29 -0
  12. package/bin/templates/backend/src/api/features/welcome/welcome.route.ts.template +36 -0
  13. package/bin/templates/backend/src/api/features/welcome/welcome.service.ts.template +88 -0
  14. package/bin/templates/backend/src/api/features/welcome/welcome.types.ts.template +18 -0
  15. package/bin/templates/backend/src/api/lib/api-router.ts.template +84 -0
  16. package/bin/templates/backend/src/api/server.ts.template +188 -0
  17. package/bin/templates/backend/tsconfig.api.json.template +24 -0
  18. package/bin/templates/backend/tsconfig.json.template +40 -0
  19. package/bin/templates/feature/feature.http.template +63 -0
  20. package/bin/templates/feature/feature.route.ts.template +36 -0
  21. package/bin/templates/feature/feature.service.ts.template +81 -0
  22. package/bin/templates/feature/feature.types.ts.template +23 -0
  23. package/bin/templates/feature-db/feature.http.template +63 -0
  24. package/bin/templates/feature-db/feature.model.ts.template +74 -0
  25. package/bin/templates/feature-db/feature.route.ts.template +58 -0
  26. package/bin/templates/feature-db/feature.service.ts.template +231 -0
  27. package/bin/templates/feature-db/feature.types.ts.template +25 -0
  28. package/bin/templates/feature-db/schema-addition.prisma.template +9 -0
  29. package/bin/templates/feature-db/seeding/README.md.template +57 -0
  30. package/bin/templates/feature-db/seeding/feature.seed.js.template +67 -0
  31. package/bin/templates/feature-user/schema-addition.prisma.template +19 -0
  32. package/bin/templates/feature-user/user.http.template +157 -0
  33. package/bin/templates/feature-user/user.model.ts.template +244 -0
  34. package/bin/templates/feature-user/user.route.ts.template +379 -0
  35. package/bin/templates/feature-user/user.seed.js.template +182 -0
  36. package/bin/templates/feature-user/user.service.ts.template +426 -0
  37. package/bin/templates/feature-user/user.types.ts.template +127 -0
  38. package/dist/auth/auth.d.ts +182 -0
  39. package/dist/auth/auth.d.ts.map +1 -0
  40. package/dist/auth/auth.js +477 -0
  41. package/dist/auth/auth.js.map +1 -0
  42. package/dist/auth/defaults.d.ts +104 -0
  43. package/dist/auth/defaults.d.ts.map +1 -0
  44. package/dist/auth/defaults.js +374 -0
  45. package/dist/auth/defaults.js.map +1 -0
  46. package/dist/auth/index.d.ts +70 -0
  47. package/dist/auth/index.d.ts.map +1 -0
  48. package/dist/auth/index.js +94 -0
  49. package/dist/auth/index.js.map +1 -0
  50. package/dist/cache/cache.d.ts +118 -0
  51. package/dist/cache/cache.d.ts.map +1 -0
  52. package/dist/cache/cache.js +249 -0
  53. package/dist/cache/cache.js.map +1 -0
  54. package/dist/cache/defaults.d.ts +63 -0
  55. package/dist/cache/defaults.d.ts.map +1 -0
  56. package/dist/cache/defaults.js +193 -0
  57. package/dist/cache/defaults.js.map +1 -0
  58. package/dist/cache/index.d.ts +101 -0
  59. package/dist/cache/index.d.ts.map +1 -0
  60. package/dist/cache/index.js +203 -0
  61. package/dist/cache/index.js.map +1 -0
  62. package/dist/cache/strategies/memory.d.ts +138 -0
  63. package/dist/cache/strategies/memory.d.ts.map +1 -0
  64. package/dist/cache/strategies/memory.js +348 -0
  65. package/dist/cache/strategies/memory.js.map +1 -0
  66. package/dist/cache/strategies/redis.d.ts +105 -0
  67. package/dist/cache/strategies/redis.d.ts.map +1 -0
  68. package/dist/cache/strategies/redis.js +318 -0
  69. package/dist/cache/strategies/redis.js.map +1 -0
  70. package/dist/config/config.d.ts +62 -0
  71. package/dist/config/config.d.ts.map +1 -0
  72. package/dist/config/config.js +107 -0
  73. package/dist/config/config.js.map +1 -0
  74. package/dist/config/defaults.d.ts +44 -0
  75. package/dist/config/defaults.d.ts.map +1 -0
  76. package/dist/config/defaults.js +217 -0
  77. package/dist/config/defaults.js.map +1 -0
  78. package/dist/config/index.d.ts +105 -0
  79. package/dist/config/index.d.ts.map +1 -0
  80. package/dist/config/index.js +163 -0
  81. package/dist/config/index.js.map +1 -0
  82. package/dist/database/adapters/mongoose.d.ts +106 -0
  83. package/dist/database/adapters/mongoose.d.ts.map +1 -0
  84. package/dist/database/adapters/mongoose.js +480 -0
  85. package/dist/database/adapters/mongoose.js.map +1 -0
  86. package/dist/database/adapters/prisma.d.ts +106 -0
  87. package/dist/database/adapters/prisma.d.ts.map +1 -0
  88. package/dist/database/adapters/prisma.js +494 -0
  89. package/dist/database/adapters/prisma.js.map +1 -0
  90. package/dist/database/defaults.d.ts +87 -0
  91. package/dist/database/defaults.d.ts.map +1 -0
  92. package/dist/database/defaults.js +271 -0
  93. package/dist/database/defaults.js.map +1 -0
  94. package/dist/database/index.d.ts +137 -0
  95. package/dist/database/index.d.ts.map +1 -0
  96. package/dist/database/index.js +490 -0
  97. package/dist/database/index.js.map +1 -0
  98. package/dist/email/defaults.d.ts +100 -0
  99. package/dist/email/defaults.d.ts.map +1 -0
  100. package/dist/email/defaults.js +400 -0
  101. package/dist/email/defaults.js.map +1 -0
  102. package/dist/email/email.d.ts +139 -0
  103. package/dist/email/email.d.ts.map +1 -0
  104. package/dist/email/email.js +316 -0
  105. package/dist/email/email.js.map +1 -0
  106. package/dist/email/index.d.ts +176 -0
  107. package/dist/email/index.d.ts.map +1 -0
  108. package/dist/email/index.js +251 -0
  109. package/dist/email/index.js.map +1 -0
  110. package/dist/email/strategies/console.d.ts +90 -0
  111. package/dist/email/strategies/console.d.ts.map +1 -0
  112. package/dist/email/strategies/console.js +268 -0
  113. package/dist/email/strategies/console.js.map +1 -0
  114. package/dist/email/strategies/resend.d.ts +84 -0
  115. package/dist/email/strategies/resend.d.ts.map +1 -0
  116. package/dist/email/strategies/resend.js +266 -0
  117. package/dist/email/strategies/resend.js.map +1 -0
  118. package/dist/email/strategies/smtp.d.ts +77 -0
  119. package/dist/email/strategies/smtp.d.ts.map +1 -0
  120. package/dist/email/strategies/smtp.js +286 -0
  121. package/dist/email/strategies/smtp.js.map +1 -0
  122. package/dist/error/defaults.d.ts +40 -0
  123. package/dist/error/defaults.d.ts.map +1 -0
  124. package/dist/error/defaults.js +75 -0
  125. package/dist/error/defaults.js.map +1 -0
  126. package/dist/error/error.d.ts +140 -0
  127. package/dist/error/error.d.ts.map +1 -0
  128. package/dist/error/error.js +200 -0
  129. package/dist/error/error.js.map +1 -0
  130. package/dist/error/index.d.ts +145 -0
  131. package/dist/error/index.d.ts.map +1 -0
  132. package/dist/error/index.js +145 -0
  133. package/dist/error/index.js.map +1 -0
  134. package/dist/event/defaults.d.ts +111 -0
  135. package/dist/event/defaults.d.ts.map +1 -0
  136. package/dist/event/defaults.js +378 -0
  137. package/dist/event/defaults.js.map +1 -0
  138. package/dist/event/event.d.ts +171 -0
  139. package/dist/event/event.d.ts.map +1 -0
  140. package/dist/event/event.js +391 -0
  141. package/dist/event/event.js.map +1 -0
  142. package/dist/event/index.d.ts +173 -0
  143. package/dist/event/index.d.ts.map +1 -0
  144. package/dist/event/index.js +302 -0
  145. package/dist/event/index.js.map +1 -0
  146. package/dist/event/strategies/memory.d.ts +122 -0
  147. package/dist/event/strategies/memory.d.ts.map +1 -0
  148. package/dist/event/strategies/memory.js +331 -0
  149. package/dist/event/strategies/memory.js.map +1 -0
  150. package/dist/event/strategies/redis.d.ts +115 -0
  151. package/dist/event/strategies/redis.d.ts.map +1 -0
  152. package/dist/event/strategies/redis.js +434 -0
  153. package/dist/event/strategies/redis.js.map +1 -0
  154. package/dist/index.d.ts +58 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js +72 -0
  157. package/dist/index.js.map +1 -0
  158. package/dist/logger/defaults.d.ts +67 -0
  159. package/dist/logger/defaults.d.ts.map +1 -0
  160. package/dist/logger/defaults.js +213 -0
  161. package/dist/logger/defaults.js.map +1 -0
  162. package/dist/logger/index.d.ts +84 -0
  163. package/dist/logger/index.d.ts.map +1 -0
  164. package/dist/logger/index.js +101 -0
  165. package/dist/logger/index.js.map +1 -0
  166. package/dist/logger/logger.d.ts +165 -0
  167. package/dist/logger/logger.d.ts.map +1 -0
  168. package/dist/logger/logger.js +843 -0
  169. package/dist/logger/logger.js.map +1 -0
  170. package/dist/logger/transports/console.d.ts +102 -0
  171. package/dist/logger/transports/console.d.ts.map +1 -0
  172. package/dist/logger/transports/console.js +276 -0
  173. package/dist/logger/transports/console.js.map +1 -0
  174. package/dist/logger/transports/database.d.ts +153 -0
  175. package/dist/logger/transports/database.d.ts.map +1 -0
  176. package/dist/logger/transports/database.js +539 -0
  177. package/dist/logger/transports/database.js.map +1 -0
  178. package/dist/logger/transports/file.d.ts +146 -0
  179. package/dist/logger/transports/file.d.ts.map +1 -0
  180. package/dist/logger/transports/file.js +464 -0
  181. package/dist/logger/transports/file.js.map +1 -0
  182. package/dist/logger/transports/http.d.ts +128 -0
  183. package/dist/logger/transports/http.d.ts.map +1 -0
  184. package/dist/logger/transports/http.js +401 -0
  185. package/dist/logger/transports/http.js.map +1 -0
  186. package/dist/logger/transports/webhook.d.ts +152 -0
  187. package/dist/logger/transports/webhook.d.ts.map +1 -0
  188. package/dist/logger/transports/webhook.js +485 -0
  189. package/dist/logger/transports/webhook.js.map +1 -0
  190. package/dist/queue/defaults.d.ts +66 -0
  191. package/dist/queue/defaults.d.ts.map +1 -0
  192. package/dist/queue/defaults.js +205 -0
  193. package/dist/queue/defaults.js.map +1 -0
  194. package/dist/queue/index.d.ts +124 -0
  195. package/dist/queue/index.d.ts.map +1 -0
  196. package/dist/queue/index.js +116 -0
  197. package/dist/queue/index.js.map +1 -0
  198. package/dist/queue/queue.d.ts +156 -0
  199. package/dist/queue/queue.d.ts.map +1 -0
  200. package/dist/queue/queue.js +387 -0
  201. package/dist/queue/queue.js.map +1 -0
  202. package/dist/queue/transports/database.d.ts +165 -0
  203. package/dist/queue/transports/database.d.ts.map +1 -0
  204. package/dist/queue/transports/database.js +595 -0
  205. package/dist/queue/transports/database.js.map +1 -0
  206. package/dist/queue/transports/memory.d.ts +143 -0
  207. package/dist/queue/transports/memory.d.ts.map +1 -0
  208. package/dist/queue/transports/memory.js +415 -0
  209. package/dist/queue/transports/memory.js.map +1 -0
  210. package/dist/queue/transports/redis.d.ts +203 -0
  211. package/dist/queue/transports/redis.d.ts.map +1 -0
  212. package/dist/queue/transports/redis.js +744 -0
  213. package/dist/queue/transports/redis.js.map +1 -0
  214. package/dist/security/defaults.d.ts +64 -0
  215. package/dist/security/defaults.d.ts.map +1 -0
  216. package/dist/security/defaults.js +159 -0
  217. package/dist/security/defaults.js.map +1 -0
  218. package/dist/security/index.d.ts +110 -0
  219. package/dist/security/index.d.ts.map +1 -0
  220. package/dist/security/index.js +160 -0
  221. package/dist/security/index.js.map +1 -0
  222. package/dist/security/security.d.ts +138 -0
  223. package/dist/security/security.d.ts.map +1 -0
  224. package/dist/security/security.js +419 -0
  225. package/dist/security/security.js.map +1 -0
  226. package/dist/storage/defaults.d.ts +79 -0
  227. package/dist/storage/defaults.d.ts.map +1 -0
  228. package/dist/storage/defaults.js +358 -0
  229. package/dist/storage/defaults.js.map +1 -0
  230. package/dist/storage/index.d.ts +153 -0
  231. package/dist/storage/index.d.ts.map +1 -0
  232. package/dist/storage/index.js +242 -0
  233. package/dist/storage/index.js.map +1 -0
  234. package/dist/storage/storage.d.ts +151 -0
  235. package/dist/storage/storage.d.ts.map +1 -0
  236. package/dist/storage/storage.js +439 -0
  237. package/dist/storage/storage.js.map +1 -0
  238. package/dist/storage/strategies/local.d.ts +117 -0
  239. package/dist/storage/strategies/local.d.ts.map +1 -0
  240. package/dist/storage/strategies/local.js +368 -0
  241. package/dist/storage/strategies/local.js.map +1 -0
  242. package/dist/storage/strategies/r2.d.ts +130 -0
  243. package/dist/storage/strategies/r2.d.ts.map +1 -0
  244. package/dist/storage/strategies/r2.js +470 -0
  245. package/dist/storage/strategies/r2.js.map +1 -0
  246. package/dist/storage/strategies/s3.d.ts +121 -0
  247. package/dist/storage/strategies/s3.d.ts.map +1 -0
  248. package/dist/storage/strategies/s3.js +461 -0
  249. package/dist/storage/strategies/s3.js.map +1 -0
  250. package/dist/util/defaults.d.ts +77 -0
  251. package/dist/util/defaults.d.ts.map +1 -0
  252. package/dist/util/defaults.js +193 -0
  253. package/dist/util/defaults.js.map +1 -0
  254. package/dist/util/index.d.ts +97 -0
  255. package/dist/util/index.d.ts.map +1 -0
  256. package/dist/util/index.js +165 -0
  257. package/dist/util/index.js.map +1 -0
  258. package/dist/util/util.d.ts +145 -0
  259. package/dist/util/util.d.ts.map +1 -0
  260. package/dist/util/util.js +481 -0
  261. package/dist/util/util.js.map +1 -0
  262. package/package.json +234 -0
@@ -0,0 +1,39 @@
1
+ # {{projectName}}
2
+
3
+ TypeScript backend application built with AppKit.
4
+
5
+ ## Quick Start
6
+
7
+ ```bash
8
+ npm install
9
+ npm run dev:api
10
+ ```
11
+
12
+ Your API will be available at: http://localhost:3000/api
13
+
14
+ ## Scripts
15
+
16
+ - `npm run dev:api` - Development server with hot-reload
17
+ - `npm run build` - Build for production
18
+ - `npm run start:prod` - Start production server
19
+
20
+ ## Adding Features
21
+
22
+ ```bash
23
+ # Custom feature
24
+ npx appkit generate feature product
25
+
26
+ # User authentication
27
+ npx appkit generate feature user
28
+
29
+ # With database
30
+ npx appkit generate feature order --db
31
+ ```
32
+
33
+ ## Documentation
34
+
35
+ - [CLI Reference](docs/APPKIT_CLI.md)
36
+ - [LLM Guide](docs/APPKIT_LLM_GUIDE.md)
37
+ - [Code Standards](docs/APPKIT_COMMENTS_GUIDELINES.md)
38
+
39
+ Built with **AppKit** ⚡
File without changes
@@ -0,0 +1,507 @@
1
+ # AppKit CLI Documentation
2
+
3
+ ## Overview
4
+
5
+ The AppKit CLI is a powerful command-line interface for creating production-ready TypeScript backend applications with Feature-Based Component Architecture (FBCA). It provides auto-discovery routing, complete authentication systems, secure environment configuration, database integration, and follows modern development best practices.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install -g @bloomneo/appkit
11
+ ```
12
+
13
+ ## Quick Start
14
+
15
+ ```bash
16
+ # Create a new app
17
+ appkit generate app myproject
18
+ cd myproject
19
+
20
+ # Add authentication system
21
+ appkit generate feature user
22
+
23
+ # Add custom features
24
+ appkit generate feature product
25
+ appkit generate feature order
26
+
27
+ # Start development
28
+ npm run dev:api
29
+ ```
30
+
31
+ ## Commands Overview
32
+
33
+ | Command | Description | When to Use | Security Features |
34
+ |---------|-------------|-------------|-------------------|
35
+ | `generate app [name]` | Create complete backend app | Starting new project | Random secure keys, GitHub-safe |
36
+ | `generate feature <name>` | Add custom CRUD feature | Need basic API endpoints | Follows security patterns |
37
+ | `generate feature user` | Add authentication system | Need user management/auth | JWT, role-based access, 9-role hierarchy |
38
+
39
+ ## Commands Reference
40
+
41
+ ### 🚀 `appkit generate app [name]`
42
+
43
+ Creates a complete TypeScript backend application with modern architecture.
44
+
45
+ **Usage:**
46
+ ```bash
47
+ # Create in current directory
48
+ appkit generate app
49
+
50
+ # Create in new directory
51
+ appkit generate app myproject
52
+ ```
53
+
54
+ **What it creates:**
55
+ ```
56
+ myproject/
57
+ ├── package.json # Dependencies & scripts
58
+ ├── tsconfig.json # TypeScript configuration
59
+ ├── .env # Secure environment variables
60
+ ├── prisma/
61
+ │ └── schema.prisma # Database schema
62
+ └── src/api/
63
+ ├── server.ts # Main server
64
+ ├── lib/
65
+ │ └── api-router.ts # Auto-discovery router
66
+ └── features/
67
+ ├── welcome/ # Default welcome feature
68
+ ├── sample/ # Example CRUD feature
69
+ └── new/ # Example feature
70
+ ```
71
+
72
+ **✨ Features:**
73
+ - ✅ **Secure by default** - Random 44-char auth secrets, 26-char API keys
74
+ - ✅ **GitHub-safe** - No hardcoded credentials
75
+ - ✅ **TypeScript ready** - Full type safety with proper configuration
76
+ - ✅ **Auto-discovery** - Routes automatically discovered and mounted
77
+ - ✅ **Production-ready** - Environment separation, logging, error handling
78
+ - ✅ **Database ready** - Prisma integration with SQLite default
79
+
80
+ **Generated .env file:**
81
+ ```bash
82
+ DATABASE_URL="file:./dev.db"
83
+ VOILA_FRONTEND_KEY="voila_abc123..." # 26 characters
84
+ VOILA_AUTH_SECRET="auth_xyz789..." # 44 characters
85
+ DEFAULT_USER_PASSWORD="pwd9x7k4m2" # 10 alphanumeric
86
+ ```
87
+
88
+ ### 🔧 `appkit generate feature <name>`
89
+
90
+ Creates a custom feature with complete CRUD operations.
91
+
92
+ **Usage:**
93
+ ```bash
94
+ appkit generate feature product
95
+ appkit generate feature order
96
+ appkit generate feature blog
97
+ ```
98
+
99
+ **What it creates:**
100
+ ```
101
+ src/api/features/product/
102
+ ├── product.route.ts # Express routes with CRUD endpoints
103
+ ├── product.service.ts # Business logic with validation
104
+ ├── product.types.ts # TypeScript interfaces
105
+ ├── product.model.ts # Database model
106
+ └── product.http # HTTP test file
107
+ ```
108
+
109
+ **Generated endpoints:**
110
+ - `GET /api/product` - Get all records
111
+ - `POST /api/product` - Create new record
112
+ - `GET /api/product/:id` - Get record by ID
113
+ - `PUT /api/product/:id` - Update record
114
+ - `DELETE /api/product/:id` - Delete record
115
+
116
+ **When to use:**
117
+ - ✅ Need custom business logic
118
+ - ✅ Want specific data models
119
+ - ✅ Building domain-specific APIs
120
+ - ✅ Rapid prototyping
121
+
122
+ ### 🔐 `appkit generate feature user`
123
+
124
+ Creates a complete authentication and user management system.
125
+
126
+ **Usage:**
127
+ ```bash
128
+ appkit generate feature user
129
+ ```
130
+
131
+ **What it creates:**
132
+ ```
133
+ src/api/features/user/
134
+ ├── user.route.ts # Authentication routes
135
+ ├── user.service.ts # Auth business logic
136
+ ├── user.types.ts # User interfaces
137
+ ├── user.model.ts # User database model
138
+ └── user.http # Complete test suite
139
+
140
+ prisma/seeding/
141
+ └── user.seed.js # Seed data for all roles
142
+ ```
143
+
144
+ **🔐 Authentication Features:**
145
+ - ✅ **JWT Authentication** - Secure token-based auth
146
+ - ✅ **9-Role Hierarchy** - user.basic → admin.system
147
+ - ✅ **Password Security** - bcrypt hashing, random generation
148
+ - ✅ **Role-based Access** - Route protection by role/level
149
+ - ✅ **Complete User Management** - CRUD for admin users
150
+ - ✅ **Password Reset** - Forgot/reset password flow
151
+ - ✅ **Account Management** - Profile updates, password changes
152
+
153
+ **Generated endpoints:**
154
+ ```
155
+ # Authentication
156
+ POST /api/user/register # Create new user
157
+ POST /api/user/login # User login
158
+ POST /api/user/forgot-password # Request password reset
159
+ POST /api/user/reset-password # Reset with token
160
+
161
+ # Profile Management
162
+ GET /api/user/profile # Get user profile
163
+ PUT /api/user/profile # Update profile
164
+ POST /api/user/change-password # Change password
165
+
166
+ # Admin Only
167
+ GET /api/user/all # Get all users
168
+ GET /api/user/list # Get users (moderator+)
169
+ PUT /api/user/list/:id # Update user
170
+ DELETE /api/user/list/:id # Delete user
171
+ ```
172
+
173
+ **🛡️ Role Hierarchy:**
174
+ ```
175
+ User Roles (Level 1-3):
176
+ ├── user.basic # Basic user permissions
177
+ ├── user.pro # Pro user features
178
+ └── user.max # Maximum user features
179
+
180
+ Moderator Roles (Level 4-6):
181
+ ├── moderator.review # Can review content
182
+ ├── moderator.approve # Can approve/reject
183
+ └── moderator.manage # Can manage users
184
+
185
+ Admin Roles (Level 7-9):
186
+ ├── admin.tenant # Tenant administration
187
+ ├── admin.org # Organization administration
188
+ └── admin.system # System administration
189
+ ```
190
+
191
+ **When to use:**
192
+ - ✅ Need user accounts and authentication
193
+ - ✅ Building multi-user applications
194
+ - ✅ Need role-based access control
195
+ - ✅ Want production-ready auth system
196
+ - ✅ Building SaaS or enterprise apps
197
+
198
+ ## Decision Guide
199
+
200
+ ### When to use `generate app`
201
+ - 🎯 **Starting a new project**
202
+ - 🎯 **Need complete backend foundation**
203
+ - 🎯 **Want security best practices built-in**
204
+ - 🎯 **Building production applications**
205
+
206
+ ### When to use `generate feature <name>`
207
+ - 🎯 **Adding business-specific functionality**
208
+ - 🎯 **Need custom data models**
209
+ - 🎯 **Building domain APIs (products, orders, etc.)**
210
+ - 🎯 **Rapid prototyping**
211
+
212
+ ### When to use `generate feature user`
213
+ - 🎯 **Need user authentication**
214
+ - 🎯 **Building multi-user applications**
215
+ - 🎯 **Need role-based permissions**
216
+ - 🎯 **Want enterprise-grade user management**
217
+
218
+ ## Architecture
219
+
220
+ ### Feature-Based Component Architecture (FBCA)
221
+
222
+ Each feature is self-contained and follows consistent patterns:
223
+
224
+ ```
225
+ src/api/features/<feature>/
226
+ ├── <feature>.route.ts # HTTP endpoints & middleware
227
+ ├── <feature>.service.ts # Business logic & validation
228
+ ├── <feature>.types.ts # TypeScript interfaces
229
+ ├── <feature>.model.ts # Database schema
230
+ └── <feature>.http # API testing
231
+ ```
232
+
233
+ ### Auto-Discovery System
234
+
235
+ - 🔍 **Automatic route detection** - Scans `/features` directory
236
+ - 🚀 **Zero configuration** - Routes auto-mount at `/api/{feature}`
237
+ - 🔄 **Hot-reload friendly** - Changes reflected immediately
238
+ - 📋 **Discovery endpoint** - `GET /api` lists all features
239
+
240
+ ### Security Architecture
241
+
242
+ **Environment Security:**
243
+ - 🔐 **Random key generation** - Unique per project
244
+ - 🚫 **No hardcoded secrets** - GitHub-safe repositories
245
+ - 🛡️ **Environment separation** - Dev/prod configurations
246
+ - 🔑 **Secure defaults** - Strong random passwords
247
+
248
+ **Authentication Security:**
249
+ - 🎫 **JWT tokens** - Stateless authentication
250
+ - 🔒 **Password hashing** - bcrypt with salt rounds
251
+ - 🛡️ **Role-based access** - Granular permissions
252
+ - 🔐 **Token validation** - Middleware protection
253
+
254
+ ## Development Workflow
255
+
256
+ ### 1. Project Setup
257
+ ```bash
258
+ # Create project
259
+ appkit generate app myapp
260
+ cd myapp
261
+
262
+ # Install dependencies (auto-done)
263
+ npm install
264
+
265
+ # Start development
266
+ npm run dev:api
267
+ ```
268
+
269
+ ### 2. Add Authentication
270
+ ```bash
271
+ # Add complete auth system
272
+ appkit generate feature user
273
+
274
+ # Seed test users
275
+ node prisma/seeding/user.seed.js
276
+
277
+ # Test login
278
+ curl -X POST http://localhost:3000/api/user/login \
279
+ -H "Content-Type: application/json" \
280
+ -d '{"email":"admin.system@myapp.com","password":"YOUR_DEFAULT_PASSWORD"}'
281
+ ```
282
+
283
+ ### 3. Add Custom Features
284
+ ```bash
285
+ # Add business features
286
+ appkit generate feature product
287
+ appkit generate feature order
288
+ appkit generate feature customer
289
+ ```
290
+
291
+ ### 4. Test & Deploy
292
+ ```bash
293
+ # Run tests
294
+ npm test
295
+
296
+ # Build for production
297
+ npm run build
298
+
299
+ # Start production
300
+ npm run start:prod
301
+ ```
302
+
303
+ ## Environment Configuration
304
+
305
+ ### Auto-Generated .env
306
+ ```bash
307
+ # Server Configuration
308
+ PORT=3000
309
+ NODE_ENV=development
310
+
311
+ # Database Configuration
312
+ DATABASE_URL="file:./dev.db"
313
+
314
+ # Application Configuration
315
+ APP_NAME=myapp
316
+ API_VERSION=1.0.0
317
+
318
+ # Security (Auto-generated, GitHub-safe)
319
+ VOILA_FRONTEND_KEY=voila_abc123def456... # 26 chars
320
+ VOILA_AUTH_SECRET=auth_xyz789abc123... # 44 chars
321
+ DEFAULT_USER_PASSWORD=pwd9x7k4m2 # 10 chars
322
+
323
+ # Logging
324
+ LOG_LEVEL=info
325
+ ```
326
+
327
+ ### Production Environment
328
+ ```bash
329
+ # Override for production
330
+ NODE_ENV=production
331
+ PORT=8080
332
+ DATABASE_URL="postgresql://user:pass@host:5432/db"
333
+ LOG_LEVEL=warn
334
+ ```
335
+
336
+ ## Available Scripts
337
+
338
+ | Script | Description | When to Use |
339
+ |--------|-------------|-------------|
340
+ | `npm run dev:api` | Development server with hot-reload | During development |
341
+ | `npm run build` | Build TypeScript to JavaScript | Before deployment |
342
+ | `npm run start:prod` | Start production server | Production deployment |
343
+ | `npm run start` | Start without build | Quick production start |
344
+
345
+ ## Testing
346
+
347
+ ### HTTP Test Files
348
+
349
+ Each feature includes a `.http` file for easy testing:
350
+
351
+ ```http
352
+ ### Test login
353
+ POST http://localhost:3000/api/user/login
354
+ Content-Type: application/json
355
+
356
+ {
357
+ "email": "admin.system@myapp.com",
358
+ "password": "YOUR_DEFAULT_PASSWORD"
359
+ }
360
+
361
+ ### Test protected endpoint
362
+ GET http://localhost:3000/api/user/profile
363
+ Authorization: Bearer YOUR_JWT_TOKEN
364
+ ```
365
+
366
+ ### Integration Testing
367
+
368
+ ```bash
369
+ # Test endpoints with curl
370
+ curl http://localhost:3000/health
371
+ curl http://localhost:3000/api
372
+ curl http://localhost:3000/api/user/test
373
+ ```
374
+
375
+ ## AppKit Integration
376
+
377
+ ### Database
378
+ ```typescript
379
+ import { databaseClass } from '@bloomneo/appkit/database';
380
+
381
+ const db = await databaseClass.get();
382
+ const users = await db.user.findMany();
383
+ ```
384
+
385
+ ### Authentication
386
+ ```typescript
387
+ import { authClass } from '@bloomneo/appkit/auth';
388
+
389
+ const auth = authClass.get();
390
+ const token = auth.generateLoginToken({ userId, role, level });
391
+ ```
392
+
393
+ ### Error Handling
394
+ ```typescript
395
+ import { errorClass } from '@bloomneo/appkit/error';
396
+
397
+ const error = errorClass.get();
398
+ throw error.badRequest('Invalid input');
399
+ throw error.notFound('User not found');
400
+ ```
401
+
402
+ ### Logging
403
+ ```typescript
404
+ import { loggerClass } from '@bloomneo/appkit/logger';
405
+
406
+ const logger = loggerClass.get('feature-name');
407
+ logger.info('Request processed', { userId });
408
+ ```
409
+
410
+ ## Best Practices
411
+
412
+ ### Security
413
+ - ✅ **Use environment variables** for all secrets
414
+ - ✅ **Never commit .env files** to version control
415
+ - ✅ **Use role-based access control** for sensitive endpoints
416
+ - ✅ **Validate all inputs** in service layers
417
+ - ✅ **Use JWT tokens** for stateless authentication
418
+
419
+ ### Code Organization
420
+ - ✅ **Follow FBCA patterns** - keep features self-contained
421
+ - ✅ **Use TypeScript interfaces** for type safety
422
+ - ✅ **Implement proper error handling** with AppKit error classes
423
+ - ✅ **Add comprehensive logging** for debugging
424
+ - ✅ **Write HTTP tests** for all endpoints
425
+
426
+ ### Database
427
+ - ✅ **Use AppKit database class** for consistency
428
+ - ✅ **Include tenant_id fields** for multi-tenancy
429
+ - ✅ **Transform dates to ISO strings** in responses
430
+ - ✅ **Implement input validation** before database operations
431
+
432
+ ## Troubleshooting
433
+
434
+ ### Common Issues
435
+
436
+ **Feature not discovered:**
437
+ - ✅ Check file naming: `{feature}.route.ts`
438
+ - ✅ Ensure default export: `export default router`
439
+ - ✅ Verify directory structure: `features/{feature}/`
440
+
441
+ **Authentication errors:**
442
+ - ✅ Check `VOILA_AUTH_SECRET` in .env
443
+ - ✅ Verify password in seeding
444
+ - ✅ Test with correct user credentials
445
+
446
+ **Database connection issues:**
447
+ - ✅ Verify `DATABASE_URL` in .env
448
+ - ✅ Run `npx prisma generate`
449
+ - ✅ Run `npx prisma db push`
450
+
451
+ **TypeScript compilation errors:**
452
+ - ✅ Check import paths use `.js` extensions
453
+ - ✅ Verify `moduleResolution: "bundler"` in tsconfig
454
+ - ✅ Ensure proper AppKit module imports
455
+
456
+ ## Examples
457
+
458
+ ### Complete User Management Flow
459
+
460
+ ```bash
461
+ # 1. Create app with auth
462
+ appkit generate app userapp
463
+ cd userapp
464
+ appkit generate feature user
465
+
466
+ # 2. Seed test users
467
+ node prisma/seeding/user.seed.js
468
+
469
+ # 3. Test authentication
470
+ curl -X POST http://localhost:3000/api/user/login \
471
+ -H "Content-Type: application/json" \
472
+ -d '{"email":"admin.system@userapp.com","password":"YOUR_DEFAULT_PASSWORD"}'
473
+
474
+ # 4. Use JWT token for protected endpoints
475
+ curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
476
+ http://localhost:3000/api/user/profile
477
+ ```
478
+
479
+ ### E-commerce API Example
480
+
481
+ ```bash
482
+ # Create e-commerce backend
483
+ appkit generate app shopapi
484
+ cd shopapi
485
+
486
+ # Add authentication
487
+ appkit generate feature user
488
+
489
+ # Add business features
490
+ appkit generate feature product
491
+ appkit generate feature order
492
+ appkit generate feature customer
493
+ appkit generate feature category
494
+
495
+ # Result: Complete e-commerce API with auth
496
+ # GET /api/user/* - User management
497
+ # GET /api/product/* - Product catalog
498
+ # GET /api/order/* - Order management
499
+ # GET /api/customer/* - Customer data
500
+ # GET /api/category/* - Product categories
501
+ ```
502
+
503
+ ---
504
+
505
+ **AppKit CLI - Production-ready backend applications in minutes, not hours.** 🚀
506
+
507
+ **Generated with AppKit CLI v3.0 - Enhanced with Authentication, Security, and GitHub-safe Repositories**
@@ -0,0 +1,61 @@
1
+ # AppKit Comment Standards
2
+
3
+ Documentation guidelines for AppKit backend applications optimized for developers and AI systems.
4
+
5
+ ## Template
6
+
7
+ **File Header:**
8
+ ```typescript
9
+ /**
10
+ * Brief description
11
+ * @module @bloomneo/package/module
12
+ * @file src/path/file.ts
13
+ *
14
+ * @llm-rule WHEN: Use case trigger
15
+ * @llm-rule AVOID: Major pitfalls
16
+ * @llm-rule NOTE: Critical context (optional)
17
+ */
18
+ ```
19
+
20
+ **Function:**
21
+ ```typescript
22
+ /**
23
+ * Function description
24
+ * @llm-rule WHEN: Specific use case
25
+ * @llm-rule AVOID: Common mistakes
26
+ * @llm-rule NOTE: Non-obvious behavior (optional)
27
+ */
28
+ ```
29
+
30
+ ## Rules
31
+
32
+ **Categories:**
33
+ - **WHEN** - Trigger conditions
34
+ - **AVOID** - Breaking mistakes
35
+ - **NOTE** - Critical context (optional)
36
+
37
+ **Guidelines:**
38
+ - Maximum 3 rules per item
39
+ - One line per rule
40
+ - Action-oriented language
41
+ - Specific use cases vs common pitfalls
42
+
43
+ ## Examples
44
+
45
+ **Good:**
46
+ ```typescript
47
+ @llm-rule WHEN: Building apps with user roles and permissions
48
+ @llm-rule AVOID: Simple login apps - adds unnecessary complexity
49
+
50
+ @llm-rule WHEN: Storing user passwords
51
+ @llm-rule AVOID: Plain text passwords - security vulnerability
52
+ ```
53
+
54
+ **Avoid:**
55
+ ```typescript
56
+ @llm-rule WHEN: Need to call this function
57
+ @llm-rule PURPOSE: Returns user data
58
+ @llm-rule USAGE: This function should be used when...
59
+ ```
60
+
61
+ **Standard for all AppKit backend applications - ensures developer-friendly and AI-ready code.**