@venizia/ignis-docs 0.2.1-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 (145) hide show
  1. package/content/best-practices/architectural-patterns.md +3 -3
  2. package/content/best-practices/code-style-standards/naming-conventions.md +1 -1
  3. package/content/best-practices/contribution-workflow.md +2 -2
  4. package/content/best-practices/error-handling.md +94 -89
  5. package/content/best-practices/security-guidelines.md +5 -5
  6. package/content/extensions/components/api-reference.md +22 -21
  7. package/content/extensions/components/authentication/api.md +64 -28
  8. package/content/extensions/components/authentication/errors.md +19 -5
  9. package/content/extensions/components/authentication/index.md +19 -18
  10. package/content/extensions/components/authentication/usage.md +55 -30
  11. package/content/extensions/components/authorization/api.md +351 -84
  12. package/content/extensions/components/authorization/errors.md +51 -17
  13. package/content/extensions/components/authorization/getting-started.md +227 -0
  14. package/content/extensions/components/authorization/index.md +24 -16
  15. package/content/extensions/components/authorization/usage.md +45 -21
  16. package/content/extensions/components/health-check.md +15 -9
  17. package/content/extensions/components/index.md +24 -90
  18. package/content/extensions/components/mail/api.md +105 -54
  19. package/content/extensions/components/mail/errors.md +12 -10
  20. package/content/extensions/components/mail/index.md +32 -13
  21. package/content/extensions/components/mail/usage.md +26 -18
  22. package/content/extensions/components/request-tracker.md +18 -14
  23. package/content/extensions/components/socket-io/api.md +377 -882
  24. package/content/extensions/components/socket-io/errors.md +49 -51
  25. package/content/extensions/components/socket-io/index.md +72 -88
  26. package/content/extensions/components/socket-io/usage.md +107 -117
  27. package/content/extensions/components/static-asset/api.md +83 -31
  28. package/content/extensions/components/static-asset/errors.md +18 -7
  29. package/content/extensions/components/static-asset/index.md +18 -11
  30. package/content/extensions/components/static-asset/usage.md +11 -6
  31. package/content/extensions/components/template/index.md +3 -3
  32. package/content/extensions/components/websocket/api.md +58 -27
  33. package/content/extensions/components/websocket/errors.md +3 -3
  34. package/content/extensions/components/websocket/index.md +8 -7
  35. package/content/extensions/components/websocket/usage.md +21 -8
  36. package/content/extensions/helpers/cron/index.md +8 -7
  37. package/content/extensions/helpers/crypto/index.md +16 -8
  38. package/content/extensions/helpers/crypto/reference.md +96 -24
  39. package/content/extensions/helpers/env/index.md +14 -10
  40. package/content/extensions/helpers/error/index.md +99 -23
  41. package/content/extensions/helpers/index.md +61 -47
  42. package/content/extensions/helpers/inversion/index.md +23 -6
  43. package/content/extensions/helpers/inversion/reference.md +30 -22
  44. package/content/extensions/helpers/kafka/admin.md +3 -2
  45. package/content/extensions/helpers/kafka/compile-binary.md +69 -44
  46. package/content/extensions/helpers/kafka/consumer.md +24 -21
  47. package/content/extensions/helpers/kafka/examples.md +22 -234
  48. package/content/extensions/helpers/kafka/index.md +30 -62
  49. package/content/extensions/helpers/kafka/producer.md +31 -26
  50. package/content/extensions/helpers/kafka/schema-registry.md +19 -14
  51. package/content/extensions/helpers/logger/hf-logger.md +49 -22
  52. package/content/extensions/helpers/logger/index.md +37 -12
  53. package/content/extensions/helpers/logger/pino.md +31 -11
  54. package/content/extensions/helpers/logger/reference.md +243 -52
  55. package/content/extensions/helpers/network/api.md +65 -30
  56. package/content/extensions/helpers/network/index.md +32 -11
  57. package/content/extensions/helpers/queue/index.md +17 -6
  58. package/content/extensions/helpers/queue/reference.md +52 -25
  59. package/content/extensions/helpers/redis/index.md +29 -11
  60. package/content/extensions/helpers/redis/reference.md +85 -28
  61. package/content/extensions/helpers/secrets/index.md +82 -12
  62. package/content/extensions/helpers/socket-io/api.md +40 -21
  63. package/content/extensions/helpers/socket-io/index.md +26 -10
  64. package/content/extensions/helpers/storage/api.md +42 -24
  65. package/content/extensions/helpers/storage/index.md +10 -7
  66. package/content/extensions/helpers/types/index.md +20 -7
  67. package/content/extensions/helpers/types/reference.md +53 -14
  68. package/content/extensions/helpers/uid/index.md +166 -10
  69. package/content/extensions/helpers/websocket/api.md +52 -13
  70. package/content/extensions/helpers/websocket/index.md +7 -4
  71. package/content/extensions/helpers/worker-thread/index.md +9 -5
  72. package/content/extensions/helpers/worker-thread/reference.md +20 -20
  73. package/content/extensions/index.md +38 -39
  74. package/content/extensions/src-details/mcp-server.md +96 -548
  75. package/content/guides/core-concepts/persistent/datasources.md +2 -2
  76. package/content/guides/core-concepts/persistent/index.md +5 -1
  77. package/content/guides/core-concepts/persistent/pglite.md +218 -0
  78. package/content/guides/core-concepts/persistent/postgres-drivers.md +21 -15
  79. package/content/guides/core-concepts/persistent/search-meilisearch.md +22 -12
  80. package/content/guides/core-concepts/persistent/search-typesense.md +26 -14
  81. package/content/guides/core-concepts/persistent/sqlite.md +296 -0
  82. package/content/guides/core-concepts/persistent/transactions.md +12 -11
  83. package/content/guides/get-started/5-minute-quickstart.md +59 -206
  84. package/content/guides/get-started/philosophy.md +135 -670
  85. package/content/guides/get-started/setup.md +53 -74
  86. package/content/guides/migrations/redis-helpers-migration.md +4 -3
  87. package/content/guides/migrations/scoped-rbac-migration.md +5 -5
  88. package/content/guides/migrations/unified-connectors-migration.md +7 -6
  89. package/content/guides/tutorials/realtime-chat.md +1 -1
  90. package/content/references/base/application.md +63 -21
  91. package/content/references/base/components.md +3 -3
  92. package/content/references/base/connectors.md +14 -14
  93. package/content/references/base/controllers.md +12 -12
  94. package/content/references/base/datasources-reference.md +32 -31
  95. package/content/references/base/datasources.md +6 -6
  96. package/content/references/base/dependency-injection.md +12 -11
  97. package/content/references/base/filter-system/application-usage.md +54 -30
  98. package/content/references/base/filter-system/array-operators.md +24 -46
  99. package/content/references/base/filter-system/comparison-operators.md +47 -67
  100. package/content/references/base/filter-system/default-filter.md +59 -53
  101. package/content/references/base/filter-system/fields-order-pagination.md +92 -146
  102. package/content/references/base/filter-system/index.md +25 -13
  103. package/content/references/base/filter-system/json-filtering.md +45 -184
  104. package/content/references/base/filter-system/list-operators.md +23 -53
  105. package/content/references/base/filter-system/logical-operators.md +63 -121
  106. package/content/references/base/filter-system/null-operators.md +34 -104
  107. package/content/references/base/filter-system/pattern-matching.md +40 -55
  108. package/content/references/base/filter-system/quick-reference.md +86 -198
  109. package/content/references/base/filter-system/range-operators.md +18 -46
  110. package/content/references/base/filter-system/tips.md +6 -6
  111. package/content/references/base/filter-system/use-cases.md +33 -15
  112. package/content/references/base/grpc-controllers.md +53 -17
  113. package/content/references/base/index.md +5 -3
  114. package/content/references/base/middlewares.md +11 -10
  115. package/content/references/base/models-reference.md +17 -17
  116. package/content/references/base/models.md +4 -3
  117. package/content/references/base/providers.md +8 -8
  118. package/content/references/base/repositories/advanced.md +224 -326
  119. package/content/references/base/repositories/index.md +19 -6
  120. package/content/references/base/repositories/mixins.md +5 -5
  121. package/content/references/base/repositories/relations.md +160 -293
  122. package/content/references/base/repositories/soft-deletable.md +16 -6
  123. package/content/references/base/secrets.md +17 -13
  124. package/content/references/base/services.md +6 -4
  125. package/content/references/configuration/environment-variables.md +31 -23
  126. package/content/references/configuration/index.md +6 -4
  127. package/content/references/index.md +1 -1
  128. package/content/references/utilities/duration.md +85 -0
  129. package/content/references/utilities/index.md +5 -1
  130. package/content/references/utilities/jsx-reference.md +11 -11
  131. package/content/references/utilities/jsx.md +2 -2
  132. package/content/references/utilities/module.md +78 -25
  133. package/content/references/utilities/request.md +2 -1
  134. package/content/references/utilities/retry.md +139 -0
  135. package/content/references/utilities/schema.md +2 -2
  136. package/content/references/utilities/statuses-reference.md +4 -4
  137. package/content/references/utilities/statuses.md +5 -5
  138. package/dist/mcp-server/index.js +0 -0
  139. package/dist/mcp-server/tools/github/list-project-files.tool.d.ts +1 -1
  140. package/dist/mcp-server/tools/github/list-project-files.tool.d.ts.map +1 -1
  141. package/dist/mcp-server/tools/github/list-project-files.tool.js +3 -3
  142. package/dist/mcp-server/tools/github/search-code.tool.js +1 -1
  143. package/dist/mcp-server/tools/github/verify-dependencies.tool.js +1 -1
  144. package/dist/mcp-server/tools/github/view-source-file.tool.js +1 -1
  145. package/package.json +17 -16
