@venizia/ignis-docs 0.2.0 → 0.2.1-1

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 (174) hide show
  1. package/README.md +14 -14
  2. package/content/best-practices/api-usage-examples.md +39 -19
  3. package/content/best-practices/architectural-patterns.md +24 -13
  4. package/content/best-practices/architecture-decisions.md +29 -16
  5. package/content/best-practices/code-style-standards/advanced-patterns.md +43 -31
  6. package/content/best-practices/code-style-standards/constants-configuration.md +19 -4
  7. package/content/best-practices/code-style-standards/control-flow.md +33 -1
  8. package/content/best-practices/code-style-standards/documentation.md +28 -8
  9. package/content/best-practices/code-style-standards/function-patterns.md +15 -4
  10. package/content/best-practices/code-style-standards/index.md +7 -2
  11. package/content/best-practices/code-style-standards/naming-conventions.md +27 -3
  12. package/content/best-practices/code-style-standards/route-definitions.md +9 -5
  13. package/content/best-practices/code-style-standards/tooling.md +14 -1
  14. package/content/best-practices/code-style-standards/type-safety.md +39 -6
  15. package/content/best-practices/common-pitfalls.md +59 -35
  16. package/content/best-practices/contribution-workflow.md +8 -4
  17. package/content/best-practices/data-modeling.md +78 -62
  18. package/content/best-practices/deployment-strategies.md +56 -19
  19. package/content/best-practices/error-handling.md +247 -153
  20. package/content/best-practices/index.md +6 -0
  21. package/content/best-practices/performance-optimization.md +26 -13
  22. package/content/best-practices/security-guidelines.md +35 -9
  23. package/content/best-practices/testing-strategies.md +7 -2
  24. package/content/best-practices/troubleshooting-tips.md +27 -17
  25. package/content/extensions/components/api-reference.md +109 -323
  26. package/content/extensions/components/authentication/api.md +489 -602
  27. package/content/extensions/components/authentication/errors.md +135 -498
  28. package/content/extensions/components/authentication/index.md +89 -801
  29. package/content/extensions/components/authentication/usage.md +231 -955
  30. package/content/extensions/components/authorization/api.md +991 -644
  31. package/content/extensions/components/authorization/errors.md +204 -208
  32. package/content/extensions/components/authorization/getting-started.md +227 -0
  33. package/content/extensions/components/authorization/index.md +88 -795
  34. package/content/extensions/components/authorization/usage.md +219 -528
  35. package/content/extensions/components/health-check.md +77 -243
  36. package/content/extensions/components/index.md +24 -90
  37. package/content/extensions/components/mail/api.md +553 -285
  38. package/content/extensions/components/mail/errors.md +76 -62
  39. package/content/extensions/components/mail/index.md +111 -463
  40. package/content/extensions/components/mail/usage.md +139 -173
  41. package/content/extensions/components/request-tracker.md +70 -173
  42. package/content/extensions/components/socket-io/api.md +462 -785
  43. package/content/extensions/components/socket-io/errors.md +49 -51
  44. package/content/extensions/components/socket-io/index.md +69 -372
  45. package/content/extensions/components/socket-io/usage.md +212 -105
  46. package/content/extensions/components/static-asset/api.md +461 -141
  47. package/content/extensions/components/static-asset/errors.md +121 -53
  48. package/content/extensions/components/static-asset/index.md +84 -606
  49. package/content/extensions/components/static-asset/usage.md +184 -299
  50. package/content/extensions/components/template/index.md +3 -3
  51. package/content/extensions/components/websocket/api.md +311 -404
  52. package/content/extensions/components/websocket/errors.md +47 -56
  53. package/content/extensions/components/websocket/index.md +75 -407
  54. package/content/extensions/components/websocket/usage.md +120 -338
  55. package/content/extensions/helpers/cron/index.md +52 -160
  56. package/content/extensions/helpers/crypto/index.md +67 -480
  57. package/content/extensions/helpers/crypto/reference.md +528 -0
  58. package/content/extensions/helpers/env/index.md +64 -178
  59. package/content/extensions/helpers/error/index.md +286 -196
  60. package/content/extensions/helpers/index.md +61 -47
  61. package/content/extensions/helpers/inversion/index.md +76 -550
  62. package/content/extensions/helpers/inversion/reference.md +530 -0
  63. package/content/extensions/helpers/kafka/admin.md +23 -3
  64. package/content/extensions/helpers/kafka/compile-binary.md +83 -52
  65. package/content/extensions/helpers/kafka/consumer.md +65 -28
  66. package/content/extensions/helpers/kafka/examples.md +46 -253
  67. package/content/extensions/helpers/kafka/index.md +55 -617
  68. package/content/extensions/helpers/kafka/producer.md +156 -22
  69. package/content/extensions/helpers/kafka/schema-registry.md +59 -79
  70. package/content/extensions/helpers/logger/hf-logger.md +220 -0
  71. package/content/extensions/helpers/logger/index.md +78 -552
  72. package/content/extensions/helpers/logger/pino.md +105 -0
  73. package/content/extensions/helpers/logger/reference.md +937 -0
  74. package/content/extensions/helpers/network/api.md +276 -195
  75. package/content/extensions/helpers/network/index.md +87 -524
  76. package/content/extensions/helpers/queue/index.md +80 -897
  77. package/content/extensions/helpers/queue/reference.md +494 -0
  78. package/content/extensions/helpers/redis/index.md +86 -640
  79. package/content/extensions/helpers/redis/reference.md +784 -0
  80. package/content/extensions/helpers/secrets/index.md +136 -0
  81. package/content/extensions/helpers/socket-io/api.md +325 -204
  82. package/content/extensions/helpers/socket-io/index.md +79 -429
  83. package/content/extensions/helpers/storage/api.md +584 -464
  84. package/content/extensions/helpers/storage/index.md +80 -573
  85. package/content/extensions/helpers/types/index.md +75 -495
  86. package/content/extensions/helpers/types/reference.md +689 -0
  87. package/content/extensions/helpers/uid/index.md +176 -189
  88. package/content/extensions/helpers/websocket/api.md +366 -214
  89. package/content/extensions/helpers/websocket/index.md +68 -503
  90. package/content/extensions/helpers/worker-thread/index.md +62 -396
  91. package/content/extensions/helpers/worker-thread/reference.md +428 -0
  92. package/content/extensions/index.md +38 -39
  93. package/content/extensions/src-details/mcp-server.md +96 -548
  94. package/content/guides/core-concepts/persistent/datasources.md +2 -2
  95. package/content/guides/core-concepts/persistent/index.md +5 -1
  96. package/content/guides/core-concepts/persistent/models.md +1 -1
  97. package/content/guides/core-concepts/persistent/pglite.md +218 -0
  98. package/content/guides/core-concepts/persistent/postgres-drivers.md +21 -15
  99. package/content/guides/core-concepts/persistent/search-meilisearch.md +22 -12
  100. package/content/guides/core-concepts/persistent/search-typesense.md +28 -16
  101. package/content/guides/core-concepts/persistent/sqlite.md +296 -0
  102. package/content/guides/core-concepts/persistent/transactions.md +12 -11
  103. package/content/guides/core-concepts/secrets-vault.md +177 -0
  104. package/content/guides/core-concepts/services.md +1 -1
  105. package/content/guides/get-started/5-minute-quickstart.md +59 -206
  106. package/content/guides/get-started/philosophy.md +135 -670
  107. package/content/guides/get-started/setup.md +53 -74
  108. package/content/guides/migrations/redis-helpers-migration.md +5 -4
  109. package/content/guides/migrations/scoped-rbac-migration.md +5 -5
  110. package/content/guides/migrations/unified-connectors-migration.md +8 -7
  111. package/content/guides/tutorials/ecommerce-api.md +3 -8
  112. package/content/guides/tutorials/realtime-chat.md +1 -1
  113. package/content/references/base/application.md +64 -22
  114. package/content/references/base/components.md +3 -3
  115. package/content/references/base/connectors.md +79 -136
  116. package/content/references/base/controllers.md +12 -12
  117. package/content/references/base/datasources-reference.md +600 -0
  118. package/content/references/base/datasources.md +84 -444
  119. package/content/references/base/dependency-injection.md +25 -46
  120. package/content/references/base/filter-system/application-usage.md +95 -123
  121. package/content/references/base/filter-system/array-operators.md +33 -43
  122. package/content/references/base/filter-system/comparison-operators.md +55 -63
  123. package/content/references/base/filter-system/default-filter.md +144 -350
  124. package/content/references/base/filter-system/fields-order-pagination.md +116 -148
  125. package/content/references/base/filter-system/index.md +114 -253
  126. package/content/references/base/filter-system/json-filtering.md +52 -181
  127. package/content/references/base/filter-system/list-operators.md +28 -44
  128. package/content/references/base/filter-system/logical-operators.md +69 -114
  129. package/content/references/base/filter-system/null-operators.md +41 -98
  130. package/content/references/base/filter-system/pattern-matching.md +48 -51
  131. package/content/references/base/filter-system/quick-reference.md +93 -196
  132. package/content/references/base/filter-system/range-operators.md +22 -38
  133. package/content/references/base/filter-system/tips.md +70 -133
  134. package/content/references/base/filter-system/use-cases.md +173 -232
  135. package/content/references/base/grpc-controllers.md +53 -17
  136. package/content/references/base/index.md +5 -3
  137. package/content/references/base/middlewares.md +43 -28
  138. package/content/references/base/models-reference.md +886 -0
  139. package/content/references/base/models.md +81 -1452
  140. package/content/references/base/providers.md +8 -8
  141. package/content/references/base/repositories/advanced.md +281 -419
  142. package/content/references/base/repositories/index.md +84 -644
  143. package/content/references/base/repositories/mixins.md +25 -21
  144. package/content/references/base/repositories/relations.md +194 -375
  145. package/content/references/base/repositories/soft-deletable.md +67 -55
  146. package/content/references/base/secrets.md +267 -0
  147. package/content/references/base/services.md +8 -6
  148. package/content/references/configuration/environment-variables.md +73 -21
  149. package/content/references/configuration/index.md +51 -31
  150. package/content/references/index.md +1 -1
  151. package/content/references/quick-reference.md +3 -16
  152. package/content/references/utilities/crypto.md +35 -76
  153. package/content/references/utilities/date.md +33 -73
  154. package/content/references/utilities/duration.md +85 -0
  155. package/content/references/utilities/index.md +6 -2
  156. package/content/references/utilities/jsx-reference.md +298 -0
  157. package/content/references/utilities/jsx.md +82 -525
  158. package/content/references/utilities/module.md +81 -61
  159. package/content/references/utilities/parse.md +34 -64
  160. package/content/references/utilities/performance.md +33 -58
  161. package/content/references/utilities/promise.md +28 -62
  162. package/content/references/utilities/request.md +58 -218
  163. package/content/references/utilities/retry.md +139 -0
  164. package/content/references/utilities/schema.md +43 -137
  165. package/content/references/utilities/statuses-reference.md +361 -0
  166. package/content/references/utilities/statuses.md +63 -667
  167. package/dist/mcp-server/index.js +0 -0
  168. package/dist/mcp-server/tools/github/list-project-files.tool.d.ts +1 -1
  169. package/dist/mcp-server/tools/github/list-project-files.tool.d.ts.map +1 -1
  170. package/dist/mcp-server/tools/github/list-project-files.tool.js +3 -3
  171. package/dist/mcp-server/tools/github/search-code.tool.js +1 -1
  172. package/dist/mcp-server/tools/github/verify-dependencies.tool.js +1 -1
  173. package/dist/mcp-server/tools/github/view-source-file.tool.js +1 -1
  174. package/package.json +24 -23
