fragment-ts 1.0.2 → 1.0.4

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 (304) hide show
  1. package/README.md +401 -0
  2. package/USAGE.md +1439 -0
  3. package/bin/fragment.js +2 -0
  4. package/dist/ai/ai.module.d.ts +27 -0
  5. package/dist/ai/ai.module.d.ts.map +1 -0
  6. package/dist/ai/ai.module.js +77 -0
  7. package/dist/ai/ai.module.js.map +1 -0
  8. package/dist/auth/auth.module.d.ts +18 -0
  9. package/dist/auth/auth.module.d.ts.map +1 -0
  10. package/dist/auth/auth.module.js +89 -0
  11. package/dist/auth/auth.module.js.map +1 -0
  12. package/dist/cli/commands/build.command.d.ts +6 -1
  13. package/dist/cli/commands/build.command.d.ts.map +1 -0
  14. package/dist/cli/commands/build.command.js +130 -10
  15. package/dist/cli/commands/build.command.js.map +1 -1
  16. package/dist/cli/commands/diagnostics.command.d.ts +16 -0
  17. package/dist/cli/commands/diagnostics.command.d.ts.map +1 -0
  18. package/dist/cli/commands/diagnostics.command.js +419 -0
  19. package/dist/cli/commands/diagnostics.command.js.map +1 -0
  20. package/dist/cli/commands/generate.command.d.ts +13 -6
  21. package/dist/cli/commands/generate.command.d.ts.map +1 -0
  22. package/dist/cli/commands/generate.command.js +200 -128
  23. package/dist/cli/commands/generate.command.js.map +1 -1
  24. package/dist/cli/commands/init.command.d.ts +11 -5
  25. package/dist/cli/commands/init.command.d.ts.map +1 -0
  26. package/dist/cli/commands/init.command.js +267 -305
  27. package/dist/cli/commands/init.command.js.map +1 -1
  28. package/dist/cli/commands/migrate.command.d.ts +12 -5
  29. package/dist/cli/commands/migrate.command.d.ts.map +1 -0
  30. package/dist/cli/commands/migrate.command.js +211 -83
  31. package/dist/cli/commands/migrate.command.js.map +1 -1
  32. package/dist/cli/commands/serve.command.d.ts +5 -4
  33. package/dist/cli/commands/serve.command.d.ts.map +1 -0
  34. package/dist/cli/commands/serve.command.js +178 -21
  35. package/dist/cli/commands/serve.command.js.map +1 -1
  36. package/dist/cli/index.d.ts +2 -0
  37. package/dist/cli/index.d.ts.map +1 -0
  38. package/dist/cli/index.js +22 -0
  39. package/dist/cli/index.js.map +1 -0
  40. package/dist/core/container/di-container.d.ts +13 -7
  41. package/dist/core/container/di-container.d.ts.map +1 -0
  42. package/dist/core/container/di-container.js +75 -25
  43. package/dist/core/container/di-container.js.map +1 -1
  44. package/dist/core/decorators/application.decorator.d.ts +8 -0
  45. package/dist/core/decorators/application.decorator.d.ts.map +1 -0
  46. package/dist/core/decorators/application.decorator.js +16 -0
  47. package/dist/core/decorators/application.decorator.js.map +1 -0
  48. package/dist/core/decorators/auto-configuration.decorator.d.ts +2 -0
  49. package/dist/core/decorators/auto-configuration.decorator.d.ts.map +1 -0
  50. package/dist/core/decorators/auto-configuration.decorator.js +19 -0
  51. package/dist/core/decorators/auto-configuration.decorator.js.map +1 -0
  52. package/dist/core/decorators/conditional.decorators.d.ts +4 -0
  53. package/dist/core/decorators/conditional.decorators.d.ts.map +1 -0
  54. package/dist/core/decorators/conditional.decorators.js +22 -0
  55. package/dist/core/decorators/conditional.decorators.js.map +1 -0
  56. package/dist/core/decorators/controller.decorator.d.ts +1 -3
  57. package/dist/core/decorators/controller.decorator.d.ts.map +1 -0
  58. package/dist/core/decorators/controller.decorator.js +12 -9
  59. package/dist/core/decorators/controller.decorator.js.map +1 -1
  60. package/dist/core/decorators/http.decorators.d.ts +12 -0
  61. package/dist/core/decorators/http.decorators.d.ts.map +1 -0
  62. package/dist/core/decorators/http.decorators.js +52 -0
  63. package/dist/core/decorators/http.decorators.js.map +1 -0
  64. package/dist/core/decorators/injectable.decorator.d.ts +3 -3
  65. package/dist/core/decorators/injectable.decorator.d.ts.map +1 -0
  66. package/dist/core/decorators/injectable.decorator.js +11 -8
  67. package/dist/core/decorators/injectable.decorator.js.map +1 -1
  68. package/dist/core/decorators/injection.decorators.d.ts +5 -0
  69. package/dist/core/decorators/injection.decorators.d.ts.map +1 -0
  70. package/dist/core/decorators/injection.decorators.js +29 -0
  71. package/dist/core/decorators/injection.decorators.js.map +1 -0
  72. package/dist/core/decorators/repository.decorator.d.ts +1 -0
  73. package/dist/core/decorators/repository.decorator.d.ts.map +1 -0
  74. package/dist/core/decorators/repository.decorator.js +12 -1
  75. package/dist/core/decorators/repository.decorator.js.map +1 -1
  76. package/dist/core/decorators/service.decorator.d.ts +1 -0
  77. package/dist/core/decorators/service.decorator.d.ts.map +1 -0
  78. package/dist/core/decorators/service.decorator.js +12 -1
  79. package/dist/core/decorators/service.decorator.js.map +1 -1
  80. package/dist/core/index.d.ts +13 -0
  81. package/dist/core/index.d.ts.map +1 -0
  82. package/dist/core/index.js +29 -0
  83. package/dist/core/index.js.map +1 -0
  84. package/dist/core/loader/file-loader.d.ts +5 -0
  85. package/dist/core/loader/file-loader.d.ts.map +1 -0
  86. package/dist/core/loader/file-loader.js +85 -0
  87. package/dist/core/loader/file-loader.js.map +1 -0
  88. package/dist/core/metadata/metadata-keys.d.ts +20 -0
  89. package/dist/core/metadata/metadata-keys.d.ts.map +1 -0
  90. package/dist/core/metadata/metadata-keys.js +23 -0
  91. package/dist/core/metadata/metadata-keys.js.map +1 -0
  92. package/dist/core/metadata/metadata-storage.d.ts +36 -0
  93. package/dist/core/metadata/metadata-storage.d.ts.map +1 -0
  94. package/dist/core/metadata/metadata-storage.js +53 -0
  95. package/dist/core/metadata/metadata-storage.js.map +1 -0
  96. package/dist/core/scanner/component-scanner.d.ts +16 -0
  97. package/dist/core/scanner/component-scanner.d.ts.map +1 -0
  98. package/dist/core/scanner/component-scanner.js +147 -0
  99. package/dist/core/scanner/component-scanner.js.map +1 -0
  100. package/dist/index.d.ts +22 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +60 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/plugins/plugin-manager.d.ts +14 -0
  105. package/dist/plugins/plugin-manager.d.ts.map +1 -0
  106. package/dist/{cli/utils/file-generator.js → plugins/plugin-manager.js} +32 -24
  107. package/dist/plugins/plugin-manager.js.map +1 -0
  108. package/dist/shared/errors.d.ts +18 -0
  109. package/dist/shared/errors.d.ts.map +1 -0
  110. package/dist/shared/errors.js +41 -0
  111. package/dist/shared/errors.js.map +1 -0
  112. package/dist/testing/runner.d.ts +26 -0
  113. package/dist/testing/runner.d.ts.map +1 -0
  114. package/dist/testing/runner.js +143 -0
  115. package/dist/testing/runner.js.map +1 -0
  116. package/dist/typeorm/typeorm-module.d.ts +36 -0
  117. package/dist/typeorm/typeorm-module.d.ts.map +1 -0
  118. package/dist/typeorm/typeorm-module.js +150 -0
  119. package/dist/typeorm/typeorm-module.js.map +1 -0
  120. package/dist/web/application.d.ts +29 -0
  121. package/dist/web/application.d.ts.map +1 -0
  122. package/dist/web/application.js +301 -0
  123. package/dist/web/application.js.map +1 -0
  124. package/dist/web/interfaces.d.ts +14 -0
  125. package/dist/web/interfaces.d.ts.map +1 -0
  126. package/dist/{auth/dto/login.dto.js → web/interfaces.js} +1 -1
  127. package/dist/web/interfaces.js.map +1 -0
  128. package/examples/blog-api/fragment.json +14 -0
  129. package/examples/blog-api/package-lock.json +3405 -0
  130. package/examples/blog-api/package.json +19 -0
  131. package/examples/blog-api/src/controllers/app.controller.ts +9 -0
  132. package/examples/blog-api/src/controllers/auth.controller.ts +17 -0
  133. package/examples/blog-api/src/controllers/category.controller.ts +29 -0
  134. package/examples/blog-api/src/controllers/comment.controller.ts +31 -0
  135. package/examples/blog-api/src/controllers/post.controller.ts +46 -0
  136. package/examples/blog-api/src/dto/create-category.dto.ts +6 -0
  137. package/examples/blog-api/src/dto/create-comment.dto.ts +6 -0
  138. package/examples/blog-api/src/dto/create-post.dto.ts +6 -0
  139. package/examples/blog-api/src/entities/category.entity.ts +16 -0
  140. package/examples/blog-api/src/entities/comment.entity.ts +29 -0
  141. package/examples/blog-api/src/entities/post.entity.ts +42 -0
  142. package/examples/blog-api/src/entities/user.entity.ts +25 -0
  143. package/examples/blog-api/src/main.ts +16 -0
  144. package/examples/blog-api/src/migrations/1767737463842-InitialSchema.ts +60 -0
  145. package/examples/blog-api/src/repositories/category.repository.ts +25 -0
  146. package/examples/blog-api/src/repositories/comment.repository.ts +25 -0
  147. package/examples/blog-api/src/repositories/post.repository.ts +29 -0
  148. package/examples/blog-api/src/seeds/SampleData.seed.ts +41 -0
  149. package/examples/blog-api/src/services/app.service.ts +8 -0
  150. package/examples/blog-api/src/services/auth.service.ts +15 -0
  151. package/examples/blog-api/src/services/category.service.ts +27 -0
  152. package/examples/blog-api/src/services/comment.service.ts +31 -0
  153. package/examples/blog-api/src/services/post.service.ts +35 -0
  154. package/examples/blog-api/tsconfig.json +23 -0
  155. package/package.json +55 -33
  156. package/src/ai/ai.module.ts +110 -0
  157. package/src/auth/auth.module.ts +77 -0
  158. package/src/cli/commands/build.command.ts +123 -13
  159. package/src/cli/commands/diagnostics.command.ts +438 -0
  160. package/src/cli/commands/generate.command.ts +206 -137
  161. package/src/cli/commands/init.command.ts +337 -349
  162. package/src/cli/commands/migrate.command.ts +203 -88
  163. package/src/cli/commands/serve.command.ts +176 -24
  164. package/src/cli/index.ts +23 -0
  165. package/src/core/container/di-container.ts +83 -26
  166. package/src/core/decorators/application.decorator.ts +26 -0
  167. package/src/core/decorators/auto-configuration.decorator.ts +17 -0
  168. package/src/core/decorators/conditional.decorators.ts +19 -0
  169. package/src/core/decorators/controller.decorator.ts +14 -11
  170. package/src/core/decorators/http.decorators.ts +71 -0
  171. package/src/core/decorators/injectable.decorator.ts +14 -9
  172. package/src/core/decorators/injection.decorators.ts +26 -0
  173. package/src/core/decorators/repository.decorator.ts +13 -2
  174. package/src/core/decorators/service.decorator.ts +13 -2
  175. package/src/core/index.ts +13 -0
  176. package/src/core/loader/file-loader.ts +55 -0
  177. package/src/core/metadata/metadata-keys.ts +19 -0
  178. package/src/core/metadata/metadata-storage.ts +91 -0
  179. package/src/core/scanner/component-scanner.ts +129 -0
  180. package/src/index.ts +45 -0
  181. package/src/plugins/plugin-manager.ts +52 -0
  182. package/src/shared/errors.ts +34 -0
  183. package/src/testing/runner.ts +143 -0
  184. package/src/typeorm/typeorm-module.ts +216 -0
  185. package/src/web/application.ts +348 -0
  186. package/src/web/interfaces.ts +17 -0
  187. package/tsconfig.json +8 -6
  188. package/.env.example +0 -0
  189. package/base.ts +0 -1810
  190. package/base2.ts +0 -968
  191. package/bin/frg.ts +0 -5
  192. package/config/fragment.lock.yaml +0 -0
  193. package/config/fragment.yaml +0 -0
  194. package/dist/app.d.ts +0 -15
  195. package/dist/app.js +0 -91
  196. package/dist/app.js.map +0 -1
  197. package/dist/auth/auth.controller.d.ts +0 -10
  198. package/dist/auth/auth.controller.js +0 -88
  199. package/dist/auth/auth.controller.js.map +0 -1
  200. package/dist/auth/auth.middleware.d.ts +0 -2
  201. package/dist/auth/auth.middleware.js +0 -25
  202. package/dist/auth/auth.middleware.js.map +0 -1
  203. package/dist/auth/auth.service.d.ts +0 -20
  204. package/dist/auth/auth.service.js +0 -144
  205. package/dist/auth/auth.service.js.map +0 -1
  206. package/dist/auth/dto/login.dto.d.ts +0 -9
  207. package/dist/auth/dto/login.dto.js.map +0 -1
  208. package/dist/cli/cli.d.ts +0 -12
  209. package/dist/cli/cli.js +0 -187
  210. package/dist/cli/cli.js.map +0 -1
  211. package/dist/cli/commands/config.command.d.ts +0 -6
  212. package/dist/cli/commands/config.command.js +0 -285
  213. package/dist/cli/commands/config.command.js.map +0 -1
  214. package/dist/cli/templates/controller.template.d.ts +0 -1
  215. package/dist/cli/templates/controller.template.js +0 -53
  216. package/dist/cli/templates/controller.template.js.map +0 -1
  217. package/dist/cli/templates/entity.template.d.ts +0 -1
  218. package/dist/cli/templates/entity.template.js +0 -24
  219. package/dist/cli/templates/entity.template.js.map +0 -1
  220. package/dist/cli/templates/repository.template.d.ts +0 -1
  221. package/dist/cli/templates/repository.template.js +0 -44
  222. package/dist/cli/templates/repository.template.js.map +0 -1
  223. package/dist/cli/templates/service.template.d.ts +0 -1
  224. package/dist/cli/templates/service.template.js +0 -44
  225. package/dist/cli/templates/service.template.js.map +0 -1
  226. package/dist/cli/utils/file-generator.d.ts +0 -9
  227. package/dist/cli/utils/file-generator.js.map +0 -1
  228. package/dist/cli/utils/logger.d.ts +0 -14
  229. package/dist/cli/utils/logger.js +0 -50
  230. package/dist/cli/utils/logger.js.map +0 -1
  231. package/dist/controllers/health.controller.d.ts +0 -13
  232. package/dist/controllers/health.controller.js +0 -51
  233. package/dist/controllers/health.controller.js.map +0 -1
  234. package/dist/core/config/config-loader.d.ts +0 -31
  235. package/dist/core/config/config-loader.js +0 -99
  236. package/dist/core/config/config-loader.js.map +0 -1
  237. package/dist/core/decorators/auth-guard.decorator.d.ts +0 -3
  238. package/dist/core/decorators/auth-guard.decorator.js +0 -19
  239. package/dist/core/decorators/auth-guard.decorator.js.map +0 -1
  240. package/dist/core/decorators/autowire.decorator.d.ts +0 -3
  241. package/dist/core/decorators/autowire.decorator.js +0 -18
  242. package/dist/core/decorators/autowire.decorator.js.map +0 -1
  243. package/dist/core/decorators/middleware.decorator.d.ts +0 -3
  244. package/dist/core/decorators/middleware.decorator.js +0 -21
  245. package/dist/core/decorators/middleware.decorator.js.map +0 -1
  246. package/dist/core/decorators/route.decorator.d.ts +0 -14
  247. package/dist/core/decorators/route.decorator.js +0 -33
  248. package/dist/core/decorators/route.decorator.js.map +0 -1
  249. package/dist/core/openai/openai-client.d.ts +0 -12
  250. package/dist/core/openai/openai-client.js +0 -94
  251. package/dist/core/openai/openai-client.js.map +0 -1
  252. package/dist/database/data-source.d.ts +0 -4
  253. package/dist/database/data-source.js +0 -27
  254. package/dist/database/data-source.js.map +0 -1
  255. package/dist/entities/session.entity.d.ts +0 -9
  256. package/dist/entities/session.entity.js +0 -46
  257. package/dist/entities/session.entity.js.map +0 -1
  258. package/dist/entities/user.entity.d.ts +0 -10
  259. package/dist/entities/user.entity.js +0 -49
  260. package/dist/entities/user.entity.js.map +0 -1
  261. package/dist/middlewares/logging.middleware.d.ts +0 -2
  262. package/dist/middlewares/logging.middleware.js +0 -29
  263. package/dist/middlewares/logging.middleware.js.map +0 -1
  264. package/dist/repositories/session.repository.d.ts +0 -9
  265. package/dist/repositories/session.repository.js +0 -51
  266. package/dist/repositories/session.repository.js.map +0 -1
  267. package/dist/repositories/user.repository.d.ts +0 -10
  268. package/dist/repositories/user.repository.js +0 -44
  269. package/dist/repositories/user.repository.js.map +0 -1
  270. package/dist/server.d.ts +0 -1
  271. package/dist/server.js +0 -31
  272. package/dist/server.js.map +0 -1
  273. package/dist/services/health.service.d.ts +0 -13
  274. package/dist/services/health.service.js +0 -45
  275. package/dist/services/health.service.js.map +0 -1
  276. package/readme.md +0 -120
  277. package/src/app.ts +0 -121
  278. package/src/auth/auth.controller.ts +0 -52
  279. package/src/auth/auth.middleware.ts +0 -27
  280. package/src/auth/auth.service.ts +0 -110
  281. package/src/auth/dto/login.dto.ts +0 -11
  282. package/src/cli/cli.ts +0 -212
  283. package/src/cli/commands/config.command.ts +0 -280
  284. package/src/cli/templates/controller.template.ts +0 -51
  285. package/src/cli/templates/entity.template.ts +0 -22
  286. package/src/cli/templates/repository.template.ts +0 -42
  287. package/src/cli/templates/service.template.ts +0 -42
  288. package/src/cli/utils/file-generator.ts +0 -37
  289. package/src/cli/utils/logger.ts +0 -52
  290. package/src/controllers/health.controller.ts +0 -24
  291. package/src/core/config/config-loader.ts +0 -98
  292. package/src/core/decorators/auth-guard.decorator.ts +0 -15
  293. package/src/core/decorators/autowire.decorator.ts +0 -18
  294. package/src/core/decorators/middleware.decorator.ts +0 -18
  295. package/src/core/decorators/route.decorator.ts +0 -33
  296. package/src/core/openai/openai-client.ts +0 -99
  297. package/src/database/data-source.ts +0 -29
  298. package/src/entities/session.entity.ts +0 -25
  299. package/src/entities/user.entity.ts +0 -27
  300. package/src/middlewares/logging.middleware.ts +0 -28
  301. package/src/repositories/session.repository.ts +0 -42
  302. package/src/repositories/user.repository.ts +0 -37
  303. package/src/server.ts +0 -32
  304. package/src/services/health.service.ts +0 -29
