@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.
- package/README.md +14 -14
- package/content/best-practices/api-usage-examples.md +39 -19
- package/content/best-practices/architectural-patterns.md +24 -13
- package/content/best-practices/architecture-decisions.md +29 -16
- package/content/best-practices/code-style-standards/advanced-patterns.md +43 -31
- package/content/best-practices/code-style-standards/constants-configuration.md +19 -4
- package/content/best-practices/code-style-standards/control-flow.md +33 -1
- package/content/best-practices/code-style-standards/documentation.md +28 -8
- package/content/best-practices/code-style-standards/function-patterns.md +15 -4
- package/content/best-practices/code-style-standards/index.md +7 -2
- package/content/best-practices/code-style-standards/naming-conventions.md +27 -3
- package/content/best-practices/code-style-standards/route-definitions.md +9 -5
- package/content/best-practices/code-style-standards/tooling.md +14 -1
- package/content/best-practices/code-style-standards/type-safety.md +39 -6
- package/content/best-practices/common-pitfalls.md +59 -35
- package/content/best-practices/contribution-workflow.md +8 -4
- package/content/best-practices/data-modeling.md +78 -62
- package/content/best-practices/deployment-strategies.md +56 -19
- package/content/best-practices/error-handling.md +247 -153
- package/content/best-practices/index.md +6 -0
- package/content/best-practices/performance-optimization.md +26 -13
- package/content/best-practices/security-guidelines.md +35 -9
- package/content/best-practices/testing-strategies.md +7 -2
- package/content/best-practices/troubleshooting-tips.md +27 -17
- package/content/extensions/components/api-reference.md +109 -323
- package/content/extensions/components/authentication/api.md +489 -602
- package/content/extensions/components/authentication/errors.md +135 -498
- package/content/extensions/components/authentication/index.md +89 -801
- package/content/extensions/components/authentication/usage.md +231 -955
- package/content/extensions/components/authorization/api.md +991 -644
- package/content/extensions/components/authorization/errors.md +204 -208
- package/content/extensions/components/authorization/getting-started.md +227 -0
- package/content/extensions/components/authorization/index.md +88 -795
- package/content/extensions/components/authorization/usage.md +219 -528
- package/content/extensions/components/health-check.md +77 -243
- package/content/extensions/components/index.md +24 -90
- package/content/extensions/components/mail/api.md +553 -285
- package/content/extensions/components/mail/errors.md +76 -62
- package/content/extensions/components/mail/index.md +111 -463
- package/content/extensions/components/mail/usage.md +139 -173
- package/content/extensions/components/request-tracker.md +70 -173
- package/content/extensions/components/socket-io/api.md +462 -785
- package/content/extensions/components/socket-io/errors.md +49 -51
- package/content/extensions/components/socket-io/index.md +69 -372
- package/content/extensions/components/socket-io/usage.md +212 -105
- package/content/extensions/components/static-asset/api.md +461 -141
- package/content/extensions/components/static-asset/errors.md +121 -53
- package/content/extensions/components/static-asset/index.md +84 -606
- package/content/extensions/components/static-asset/usage.md +184 -299
- package/content/extensions/components/template/index.md +3 -3
- package/content/extensions/components/websocket/api.md +311 -404
- package/content/extensions/components/websocket/errors.md +47 -56
- package/content/extensions/components/websocket/index.md +75 -407
- package/content/extensions/components/websocket/usage.md +120 -338
- package/content/extensions/helpers/cron/index.md +52 -160
- package/content/extensions/helpers/crypto/index.md +67 -480
- package/content/extensions/helpers/crypto/reference.md +528 -0
- package/content/extensions/helpers/env/index.md +64 -178
- package/content/extensions/helpers/error/index.md +286 -196
- package/content/extensions/helpers/index.md +61 -47
- package/content/extensions/helpers/inversion/index.md +76 -550
- package/content/extensions/helpers/inversion/reference.md +530 -0
- package/content/extensions/helpers/kafka/admin.md +23 -3
- package/content/extensions/helpers/kafka/compile-binary.md +83 -52
- package/content/extensions/helpers/kafka/consumer.md +65 -28
- package/content/extensions/helpers/kafka/examples.md +46 -253
- package/content/extensions/helpers/kafka/index.md +55 -617
- package/content/extensions/helpers/kafka/producer.md +156 -22
- package/content/extensions/helpers/kafka/schema-registry.md +59 -79
- package/content/extensions/helpers/logger/hf-logger.md +220 -0
- package/content/extensions/helpers/logger/index.md +78 -552
- package/content/extensions/helpers/logger/pino.md +105 -0
- package/content/extensions/helpers/logger/reference.md +937 -0
- package/content/extensions/helpers/network/api.md +276 -195
- package/content/extensions/helpers/network/index.md +87 -524
- package/content/extensions/helpers/queue/index.md +80 -897
- package/content/extensions/helpers/queue/reference.md +494 -0
- package/content/extensions/helpers/redis/index.md +86 -640
- package/content/extensions/helpers/redis/reference.md +784 -0
- package/content/extensions/helpers/secrets/index.md +136 -0
- package/content/extensions/helpers/socket-io/api.md +325 -204
- package/content/extensions/helpers/socket-io/index.md +79 -429
- package/content/extensions/helpers/storage/api.md +584 -464
- package/content/extensions/helpers/storage/index.md +80 -573
- package/content/extensions/helpers/types/index.md +75 -495
- package/content/extensions/helpers/types/reference.md +689 -0
- package/content/extensions/helpers/uid/index.md +176 -189
- package/content/extensions/helpers/websocket/api.md +366 -214
- package/content/extensions/helpers/websocket/index.md +68 -503
- package/content/extensions/helpers/worker-thread/index.md +62 -396
- package/content/extensions/helpers/worker-thread/reference.md +428 -0
- package/content/extensions/index.md +38 -39
- package/content/extensions/src-details/mcp-server.md +96 -548
- package/content/guides/core-concepts/persistent/datasources.md +2 -2
- package/content/guides/core-concepts/persistent/index.md +5 -1
- package/content/guides/core-concepts/persistent/models.md +1 -1
- package/content/guides/core-concepts/persistent/pglite.md +218 -0
- package/content/guides/core-concepts/persistent/postgres-drivers.md +21 -15
- package/content/guides/core-concepts/persistent/search-meilisearch.md +22 -12
- package/content/guides/core-concepts/persistent/search-typesense.md +28 -16
- package/content/guides/core-concepts/persistent/sqlite.md +296 -0
- package/content/guides/core-concepts/persistent/transactions.md +12 -11
- package/content/guides/core-concepts/secrets-vault.md +177 -0
- package/content/guides/core-concepts/services.md +1 -1
- package/content/guides/get-started/5-minute-quickstart.md +59 -206
- package/content/guides/get-started/philosophy.md +135 -670
- package/content/guides/get-started/setup.md +53 -74
- package/content/guides/migrations/redis-helpers-migration.md +5 -4
- package/content/guides/migrations/scoped-rbac-migration.md +5 -5
- package/content/guides/migrations/unified-connectors-migration.md +8 -7
- package/content/guides/tutorials/ecommerce-api.md +3 -8
- package/content/guides/tutorials/realtime-chat.md +1 -1
- package/content/references/base/application.md +64 -22
- package/content/references/base/components.md +3 -3
- package/content/references/base/connectors.md +79 -136
- package/content/references/base/controllers.md +12 -12
- package/content/references/base/datasources-reference.md +600 -0
- package/content/references/base/datasources.md +84 -444
- package/content/references/base/dependency-injection.md +25 -46
- package/content/references/base/filter-system/application-usage.md +95 -123
- package/content/references/base/filter-system/array-operators.md +33 -43
- package/content/references/base/filter-system/comparison-operators.md +55 -63
- package/content/references/base/filter-system/default-filter.md +144 -350
- package/content/references/base/filter-system/fields-order-pagination.md +116 -148
- package/content/references/base/filter-system/index.md +114 -253
- package/content/references/base/filter-system/json-filtering.md +52 -181
- package/content/references/base/filter-system/list-operators.md +28 -44
- package/content/references/base/filter-system/logical-operators.md +69 -114
- package/content/references/base/filter-system/null-operators.md +41 -98
- package/content/references/base/filter-system/pattern-matching.md +48 -51
- package/content/references/base/filter-system/quick-reference.md +93 -196
- package/content/references/base/filter-system/range-operators.md +22 -38
- package/content/references/base/filter-system/tips.md +70 -133
- package/content/references/base/filter-system/use-cases.md +173 -232
- package/content/references/base/grpc-controllers.md +53 -17
- package/content/references/base/index.md +5 -3
- package/content/references/base/middlewares.md +43 -28
- package/content/references/base/models-reference.md +886 -0
- package/content/references/base/models.md +81 -1452
- package/content/references/base/providers.md +8 -8
- package/content/references/base/repositories/advanced.md +281 -419
- package/content/references/base/repositories/index.md +84 -644
- package/content/references/base/repositories/mixins.md +25 -21
- package/content/references/base/repositories/relations.md +194 -375
- package/content/references/base/repositories/soft-deletable.md +67 -55
- package/content/references/base/secrets.md +267 -0
- package/content/references/base/services.md +8 -6
- package/content/references/configuration/environment-variables.md +73 -21
- package/content/references/configuration/index.md +51 -31
- package/content/references/index.md +1 -1
- package/content/references/quick-reference.md +3 -16
- package/content/references/utilities/crypto.md +35 -76
- package/content/references/utilities/date.md +33 -73
- package/content/references/utilities/duration.md +85 -0
- package/content/references/utilities/index.md +6 -2
- package/content/references/utilities/jsx-reference.md +298 -0
- package/content/references/utilities/jsx.md +82 -525
- package/content/references/utilities/module.md +81 -61
- package/content/references/utilities/parse.md +34 -64
- package/content/references/utilities/performance.md +33 -58
- package/content/references/utilities/promise.md +28 -62
- package/content/references/utilities/request.md +58 -218
- package/content/references/utilities/retry.md +139 -0
- package/content/references/utilities/schema.md +43 -137
- package/content/references/utilities/statuses-reference.md +361 -0
- package/content/references/utilities/statuses.md +63 -667
- package/dist/mcp-server/index.js +0 -0
- package/dist/mcp-server/tools/github/list-project-files.tool.d.ts +1 -1
- package/dist/mcp-server/tools/github/list-project-files.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/github/list-project-files.tool.js +3 -3
- package/dist/mcp-server/tools/github/search-code.tool.js +1 -1
- package/dist/mcp-server/tools/github/verify-dependencies.tool.js +1 -1
- package/dist/mcp-server/tools/github/view-source-file.tool.js +1 -1
- package/package.json +24 -23
|
@@ -1,670 +1,135 @@
|
|
|
1
|
-
# Philosophy
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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.
|