@@ -1,21 +1,27 @@
1
1
  # 5-Minute Quickstart
2
2
 
3
- Build your first IGNIS API endpoint in 5 minutes. No database, no complex setup - just a working "Hello World" API.
3
+ Build a working IGNIS API: one controller, one route, dependency injection, and generated API docs - no database required.
4
4
 
5
- **Time to Complete:** ~5 minutes
5
+ **Time to complete:** ~5 minutes
6
6
 
7
- > **Prerequisites:** [Bun installed](./setup) and basic TypeScript knowledge.
7
+ > **Prerequisite:** [Install Bun](./setup) 1.3 or later before you start.
8
8
 
9
- ## Step 1: Create Project (30 seconds)
9
+ ## 1. Create the project
10
+
11
+ Scaffold a project and install IGNIS:
10
12
 
11
13
  ```bash
12
14
  mkdir my-app && cd my-app
13
15
  bun init -y
14
16
  bun add hono @hono/zod-openapi @scalar/hono-api-reference @venizia/ignis @venizia/ignis-helpers
15
- bun add -d typescript @types/bun @venizia/dev-configs eslint prettier tsc-alias
17
+ bun add -d typescript @types/bun @venizia/dev-configs
16
18
  ```
17
19
 
18
- ## Step 2: Configure Development Tools (30 seconds)
20
+ Both commands finish in a few seconds. You now have a `package.json` with IGNIS in `dependencies`.
21
+
22
+ ## 2. Configure TypeScript for decorators
23
+
24
+ IGNIS controllers use TypeScript's legacy decorators (`@controller`, `@get`). Set the two decorator flags directly in your own `tsconfig.json`. Bun does not reliably resolve them through an `extends` chain, and a missing flag drops your routes silently.
19
25
 