@@ -1,670 +1,135 @@
1
- # Philosophy: The Best of Two Worlds
2
-
3
- IGNIS combines the structured, enterprise-grade development experience of **LoopBack 4** with the speed and simplicity of **Hono**.
4
-
5
- <div class="philosophy-hero">
6
- <div class="hero-content">
7
- <div class="hero-text">
8
- <strong>Enterprise patterns. Hono performance. Modern simplicity.</strong>
9
- <span>The framework for developers who want structure without the weight.</span>
10
- </div>
11
- </div>
12
- </div>
13
-
14
- ## The Framework Landscape
15
-
16
- When building REST APIs and server applications with Node.js/Bun, developers choose from three categories of frameworks:
17
-
18
- <div class="landscape-grid">
19
-
20
- <div class="landscape-card minimal">
21
- <div class="card-header">
22
- <h3>Express, Hono, Fastify, Koa</h3>
23
- <span class="card-badge">Minimal</span>
24
- </div>
25
- <p class="card-motto">Freedom, speed, flexibility</p>
26
- <div class="card-traits">
27
- <span class="trait-good">Lightning fast</span>
28
- <span class="trait-good">Total control</span>
29
- <span class="trait-good">Tiny footprint</span>
30
- <span class="trait-warn">DIY architecture</span>
31
- <span class="trait-warn">Manual patterns</span>
32
- </div>
33
- </div>
34
-
35
- <div class="landscape-card balanced">
36
- <div class="card-header">
37
- <h3>IGNIS, Ts.ED</h3>
38
- <span class="card-badge">Balanced</span>
39
- </div>
40
- <p class="card-motto">Structure with lighter footprint</p>
41
- <div class="card-traits">
42
- <span class="trait-good">Lighter weight</span>
43
- <span class="trait-good">Single file build</span>
44
- <span class="trait-good">Fast startup</span>
45
- <span class="trait-good">ESM native</span>
46
- <span class="trait-good">Modern stack</span>
47
- </div>
48
- </div>
49
-
50
- <div class="landscape-card enterprise">
51
- <div class="card-header">
52
- <h3>NestJS, LoopBack 4, AdonisJS</h3>
53
- <span class="card-badge">Enterprise</span>
54
- </div>
55
- <p class="card-motto">Structure, patterns, conventions</p>
56
- <div class="card-traits">
57
- <span class="trait-good">Battle-tested</span>
58
- <span class="trait-good">Rich ecosystem</span>
59
- <span class="trait-good">Strong typing</span>
60
- <span class="trait-warn">Heavy footprint</span>
61
- <span class="trait-warn">Steep learning</span>
62
- </div>
63
- </div>
64
-
65
- </div>
66
-
67
- ## Honest Comparison
68
-
69
- ### Performance & Runtime
70
-
71
- <div class="perf-section">
72
- <div class="perf-chart">
73
-
74
- <div class="perf-row">
75
- <div class="perf-info">
76
- <span class="perf-name">Hono</span>
77
- <span class="perf-meta">~10ms startup · ~20MB</span>
78
- </div>
79
- <div class="perf-bar-container">
80
- <div class="perf-bar hono" style="--width: 100%">
81
- <span class="perf-value">~150k req/s</span>
82
- </div>
83
- </div>
84
- <div class="perf-runtime">Bun, Node, Deno, CF Workers</div>
85
- </div>
86
-
87
- <div class="perf-row highlight">
88
- <div class="perf-info">
89
- <span class="perf-name">IGNIS</span>
90
- <span class="perf-meta">~30ms startup · ~30MB</span>
91
- </div>
92
- <div class="perf-bar-container">
93
- <div class="perf-bar ignis" style="--width: 93%">
94
- <span class="perf-value">~140k req/s</span>
95
- </div>
96
- </div>
97
- <div class="perf-runtime">Bun, Node</div>
98
- </div>
99
-
100
- <div class="perf-row">
101
- <div class="perf-info">
102
- <span class="perf-name">Fastify</span>
103
- <span class="perf-meta">~50ms startup · ~40MB</span>
104
- </div>
105
- <div class="perf-bar-container">
106
- <div class="perf-bar fastify" style="--width: 53%">
107
- <span class="perf-value">~80k req/s</span>
108
- </div>
109
- </div>
110
- <div class="perf-runtime">Node only</div>
111
- </div>
112
-
113
- <div class="perf-row">
114
- <div class="perf-info">
115
- <span class="perf-name">NestJS</span>
116
- <span class="perf-meta">~500ms startup · ~100MB</span>
117
- </div>
118
- <div class="perf-bar-container">
119
- <div class="perf-bar nestjs" style="--width: 17%">
120
- <span class="perf-value">~25k req/s</span>
121
- </div>
122
- </div>
123
- <div class="perf-runtime">Node (Bun experimental)</div>
124
- </div>
125
-
126
- <div class="perf-row">
127
- <div class="perf-info">
128
- <span class="perf-name">LoopBack 4</span>
129
- <span class="perf-meta">~800ms startup · ~120MB</span>
130
- </div>
131
- <div class="perf-bar-container">
132
- <div class="perf-bar loopback" style="--width: 13%">
133
- <span class="perf-value">~20k req/s</span>
134
- </div>
135
- </div>
136
- <div class="perf-runtime">Node only</div>
137
- </div>
138
-
139
- <div class="perf-row">
140
- <div class="perf-info">
141
- <span class="perf-name">Express</span>
142
- <span class="perf-meta">~100ms startup · ~50MB</span>
143
- </div>
144
- <div class="perf-bar-container">
145
- <div class="perf-bar express" style="--width: 10%">
146
- <span class="perf-value">~15k req/s</span>
147
- </div>
148
- </div>
149
- <div class="perf-runtime">Node only</div>
150
- </div>
151
-
152
- </div>
153
- <p class="perf-footnote">* Benchmarks are approximate and vary by use case</p>
154
- </div>
155
-
156
- ### Developer Experience
157
-
158
- <div class="comparison-table-wrapper">
159
- <table class="comparison-table">
160
- <thead>
161
- <tr>
162
- <th>Aspect</th>
163
- <th>Minimal (Hono/Express)</th>
164
- <th>Enterprise (NestJS/LoopBack)</th>
165
- <th class="highlight-col">IGNIS</th>
166
- </tr>
167
- </thead>
168
- <tbody>
169
- <tr>
170
- <td class="feature-name">Setup Time</td>
171
- <td><span class="status-good">5 minutes</span></td>
172
- <td><span class="status-neutral">30+ minutes</span></td>
173
- <td class="highlight-col"><span class="status-best">10 minutes</span></td>
174
- </tr>
175
- <tr>
176
- <td class="feature-name">Learning Curve</td>
177
- <td><span class="status-good">Low</span></td>
178
- <td><span class="status-neutral">High</span></td>
179
- <td class="highlight-col"><span class="status-best">Medium</span></td>
180
- </tr>
181
- <tr>
182
- <td class="feature-name">Boilerplate</td>
183
- <td><span class="status-good">Minimal</span></td>
184
- <td><span class="status-neutral">Heavy</span></td>
185
- <td class="highlight-col"><span class="status-best">Moderate</span></td>
186
- </tr>
187
- <tr>
188
- <td class="feature-name">Type Safety</td>
189
- <td><span class="status-neutral">Manual</span></td>
190
- <td><span class="status-good">Excellent</span></td>
191
- <td class="highlight-col"><span class="status-best">Excellent</span></td>
192
- </tr>
193
- <tr>
194
- <td class="feature-name">IDE Support</td>
195
- <td><span class="status-neutral">Basic</span></td>
196
- <td><span class="status-good">Excellent</span></td>
197
- <td class="highlight-col"><span class="status-good">Good</span></td>
198
- </tr>
199
- <tr>
200
- <td class="feature-name">Documentation</td>
201
- <td><span class="status-good">Good</span></td>
202
- <td><span class="status-good">Excellent</span></td>
203
- <td class="highlight-col"><span class="status-neutral">Growing</span></td>
204
- </tr>
205
- <tr>
206
- <td class="feature-name">Flexibility vs Convention</td>
207
- <td><span class="status-good">Total Freedom</span></td>
208
- <td><span class="status-neutral">Opinionated</span></td>
209
- <td class="highlight-col"><span class="status-best">Guided Flexibility</span></td>
210
- </tr>
211
- </tbody>
212
- </table>
213
- </div>
214
-
215
- ### Architecture & Patterns
216
-
217
- <div class="comparison-table-wrapper">
218
- <table class="comparison-table">
219
- <thead>
220
- <tr>
221
- <th>Feature</th>
222
- <th>Minimal</th>
223
- <th>Enterprise</th>
224
- <th class="highlight-col">IGNIS</th>
225
- </tr>
226
- </thead>
227
- <tbody>
228
- <tr>
229
- <td class="feature-name">Dependency Injection</td>
230
- <td><span class="status-neutral">Manual</span></td>
231
- <td><span class="status-good">Built-in (full-featured)</span></td>
232
- <td class="highlight-col"><span class="status-good">Built-in (simpler)</span></td>
233
- </tr>
234
- <tr>
235
- <td class="feature-name">Layered Architecture</td>
236
- <td><span class="status-neutral">DIY</span></td>
237
- <td><span class="status-good">Enforced</span></td>
238
- <td class="highlight-col"><span class="status-good">Guided</span></td>
239
- </tr>
240
- <tr>
241
- <td class="feature-name">Repository Pattern</td>
242
- <td><span class="status-neutral">DIY</span></td>
243
- <td><span class="status-good">Built-in</span></td>
244
- <td class="highlight-col"><span class="status-good">Built-in</span></td>
245
- </tr>
246
- <tr>
247
- <td class="feature-name">Validation</td>
248
- <td><span class="status-neutral">3rd party</span></td>
249
- <td><span class="status-good">Built-in (class-validator)</span></td>
250
- <td class="highlight-col"><span class="status-good">Zod</span></td>
251
- </tr>
252
- <tr>
253
- <td class="feature-name">OpenAPI/Swagger</td>
254
- <td><span class="status-neutral">3rd party</span></td>
255
- <td><span class="status-good">Built-in</span></td>
256
- <td class="highlight-col"><span class="status-good">Built-in</span></td>
257
- </tr>
258
- <tr>
259
- <td class="feature-name">Authentication</td>
260
- <td><span class="status-neutral">DIY</span></td>
261
- <td><span class="status-good">Passport + Guards</span></td>
262
- <td class="highlight-col"><span class="status-good">Component</span></td>
263
- </tr>
264
- </tbody>
265
- </table>
266
- </div>
267
-
268
- ### Ecosystem & Maturity
269
-
270
- <div class="comparison-table-wrapper">
271
- <table class="comparison-table">
272
- <thead>
273
- <tr>
274
- <th>Aspect</th>
275
- <th>Hono</th>
276
- <th>NestJS</th>
277
- <th class="highlight-col">IGNIS</th>
278
- </tr>
279
- </thead>
280
- <tbody>
281
- <tr>
282
- <td class="feature-name">GitHub Stars</td>
283
- <td><span class="status-good">~20k</span></td>
284
- <td><span class="status-good">~70k</span></td>
285
- <td class="highlight-col"><span class="status-neutral">New</span></td>
286
- </tr>
287
- <tr>
288
- <td class="feature-name">Weekly Downloads</td>
289
- <td><span class="status-good">~500k</span></td>
290
- <td><span class="status-good">~3M</span></td>
291
- <td class="highlight-col"><span class="status-neutral">Starting</span></td>
292
- </tr>
293
- <tr>
294
- <td class="feature-name">First Release</td>
295
- <td><span class="status-good">2021</span></td>
296
- <td><span class="status-good">2017</span></td>
297
- <td class="highlight-col"><span class="status-neutral">2025</span></td>
298
- </tr>
299
- <tr>
300
- <td class="feature-name">Production Ready</td>
301
- <td><span class="status-good">Yes</span></td>
302
- <td><span class="status-good">Yes</span></td>
303
- <td class="highlight-col"><span class="status-neutral">Early stage</span></td>
304
- </tr>
305
- <tr>
306
- <td class="feature-name">Corporate Backing</td>
307
- <td><span class="status-good">Cloudflare</span></td>
308
- <td><span class="status-good">Trilon</span></td>
309
- <td class="highlight-col"><span class="status-neutral">Independent</span></td>
310
- </tr>
311
- <tr>
312
- <td class="feature-name">Official Plugins</td>
313
- <td><span class="status-good">20+</span></td>
314
- <td><span class="status-good">50+</span></td>
315
- <td class="highlight-col"><span class="status-neutral">Core only</span></td>
316
- </tr>
317
- <tr>
318
- <td class="feature-name">Community Packages</td>
319
- <td><span class="status-good">Growing</span></td>
320
- <td><span class="status-good">Extensive</span></td>
321
- <td class="highlight-col"><span class="status-neutral">Few</span></td>
322
- </tr>
323
- <tr>
324
- <td class="feature-name">LTS / Support</td>
325
- <td><span class="status-good">Active</span></td>
326
- <td><span class="status-good">Enterprise LTS</span></td>
327
- <td class="highlight-col"><span class="status-neutral">Planning</span></td>
328
- </tr>
329
- </tbody>
330
- </table>
331
- </div>
332
-
333
- ## The IGNIS Synthesis
334
-
335
- <div class="synthesis">
336
-
337
- <div class="synthesis-box source">
338
- <h4>LoopBack 4</h4>
339
- <ul>
340
- <li>DI Container</li>
341
- <li>Layered Architecture</li>
342
- <li>Components</li>
343
- <li>Decorators</li>
344
- </ul>
345
- </div>
346
-
347
- <div class="synthesis-operator">+</div>
348
-
349
- <div class="synthesis-box source">
350
- <h4>Hono</h4>
351
- <ul>
352
- <li>Blazing Speed</li>
353
- <li>Minimal Core</li>
354
- <li>Modern API</li>
355
- <li>Multi-Runtime</li>
356
- </ul>
357
- </div>
358
-
359
- <div class="synthesis-operator">=</div>
360
-
361
- <div class="synthesis-box result">
362
- <h4>IGNIS</h4>
363
- <ul>
364
- <li>DI + Speed</li>
365
- <li>Structure + Simplicity</li>
366
- <li>Patterns + Performance</li>
367
- <li>Enterprise + Edge</li>
368
- </ul>
369
- </div>
370
-
371
- </div>
372
-
373
- ## What Each Approach Excels At
374
-
375
- <div class="excel-section">
376
-
377
- <div class="excel-card minimal">
378
- <h3>Minimal Frameworks</h3>
379
- <p class="excel-subtitle">Hono, Express, Fastify</p>
380
- <div class="excel-pros">
381
- <h4>Strengths</h4>
382
- <ul>
383
- <li>Maximum raw performance</li>
384
- <li>Complete architectural freedom</li>
385
- <li>Fastest time to first endpoint</li>
386
- <li>Smallest bundle/memory footprint</li>
387
- <li>Perfect for edge/serverless</li>
388
- <li>Huge ecosystem (Express has 50k+ packages)</li>
389
- </ul>
390
- </div>
391
- <div class="excel-cons">
392
- <h4>Trade-offs</h4>
393
- <ul>
394
- <li>Architecture decisions on your shoulders</li>
395
- <li>Patterns must be implemented manually</li>
396
- <li>Code structure varies per developer</li>
397
- <li>Harder to maintain as project grows</li>
398
- </ul>
399
- </div>
400
- </div>
401
-
402
- <div class="excel-card ignis">
403
- <h3>IGNIS</h3>
404
- <p class="excel-subtitle">The balanced choice</p>
405
- <div class="excel-pros">
406
- <h4>Strengths</h4>
407
- <ul>
408
- <li>Enterprise patterns with Hono's performance</li>
409
- <li>Lighter weight than NestJS/LoopBack</li>
410
- <li>Modern TypeScript-first with Zod validation</li>
411
- <li>ESM native, Bun optimized</li>
412
- <li>Single file executable build with Bun</li>
413
- <li>Built on proven Hono foundation</li>
414
- <li>Scales from solo dev to large teams</li>
415
- </ul>
416
- </div>
417
- <div class="excel-cons">
418
- <h4>Considerations</h4>
419
- <ul>
420
- <li>Growing community and ecosystem</li>
421
- <li>Documentation expanding continuously</li>
422
- <li>Early adopter opportunity</li>
423
- </ul>
424
- </div>
425
- </div>
426
-
427
- <div class="excel-card enterprise">
428
- <h3>Enterprise Frameworks</h3>
429
- <p class="excel-subtitle">NestJS, LoopBack, AdonisJS</p>
430
- <div class="excel-pros">
431
- <h4>Strengths</h4>
432
- <ul>
433
- <li>Battle-tested at massive scale</li>
434
- <li>Comprehensive, mature documentation</li>
435
- <li>Huge community & ecosystem (NestJS ~3M weekly downloads)</li>
436
- <li>Excellent for large teams & long-term projects</li>
437
- <li>Strong conventions prevent architectural chaos</li>
438
- <li>Easy to hire developers who know the framework</li>
439
- <li>Extensive third-party integrations</li>
440
- </ul>
441
- </div>
442
- <div class="excel-cons">
443
- <h4>Trade-offs</h4>
444
- <ul>
445
- <li>Higher resource consumption</li>
446
- <li>Steeper learning curve</li>
447
- <li>More boilerplate code</li>
448
- <li>Slower startup times</li>
449
- </ul>
450
- </div>
451
- </div>
452
-
453
- </div>
454
-
455
- ## When Should You Use IGNIS?
456
-
457
- <div class="decision-matrix">
458
-
459
- <div class="decision-row yes">
460
- <div class="decision-scenario">Medium API (10-100 endpoints)</div>
461
- <div class="decision-verdict">✓ Yes</div>
462
- <div class="decision-reason">Structure prevents spaghetti code</div>
463
- </div>
464
-
465
- <div class="decision-row yes">
466
- <div class="decision-scenario">Any team size (solo to large)</div>
467
- <div class="decision-verdict">✓ Yes</div>
468
- <div class="decision-reason">Scales from solo dev to enterprise teams</div>
469
- </div>
470
-
471
- <div class="decision-row yes">
472
- <div class="decision-scenario">Want DI without NestJS/LoopBack weight</div>
473
- <div class="decision-verdict">✓ Yes</div>
474
- <div class="decision-reason">Lighter alternative, ESM native, enterprise patterns</div>
475
- </div>
476
-
477
- <div class="decision-row yes">
478
- <div class="decision-scenario">Coming from NestJS/LoopBack</div>
479
- <div class="decision-verdict">✓ Yes</div>
480
- <div class="decision-reason">Familiar patterns, better performance</div>
481
- </div>
482
-
483
- <div class="decision-row yes">
484
- <div class="decision-scenario">Need database + auth + OpenAPI</div>
485
- <div class="decision-verdict">✓ Yes</div>
486
- <div class="decision-reason">All built-in, ready to use</div>
487
- </div>
488
-
489
- <div class="decision-row yes">
490
- <div class="decision-scenario">Performance is important</div>
491
- <div class="decision-verdict">✓ Yes</div>
492
- <div class="decision-reason">Hono's speed with structure</div>
493
- </div>
494
-
495
- <div class="decision-row yes">
496
- <div class="decision-scenario">Bun-first development</div>
497
- <div class="decision-verdict">✓ Yes</div>
498
- <div class="decision-reason">Native Bun support, single file executable build</div>
499
- </div>
500
-
501
- <div class="decision-row yes">
502
- <div class="decision-scenario">Growing from Hono project</div>
503
- <div class="decision-verdict">✓ Yes</div>
504
- <div class="decision-reason">Easy migration, same foundation</div>
505
- </div>
506
-
507
- <div class="decision-row maybe">
508
- <div class="decision-scenario">3-5 endpoints, solo dev</div>
509
- <div class="decision-verdict">? Maybe</div>
510
- <div class="decision-reason">Start with Hono, migrate later if needed</div>
511
- </div>
512
-
513
- <div class="decision-row no">
514
- <div class="decision-scenario">Quick prototype / MVP</div>
515
- <div class="decision-verdict">✗ No</div>
516
- <div class="decision-reason">Use plain Hono for speed</div>
517
- </div>
518
-
519
- <div class="decision-row no">
520
- <div class="decision-scenario">Simple proxy / webhook</div>
521
- <div class="decision-verdict">✗ No</div>
522
- <div class="decision-reason">Too much structure for simple tasks</div>
523
- </div>
524
-
525
- </div>
526
-
527
- ## Perfect For
528
-
529
- <div class="perfect-grid">
530
-
531
- <div class="perfect-card">
532
- <h4>Production APIs</h4>
533
- <p>10-100+ endpoints with enterprise patterns. Controllers, services, repositories - all built-in and ready.</p>
534
- </div>
535
-
536
- <div class="perfect-card">
537
- <h4>Teams of Any Size</h4>
538
- <p>Solo developers to large teams. Consistent patterns, DI for testing, scales with your needs.</p>
539
- </div>
540
-
541
- <div class="perfect-card">
542
- <h4>Performance-Critical Apps</h4>
543
- <p>Hono's speed with enterprise structure. ~140k req/s with full DI, validation, and OpenAPI.</p>
544
- </div>
545
-
546
- <div class="perfect-card">
547
- <h4>Modern Bun Projects</h4>
548
- <p>ESM native, Bun optimized. Build to single executable file for easy deployment.</p>
549
- </div>
550
-
551
- </div>
552
-
553
- ## Choose the Right Tool
554
-
555
- <div class="choose-section">
556
-
557
- <div class="choose-card">
558
- <h3>Use Hono/Fastify/Express When:</h3>
559
- <ul>
560
- <li><strong>Simple webhook handler</strong> - No structure overhead needed</li>
561
- <li><strong>Edge/serverless functions</strong> - Minimal cold start, tiny bundle</li>
562
- <li><strong>Rapid prototyping</strong> - Get something running in minutes</li>
563
- <li><strong>1-5 endpoint microservices</strong> - Structure adds complexity</li>
564
- <li><strong>Maximum control needed</strong> - No conventions to follow</li>
565
- <li><strong>Learning web development</strong> - Simpler mental model</li>
566
- </ul>
567
- </div>
568
-
569
- <div class="choose-card">
570
- <h3>Use NestJS/LoopBack When:</h3>
571
- <ul>
572
- <li><strong>Large team (10+ developers)</strong> - Strong conventions prevent chaos</li>
573
- <li><strong>Enterprise with strict standards</strong> - Mature, battle-tested, auditable</li>
574
- <li><strong>Extensive ecosystem needed</strong> - Many official and community modules</li>
575
- <li><strong>Complex microservices</strong> - Built-in support for messaging, CQRS</li>
576
- <li><strong>Hiring is a priority</strong> - Large talent pool familiar with it</li>
577
- <li><strong>Long-term support critical</strong> - Corporate backing, LTS versions</li>
578
- </ul>
579
- </div>
580
-
581
- <div class="choose-card highlight">
582
- <h3>Use IGNIS When:</h3>
583
- <ul>
584
- <li><strong>Any size API (10-100+ endpoints)</strong> - Structure without heavy overhead</li>
585
- <li><strong>Any team size</strong> - Scales from solo dev to enterprise teams</li>
586
- <li><strong>Performance matters</strong> - Hono's speed with enterprise patterns</li>
587
- <li><strong>Modern stack preferred</strong> - ESM native, Bun optimized, TypeScript-first</li>
588
- <li><strong>Coming from NestJS/LoopBack</strong> - Familiar patterns, better performance</li>
589
- <li><strong>Need built-in features</strong> - DI, validation, OpenAPI, auth ready to use</li>
590
- </ul>
591
- </div>
592
-
593
- </div>
594
-
595
- ## Why Choose IGNIS
596
-
597
- <div class="tradeoffs">
598
-
599
- <div class="tradeoff gain">
600
- <h3>What You Get</h3>
601
- <ul>
602
- <li><span class="highlight-text">~5x faster</span> than NestJS/LoopBack</li>
603
- <li><span class="highlight-text">Built-in DI</span>, validation, OpenAPI, auth</li>
604
- <li><span class="highlight-text">Structured codebase</span> from day one</li>
605
- <li><span class="highlight-text">Easier testing</span> with dependency injection</li>
606
- <li><span class="highlight-text">Single file build</span> - compile to one executable with Bun</li>
607
- <li><span class="highlight-text">Scales</span> from solo dev to enterprise teams</li>
608
- </ul>
609
- </div>
610
-
611
- <div class="tradeoff cost">
612
- <h3>What's Growing</h3>
613
- <ul>
614
- <li><span class="highlight-text">Community</span> - expanding every day</li>
615
- <li><span class="highlight-text">Documentation</span> - continuously improving</li>
616
- <li><span class="highlight-text">Ecosystem</span> - core features ready, plugins coming</li>
617
- <li><span class="highlight-text">LTS</span> - planning for long-term support</li>
618
- </ul>
619
- </div>
620
-
621
- </div>
622
-
623
- <div class="honest-box">
624
- <h4>Summary</h4>
625
- <div class="honest-grid">
626
- <div class="honest-item"><strong>Performance:</strong> Near Hono speed with enterprise features</div>
627
- <div class="honest-item"><strong>Architecture:</strong> Clean DI, layered structure, patterns</div>
628
- <div class="honest-item"><strong>Features:</strong> Validation, OpenAPI, auth built-in</div>
629
- <div class="honest-item"><strong>Modern:</strong> ESM native, single file build, TypeScript-first</div>
630
- <div class="honest-item"><strong>Scalable:</strong> Solo dev to enterprise teams</div>
631
- <div class="honest-item"><strong>Growing:</strong> Active development, expanding ecosystem</div>
632
- </div>
633
- </div>
634
-
635
- <div class="cta-card">
636
- <p><strong>IGNIS</strong> is ideal for developers who want enterprise patterns with modern performance. Start building today with structure that scales.</p>
637
- </div>
638
-
639
- ## Next Steps
640
-
641
- <div class="next-steps-grid">
642
-
643
- <a href="./setup" class="next-card">
644
- <span class="next-num">1</span>
645
- <div class="next-content">
646
- <h4>Check Prerequisites</h4>
647
- <p>Install required tools</p>
648
- </div>
649
- <span class="next-arrow">→</span>
650
- </a>
651
-
652
- <a href="../tutorials/complete-installation" class="next-card">
653
- <span class="next-num">2</span>
654
- <div class="next-content">
655
- <h4>Complete Installation</h4>
656
- <p>Build your first endpoint</p>
657
- </div>
658
- <span class="next-arrow">→</span>
659
- </a>
660
-
661
- <a href="../tutorials/building-a-crud-api" class="next-card">
662
- <span class="next-num">3</span>
663
- <div class="next-content">
664
- <h4>CRUD Tutorial</h4>
665
- <p>Build a complete API</p>
666
- </div>
667
- <span class="next-arrow">→</span>
668
- </a>
669
-
670
- </div>
1
+ # Philosophy
2
+
3
+ Building a REST API on Node or Bun means picking a side. Minimal frameworks give you speed and a
4
+ blank page. Enterprise frameworks give you structure, and ask you to pay for it in startup time
5
+ and ceremony. IGNIS is the third option: LoopBack 4's architecture, running on Hono's engine.
6
+
7
+ ## The three-way landscape
8
+
9
+ | Category | Frameworks | What you trade |
10
+ |---|---|---|
11
+ | Minimal | Express, Hono, Fastify, Koa | Speed and freedom for do-it-yourself architecture |
12
+ | Balanced | IGNIS, Ts.ED | A lighter footprint for slightly less ecosystem maturity |
13
+ | Enterprise | NestJS, LoopBack 4, AdonisJS | Proven structure for a heavier footprint and a steeper learning curve |
14
+
15
+ IGNIS sits in the balanced row on purpose.
16
+
17
+ ## Why IGNIS exists
18
+
19
+ Three frameworks shaped the decision, and each fell short in a specific way.
20
+
21
+ **LoopBack 4** had the right architectural ideas: decorators, the `@repository` pattern, a
22
+ DataSource abstraction, a Component system, a Booter system. But it runs at roughly 15-20k
23
+ req/s, and IBM has stopped developing it.
24
+
25
+ **NestJS** is popular and full-featured. But it wraps Express or Fastify behind an adapter layer.
26
+ That layer is where its overhead comes from: it tops out around 25k req/s, and the framework asks
27
+ for a lot of ceremony along the way.
28
+
29
+ **Hono** itself is fast, around 140k req/s. But it is deliberately unopinionated: a router and
30
+ middleware, and nothing else. No dependency injection, no repository pattern, no convention for
31
+ where code lives.
32
+
33
+ That's fine for one microservice, and painful once an API grows past a handful of endpoints.
34
+
35
+ IGNIS keeps LoopBack 4's architecture and swaps its engine for Hono's. The aim: hold the ~140k
36
+ req/s ballpark while giving a growing API the structure LoopBack 4 offered. Concretely, that
37
+ means:
38
+
39
+ - A standalone dependency injection container (`inversion`, about 350 lines), with `@inject`,
40
+ singleton and transient scopes, and constructor injection.
41
+ - The same layered shape LoopBack 4 popularized: Controller -> Service (optional) -> Repository ->
42
+ DataSource -> PostgreSQL.
43
+ - Request validation and OpenAPI docs generated from the same Zod schema, so they can't drift
44
+ apart.
45
+ - A convention-based boot system that auto-discovers controllers, services, repositories, and
46
+ data sources by file suffix.
47
+
48
+ ## How it performs
49
+
50
+ The numbers below are approximate and vary by workload, but the shape holds: IGNIS sits close to
51
+ Hono, both several times faster than the enterprise frameworks it borrows its architecture from.
52
+
53
+ | Framework | Startup | Memory | Throughput | Runtimes |
54
+ |---|---|---|---|---|
55
+ | Hono | ~10ms | ~20MB | ~150k req/s | Bun, Node, Deno, Cloudflare Workers |
56
+ | IGNIS | ~30ms | ~30MB | ~140k req/s | Bun, Node |
57
+ | Fastify | ~50ms | ~40MB | ~80k req/s | Node only |
58
+ | Express | ~100ms | ~50MB | ~15k req/s | Node only |
59
+ | NestJS | ~500ms | ~100MB | ~25k req/s | Node (Bun experimental) |
60
+ | LoopBack 4 | ~800ms | ~120MB | ~20k req/s | Node only |
61
+
62
+ ## What you get, compared
63
+
64
+ | Aspect | Minimal (Hono, Express) | Enterprise (NestJS, LoopBack 4) | IGNIS |
65
+ |---|---|---|---|
66
+ | Setup time | 5 minutes | 30+ minutes | 10 minutes |
67
+ | Learning curve | Low | High | Medium |
68
+ | Boilerplate | Minimal | Heavy | Moderate |
69
+ | Type safety | Manual | Excellent | Excellent |
70
+ | IDE support | Basic | Excellent | Good |
71
+ | Dependency injection | Manual | Built-in, full-featured | Built-in, ~350-line container |
72
+ | Layered architecture | DIY | Enforced | Guided |
73
+ | Repository pattern | DIY | Built-in | Built-in |
74
+ | Validation | Third-party | Built-in (class-validator) | Built-in (Zod) |
75
+ | OpenAPI / Swagger | Third-party | Built-in | Built-in |
76
+ | Authentication | DIY | Passport + guards | Component |
77
+
78
+ Minimal frameworks give you total freedom. Enterprise frameworks are opinionated. IGNIS aims for a
79
+ third mode - guided flexibility: sensible conventions, with an override for every one of them.
80
+
81
+ ## Ecosystem, today
82
+
83
+ | Aspect | Hono | NestJS | IGNIS |
84
+ |---|---|---|---|
85
+ | GitHub stars | ~20k | ~70k | New |
86
+ | Weekly downloads | ~500k | ~3M | Starting |
87
+ | First release | 2021 | 2017 | 2025 |
88
+ | Production ready | Yes | Yes | Early stage |
89
+ | Corporate backing | Cloudflare | Trilon | Independent |
90
+ | Official plugins | 20+ | 50+ | Core only |
91
+ | Community packages | Growing | Extensive | Few |
92
+ | LTS / support | Active | Enterprise LTS | Planning |
93
+
94
+ IGNIS is honest about where it stands: the architecture is proven, because it is LoopBack 4's. The
95
+ framework carrying it is new.
96
+
97
+ ## When to use IGNIS, and when not to
98
+
99
+ | Situation | Verdict | Why |
100
+ |---|---|---|
101
+ | Medium API, 10-100 endpoints | Yes | Structure prevents spaghetti code |
102
+ | Any team size, solo to large | Yes | The same patterns scale either way |
103
+ | Want DI without NestJS/LoopBack 4's weight | Yes | Lighter container, ESM native |
104
+ | Coming from NestJS or LoopBack 4 | Yes | Familiar patterns, better performance |
105
+ | Need a database, auth, and OpenAPI docs | Yes | All built in, ready to use |
106
+ | Performance matters | Yes | Hono's speed with structure on top |
107
+ | Bun-first development | Yes | Native Bun support |
108
+ | Growing out of a plain Hono project | Yes | Same foundation, incremental migration |
109
+ | 3-5 endpoints, solo developer | Maybe | Start with Hono; migrate later if it grows |
110
+ | Quick prototype or MVP | No | Plain Hono gets you to a first endpoint faster |
111
+ | Simple proxy or webhook handler | No | The structure is overhead you don't need |
112
+
113
+ Two situations push you toward an alternative even outside this table:
114
+
115
+ - Reach for **NestJS or LoopBack 4** if you need a large team (10+ developers) held to strict
116
+ enterprise standards, complex microservice patterns like CQRS, or a hiring pool that already
117
+ knows the framework.
118
+ - Reach for **plain Hono, Fastify, or Express** if you're learning web development from scratch or
119
+ deploying to the edge, where every millisecond of cold start counts.
120
+
121
+ ## What's still forming
122
+
123
+ Choosing IGNIS today trades a mature ecosystem for early access to a leaner enterprise framework.
124
+ You get the dependency injection container, the repository pattern, Zod validation, and OpenAPI
125
+ docs generated from the same schemas, running near Hono's throughput. IGNIS apps also compile to a
126
+ single executable with Bun.
127
+
128
+ What you don't get yet: a large plugin ecosystem, extensive community packages, or a formal LTS
129
+ release. The framework shipped in 2025 and is still building all three.
130
+
131
+ ## Next steps
132
+
133
+ 1. [Check prerequisites](./setup) - install the required tools.
134
+ 2. [Complete the installation](../tutorials/complete-installation) - build your first endpoint.
135
+ 3. [Build a CRUD API](../tutorials/building-a-crud-api) - build a complete API.