package/README.md ADDED
@@ -0,0 +1,401 @@
1
+ ## README.md
2
+
3
+ ```markdown
4
+ # Fragment Framework
5
+
6
+ A Spring Boot-style framework for TypeScript with Express and TypeORM.
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ npm install -g fragment-ts
12
+ ```
13
+
14
+ ## Quick Start
15
+
16
+ ```bash
17
+ # Create a new project (in current directory)
18
+ fragment init .
19
+
20
+ # Or create a new directory
21
+ fragment init my-app
22
+ cd my-app
23
+
24
+ # Start development server with hot reload
25
+ fragment serve
26
+
27
+ # Build for production
28
+ fragment build
29
+
30
+ # Start production server
31
+ npm start
32
+ ```
33
+
34
+ ## Features
35
+
36
+ - 🎯 **Decorator-based API** - Clean, intuitive syntax inspired by Spring Boot
37
+ - 💉 **Dependency Injection** - Automatic resolution of dependencies
38
+ - 🗄️ **TypeORM Integration** - Full database support with migrations
39
+ - 🔐 **Built-in Authentication** - JWT tokens, password hashing, role guards
40
+ - 🤖 **AI Integrations** - OpenAI, Ollama, and custom AI providers
41
+ - 🔌 **Plugin System** - Extensible architecture
42
+ - 🧪 **Testing Framework** - Built-in test runner
43
+ - 📦 **All-in-One Package** - No complex setup required
44
+ - 🔄 **Hot Reload** - Automatic server restart on file changes
45
+ - 🎨 **Code Generation** - CLI tools for rapid development
46
+
47
+ ## CLI Commands
48
+
49
+ ### Project Management
50
+ ```bash
51
+ fragment init [dir] # Initialize new project (use . for current directory)
52
+ fragment init . --features=auth # Initialize with specific features
53
+ fragment serve # Start development server with hot reload
54
+ fragment serve --port=4000 # Start on custom port
55
+ fragment build # Build for production
56
+ ```
57
+
58
+ ### Code Generation
59
+ ```bash
60
+ fragment generate controller <name> # Generate controller
61
+ fragment generate service <name> # Generate service with optional repository
62
+ fragment generate entity <name> # Generate TypeORM entity
63
+ fragment generate resource <name> # Generate complete CRUD resource
64
+ fragment generate dto <name> # Generate Data Transfer Object
65
+ fragment generate repository <name> # Generate repository
66
+ ```
67
+
68
+ **Examples:**
69
+ ```bash
70
+ fragment generate resource product # Creates controller, service, entity, DTO, repository
71
+ fragment g controller users # Shorthand: g = generate
72
+ ```
73
+
74
+ ### Database Operations
75
+ ```bash
76
+ fragment migrate # Run all pending migrations
77
+ fragment migrate:create <name> # Create a new migration
78
+ fragment migrate:run # Run migrations
79
+ fragment migrate:revert # Revert last migration
80
+ fragment migrate:refresh # Drop all and re-run migrations
81
+ fragment migrate:status # Show migration status
82
+ fragment schema:sync # Sync database schema (dev only)
83
+ fragment schema:drop # Drop all database tables
84
+ fragment seed # Run database seeds
85
+ fragment seed:create <name> # Create a new seed file
86
+ ```
87
+
88
+ ### Diagnostics & Debugging
89
+ ```bash
90
+ fragment routes # List all registered routes
91
+ fragment routes --env=dev # List routes from TypeScript source
92
+ fragment routes --env=prod # List routes from compiled dist/
93
+ fragment beans # List all registered beans
94
+ fragment beans --tree # Show beans as tree structure
95
+ fragment info # Show application information
96
+ fragment config # Show current configuration
97
+ fragment version # Show Fragment version
98
+ ```
99
+
100
+ ## Project Structure
101
+
102
+ ```
103
+ my-app/
104
+ ├── src/
105
+ │ ├── controllers/ # HTTP controllers
106
+ │ ├── services/ # Business logic
107
+ │ ├── repositories/ # Data access layer
108
+ │ ├── entities/ # TypeORM entities
109
+ │ ├── dto/ # Data transfer objects
110
+ │ ├── middlewares/ # Express middlewares
111
+ │ ├── config/ # Configuration files
112
+ │ └── main.ts # Application entry point
113
+ ├── dist/ # Compiled JavaScript (after build)
114
+ ├── test/ # Test files
115
+ ├── fragment.json # Fragment configuration
116
+ ├── tsconfig.json # TypeScript configuration
117
+ └── package.json
118
+ ```
119
+
120
+ ## Basic Example
121
+
122
+ ### Application Entry Point
123
+
124
+ ```typescript
125
+ // src/main.ts
126
+ import 'reflect-metadata';
127
+ import { FragmentApplication, FragmentWebApplication } from 'fragment-ts;
128
+
129
+ @FragmentApplication({
130
+ port: 3000,
131
+ autoScan: true
132
+ })
133
+ class Application {}
134
+
135
+ async function bootstrap() {
136
+ const app = new FragmentWebApplication();
137
+ await app.bootstrap(Application);
138
+ }
139
+
140
+ bootstrap();
141
+ ```
142
+
143
+ ### Creating a Controller
144
+
145
+ ```typescript
146
+ // src/controllers/users.controller.ts
147
+ import { Controller, Get, Post, Put, Delete, Body, Param } from 'fragment-ts';
148
+ import { UserService } from '../services/user.service';
149
+
150
+ @Controller('/users')
151
+ export class UserController {
152
+ constructor(private userService: UserService) {}
153
+
154
+ @Get()
155
+ async findAll() {
156
+ return this.userService.findAll();
157
+ }
158
+
159
+ @Get('/:id')
160
+ async findOne(@Param('id') id: string) {
161
+ return this.userService.findOne(id);
162
+ }
163
+
164
+ @Post()
165
+ async create(@Body() body: any) {
166
+ return this.userService.create(body);
167
+ }
168
+
169
+ @Put('/:id')
170
+ async update(@Param('id') id: string, @Body() body: any) {
171
+ return this.userService.update(id, body);
172
+ }
173
+
174
+ @Delete('/:id')
175
+ async delete(@Param('id') id: string) {
176
+ return this.userService.delete(id);
177
+ }
178
+ }
179
+ ```
180
+
181
+ ### Creating a Service
182
+
183
+ ```typescript
184
+ // src/services/user.service.ts
185
+ import { Service } from 'fragment-ts';
186
+ import { UserRepository } from '../repositories/user.repository';
187
+
188
+ @Service()
189
+ export class UserService {
190
+ constructor(private userRepository: UserRepository) {}
191
+
192
+ async findAll() {
193
+ return this.userRepository.findAll();
194
+ }
195
+
196
+ async findOne(id: string) {
197
+ return this.userRepository.findById(parseInt(id));
198
+ }
199
+
200
+ async create(data: any) {
201
+ return this.userRepository.create(data);
202
+ }
203
+
204
+ async update(id: string, data: any) {
205
+ return this.userRepository.update(parseInt(id), data);
206
+ }
207
+
208
+ async delete(id: string) {
209
+ return this.userRepository.delete(parseInt(id));
210
+ }
211
+ }
212
+ ```
213
+
214
+ ## Authentication Example
215
+
216
+ ```typescript
217
+ import { Controller, Post, Body } from 'fragment-ts';
218
+ import { AuthModule } from 'fragment-ts';
219
+
220
+ @Controller('/auth')
221
+ export class AuthController {
222
+ @Post('/login')
223
+ async login(@Body() body: any) {
224
+ // Verify user credentials...
225
+ const token = AuthModule.generateToken({
226
+ userId: '123',
227
+ email: body.email,
228
+ roles: ['user']
229
+ });
230
+ return { token };
231
+ }
232
+
233
+ @Post('/register')
234
+ async register(@Body() body: any) {
235
+ const hashedPassword = await AuthModule.hashPassword(body.password);
236
+ // Save user...
237
+ return { message: 'User registered successfully' };
238
+ }
239
+ }
240
+ ```
241
+
242
+ ## AI Integration Example
243
+
244
+ ```typescript
245
+ import { Service } from 'fragment-ts';
246
+ import { AIModule } from 'fragment-ts';
247
+
248
+ @Service()
249
+ export class ChatService {
250
+ private aiModule: AIModule;
251
+
252
+ constructor() {
253
+ this.aiModule = new AIModule({
254
+ openaiKey: process.env.OPENAI_API_KEY
255
+ });
256
+ }
257
+
258
+ async chat(message: string) {
259
+ return this.aiModule.complete([
260
+ { role: 'system', content: 'You are a helpful assistant.' },
261
+ { role: 'user', content: message }
262
+ ]);
263
+ }
264
+ }
265
+ ```
266
+
267
+ ## Configuration
268
+
269
+ ### fragment.json
270
+
271
+ ```json
272
+ {
273
+ "server": {
274
+ "port": 3000,
275
+ "host": "0.0.0.0"
276
+ },
277
+ "database": {
278
+ "type": "postgres",
279
+ "host": "localhost",
280
+ "port": 5432,
281
+ "username": "postgres",
282
+ "password": "password",
283
+ "database": "myapp",
284
+ "synchronize": false,
285
+ "logging": false,
286
+ "entities": ["dist/**/*.entity.js"],
287
+ "migrations": ["dist/migrations/**/*.js"]
288
+ }
289
+ }
290
+ ```
291
+
292
+ ### Environment Variables
293
+
294
+ ```env
295
+ NODE_ENV=development
296
+ PORT=3000
297
+ JWT_SECRET=your-secret-key
298
+ DATABASE_URL=postgresql://user:pass@localhost:5432/db
299
+ OPENAI_API_KEY=sk-your-key-here
300
+ ```
301
+
302
+ ## Development Workflow
303
+
304
+ ```bash
305
+ # 1. Initialize project
306
+ fragment init my-api --features=auth,database
307
+ cd my-api
308
+
309
+ # 2. Generate resources
310
+ fragment generate resource user
311
+ fragment generate resource product
312
+
313
+ # 3. Create and run migrations
314
+ fragment migrate:create InitialSchema
315
+ fragment migrate:run
316
+
317
+ # 4. Start development server
318
+ fragment serve
319
+
320
+ # 5. List routes to verify
321
+ fragment routes
322
+
323
+ # 6. Build for production
324
+ fragment build
325
+
326
+ # 7. Start production server
327
+ npm start
328
+ ```
329
+
330
+ ## Testing
331
+
332
+ ```typescript
333
+ // test/user.spec.ts
334
+ import { describe, it, expect } from 'fragment-ts';
335
+
336
+ describe('UserService', () => {
337
+ it('should create a user', async () => {
338
+ const user = await userService.create({
339
+ email: 'test@example.com',
340
+ name: 'Test User'
341
+ });
342
+
343
+ expect(user.email).toBe('test@example.com');
344
+ });
345
+ });
346
+ ```
347
+
348
+ ```bash
349
+ # Run tests
350
+ fragment test
351
+ ```
352
+
353
+ ## Production Deployment
354
+
355
+ ### Docker
356
+
357
+ ```dockerfile
358
+ FROM node:18-alpine
359
+ WORKDIR /app
360
+ COPY package*.json ./
361
+ RUN npm ci --only=production
362
+ COPY . .
363
+ RUN npm run build
364
+ EXPOSE 3000
365
+ CMD ["npm", "start"]
366
+ ```
367
+
368
+ ```bash
369
+ docker build -t my-app .
370
+ docker run -p 3000:3000 my-app
371
+ ```
372
+
373
+ ## Examples
374
+
375
+ Check out the [examples](./examples) directory for complete working applications:
376
+ - REST API
377
+ - Authentication System
378
+ - AI Chat Application
379
+ - E-commerce Backend
380
+
381
+ ## Documentation
382
+
383
+ For comprehensive guides and API reference, visit:
384
+ - **Full Documentation**: [https://fragment.digitwhale.com](https://fragment.digitwhale.com)
385
+ - **Use Cases & Examples**: [USECASES.md](./USECASES.md)
386
+ - **API Reference**: [https://fragment.digitwhale.com/api](https://fragment.digitwhale.com/api)
387
+
388
+ ## Community
389
+
390
+ - **GitHub**: [https://github.com/fragment/framework](https://github.com/fragment/framework)
391
+ - **Discord**: [https://discord.gg/fragment](https://discord.gg/fragment)
392
+ - **Twitter**: [@FragmentJS](https://twitter.com/FragmentJS)
393
+
394
+ ## Contributing
395
+
396
+ We welcome contributions! See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
397
+
398
+ ## License
399
+
400
+ MIT © Fragment Team
401
+ ```