20
26
  Create `tsconfig.json`:
21
27
 
@@ -26,59 +32,23 @@ Create `tsconfig.json`:
26
32
  "compilerOptions": {
27
33
  "outDir": "dist",
28
34
  "rootDir": "src",
29
- "baseUrl": "src",
30
35
  "paths": {
31
- "@/*": ["./*"]
32
- }
36
+ "@/*": ["./src/*"]
37
+ },
38
+ "experimentalDecorators": true,
39
+ "emitDecoratorMetadata": true
33
40
  },
34
41
  "include": ["src"],
35
42
  "exclude": ["node_modules", "dist"]
36
43
  }
37
44
  ```
38
45
 
39
- Create `eslint.config.mjs`:
40
-
41
- ```javascript
42
- import { eslintConfigs } from "@venizia/dev-configs";
43
-
44
- export default eslintConfigs;
45
- ```
46
-
47
- Create `.prettierrc.mjs`:
48
-
49
- ```javascript
50
- import { prettierConfigs } from "@venizia/dev-configs";
51
-
52
- export default prettierConfigs;
53
- ```
54
-
55
- Create `.prettierignore`:
56
-
57
- ```
58
- dist
59
- node_modules
60
- *.log
61
- .*-audit.json
62
- ```
63
-
64
- ## Step 3: Write Your API (2 minutes)
65
-
66
- :::info What is a Decorator?
67
- A decorator is a TypeScript feature that adds behavior to classes, methods, or properties. It's the `@something` syntax you see before definitions (like `@controller`, `@get`, `@inject`). Decorators in IGNIS handle routing, dependency injection, and API documentation automatically.
68
-
69
- [Learn more →](/guides/reference/glossary#decorators)
70
- :::
71
-
72
- :::info What is Binding?
73
- "Binding" means registering a component (like a service or repository) with the application's dependency injection container. Think of it as telling the app: "Hey, this service exists and here's how to create it." Once bound, you can inject it anywhere using `@inject`.
74
-
75
- [Learn more →](/guides/core-concepts/dependency-injection)
76
- :::
46
+ ## 3. Write the API
77
47
 
78
48
  Create `src/index.ts`:
79
49
 
80
50
  ```typescript
81
- import { z } from "@hono/zod-openapi";
51
+ import { z } from '@hono/zod-openapi';
82
52
  import {
83
53
  BaseApplication,
84
54
  BaseRestController,
@@ -87,224 +57,107 @@ import {
87
57
  IApplicationInfo,
88
58
  jsonContent,
89
59
  ApiReferenceComponent,
90
- } from "@venizia/ignis";
91
- import { HTTP } from "@venizia/ignis-helpers";
92
- import { Context } from "hono";
93
- import appInfo from "./../package.json";
60
+ } from '@venizia/ignis';
61
+ import { HTTP } from '@venizia/ignis-helpers';
62
+ import { Context } from 'hono';
63
+ import appInfo from './../package.json';
94
64
 
95
- // 1. Define a controller
96
- @controller({ path: "/hello" })
65
+ @controller({ path: '/hello' })
97
66
  class HelloController extends BaseRestController {
98
67
  constructor() {
99
- super({ scope: "HelloController", path: "/hello" });
68
+ super({ scope: 'HelloController', path: '/hello' });
100
69
  }
101
70
 
102
- // Override binding() to register custom routes via bindRoute() or defineRoute().
103
- // For decorator-based routes (@get, @post), this can be empty.
71
+ // binding() is abstract - leave it empty when every route uses @get/@post decorators.
104
72
  override binding() {}
105
73
 
106
74
  @get({
107
75
  configs: {
108
- path: "/",
76
+ path: '/',
109
77
  responses: {
110
78
  [HTTP.ResultCodes.RS_2.Ok]: jsonContent({
111
- description: "Says hello",
79
+ description: 'Says hello',
112
80
  schema: z.object({ message: z.string() }),
113
81
  }),
114
82
  },
115
83
  },
116
84
  })
117
85
  sayHello(c: Context) {
118
- return c.json({ message: "Hello from IGNIS!" }, HTTP.ResultCodes.RS_2.Ok);
86
+ return c.json({ message: 'Hello from IGNIS!' }, HTTP.ResultCodes.RS_2.Ok);
119
87
  }
120
88
  }
121
89
 
122
- // 2. Create the application
123
90
  class App extends BaseApplication {
124
91
  getAppInfo(): IApplicationInfo {
125
92
  return appInfo;
126
93
  }
127
94
 
128
- staticConfigure() {
129
- // Static configuration before dependency injection
130
- }
95
+ staticConfigure() {}
131
96
 
132
97
  preConfigure() {
133
98
  this.component(ApiReferenceComponent);
134
99
  this.controller(HelloController);
135
100
  }
136
101
 
137
- postConfigure() {
138
- // Configuration after all bindings are complete
139
- }
102
+ postConfigure() {}
140
103
 
141
- setupMiddlewares() {
142
- // Custom middleware setup (optional)
143
- }
104
+ setupMiddlewares() {}
144
105
  }
145
106
 
146
- // 3. Start the server
147
107
  const app = new App({
148
- scope: "App",
108
+ scope: 'App',
149
109
  config: {
150
- host: "0.0.0.0",
110
+ host: '0.0.0.0',
151
111
  port: 3000,
152
- path: { base: "/api", isStrict: false },
153
- debug: { shouldShowRoutes: true }, // Prints all registered routes on startup
112
+ path: { base: '/api', isStrict: false },
154
113
  },
155
114
  });
156
115
 
157
- // start() runs the full lifecycle: preConfigure → register resources → setupMiddlewares → HTTP server
158
- app.start();
116
+ app.init();
117
+ await app.start();
159
118
  ```
160
119
 
161
- Update `package.json` to add build scripts:
120
+ `@controller` groups routes under `/hello`. `@get` registers a GET route together with its OpenAPI schema. `preConfigure()` wires the controller and the API docs component into dependency injection before the server starts. `app.init()` registers the application's core bindings - call it before `app.start()`.
162
121
 
163
- ```json
164
- {
165
- "name": "5-mins-qs",
166
- "version": "1.0.0",
167
- "description": "5-minute quickstart example",
168
- "private": true,
169
- "scripts": {
170
- "start": "bun run src/index.ts",
171
- "lint": "eslint --report-unused-disable-directives . && prettier \"**/*.{js,ts}\" -l",
172
- "lint:fix": "eslint --report-unused-disable-directives . --fix && prettier \"**/*.{js,ts}\" --write",
173
- "build": "tsc -p tsconfig.json && tsc-alias -p tsconfig.json",
174
- "clean": "sh ./scripts/clean.sh",
175
- "rebuild": "bun run clean && bun run build",
176
- "server:dev": "NODE_ENV=development bun run src/index.ts",
177
- "server:prod": "NODE_ENV=production bun run dist/index.js"
178
- },
179
- "dependencies": {
180
- "hono": "^4.12.25",
181
- "@hono/zod-openapi": "latest",
182
- "@scalar/hono-api-reference": "latest",
183
- "@venizia/ignis": "latest",
184
- "@venizia/ignis-helpers": "latest"
185
- },
186
- "devDependencies": {
187
- "typescript": "^6.0.3",
188
- "@types/bun": "latest",
189
- "@venizia/dev-configs": "latest",
190
- "eslint": "^10.5.0",
191
- "prettier": "^3.8.4",
192
- "tsc-alias": "^1.8.10"
193
- }
194
- }
195
- ```
122
+ New to decorators or dependency injection? See the [glossary](/guides/reference/glossary#decorators) and [Dependency Injection](../core-concepts/dependency-injection.md).
196
123
 
197
- Create `scripts/clean.sh`:
124
+ ## 4. Run it
198
125
 
199
- ```bash
200
- #!/bin/bash
126
+ Start the server:
201
127
 
202
- # Remove build artifacts
203
- rm -rf dist/
204
- rm -rf node_modules/.cache/
128
+ ```bash
129
+ bun run src/index.ts
130
+ ```
205
131
 
206
- # Remove log files
207
- rm -f *.log
208
- rm -f .*.log
209
- rm -f .*-audit.json
132
+ After a moment you'll see:
210
133
 
211
- echo "Cleaned build artifacts and logs"
134
+ ```
135
+ [App-start] Server STARTED | Address: 0.0.0.0:3000
212
136
  ```
213
137
 
214
- ## Step 4: Run It (30 seconds)
138
+ In a new terminal, request the endpoint:
215
139
 
216
140
  ```bash
217
- bun run src/index.ts
141
+ curl http://localhost:3000/api/hello
218
142
  ```
219
143
 
220
- Visit `http://localhost:3000/api/hello` in your browser!
221
-
222
- **Response:**
144
+ You get:
223
145
 
224
146
  ```json
225
- { "message": "Hello from IGNIS!" }
147
+ {"message":"Hello from IGNIS!"}
226
148
  ```
227
149
 
228
- ## View API Docs
229
-
230
- Open `http://localhost:3000/doc/explorer` to see interactive Swagger UI documentation!
231
-
232
- ## What Just Happened?
233
-
234
- ### Framework Patterns
235
-
236
- | Component | What It Does |
237
- |-----------|--------------|
238
- | `@controller` | Registers a class as an API controller at `/api/hello`. Supports `transport` field for REST (default) or gRPC |
239
- | `@get` | Defines a GET endpoint with OpenAPI metadata (auto-sets HTTP method) |
240
- | `Zod schema` | Validates request/response and auto-generates OpenAPI docs |
241
- | `BaseRestController` | Provides lifecycle hooks, route binding, and OpenAPI integration for REST controllers |
242
- | `BaseApplication` | Manages dependency injection, middleware, and server startup |
243
- | `ApiReferenceComponent` | Generates interactive API docs at `/doc/explorer` |
244
- | `app.start()` | Runs the full lifecycle (preConfigure → register resources → middlewares) then starts HTTP server on port 3000 |
245
-
246
- ### Why Development Configs?
247
-
248
- You might wonder why we set up TypeScript, ESLint, and Prettier configs in a "quickstart". Here's why:
249
-
250
- **IGNIS is opinionated about code quality.** We believe clean, consistent code from day one prevents technical debt later. The `@venizia/dev-configs` package provides pre-configured settings that:
251
-
252
- | Config | Purpose |
253
- |--------|---------|
254
- | `tsconfig.json` | Strict TypeScript settings optimized for IGNIS decorators and path aliases |
255
- | `eslint.config.mjs` | Catches common errors, enforces best practices, works with TypeScript |
256
- | `.prettierrc.mjs` | Consistent formatting across your team - no more style debates |
150
+ ## 5. View the API docs
257
151
 
258
- **Benefits of starting with IGNIS code style:**
152
+ Open `http://localhost:3000/api/doc/explorer` in your browser. You'll see an interactive Scalar API reference listing `GET /hello`, generated from the Zod schema you wrote.
259
153
 
260
- - **Consistency** - Same patterns across all IGNIS projects
261
- - **IDE Support** - Better autocomplete, error detection, and refactoring
262
- - **Team Ready** - New developers can onboard faster with familiar structure
263
- - **CI/CD Friendly** - Lint and format checks work out of the box
154
+ ## What you built
264
155
 
265
- > [!TIP]
266
- > All configs extend from `@venizia/dev-configs`, so you get updates automatically. Customize by overriding specific rules in your local config files.
156
+ A running IGNIS REST API: one controller, one route, dependency injection wired through `BaseApplication`, and OpenAPI docs served automatically - all in a single file.
267
157
 
268
- ## Next Steps
158
+ ## Next steps
269
159
 
270
- **You have a working API!**
271
-
272
- **Want more?**
273
-
274
- - **Add a database?** → [Building a CRUD API](../tutorials/building-a-crud-api.md)
275
- - **Production setup?** → [Complete Setup Guide](../tutorials/complete-installation.md) (ESLint, Prettier, etc.)
276
- - **Understand the architecture?** → [Core Concepts](../core-concepts/application/)
277
-
278
- **Quick additions:**
279
-
280
- **Add a POST endpoint:**
281
-
282
- ```typescript
283
- @post({
284
- configs: {
285
- path: '/greet',
286
- request: {
287
- body: jsonContent({
288
- schema: z.object({ name: z.string() }),
289
- }),
290
- },
291
- responses: {
292
- [HTTP.ResultCodes.RS_2.Ok]: jsonContent({
293
- schema: z.object({ greeting: z.string() }),
294
- }),
295
- },
296
- },
297
- })
298
- async greet(c: Context) {
299
- const { name } = c.req.valid('json');
300
- return c.json({ greeting: `Hello, ${name}!` }, HTTP.ResultCodes.RS_2.Ok);
301
- }
302
- ```
303
-
304
- Test it:
305
-
306
- ```bash
307
- curl -X POST http://localhost:3000/api/hello/greet \
308
- -H "Content-Type: application/json" \
309
- -d '{"name":"World"}'
310
- ```
160
+ - Add a database: [Building a CRUD API](../tutorials/building-a-crud-api.md)
161
+ - Add lint, formatting, and build scripts: [Complete Installation](../tutorials/complete-installation.md)
162
+ - Add more routes and methods: [REST Controllers](../core-concepts/rest-controllers.md)
163
+ - Understand the application lifecycle: [Core Concepts: Application](../core-concepts/application/)