@venizia/ignis-docs 0.0.3 → 0.0.4-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 (131) hide show
  1. package/README.md +1 -1
  2. package/package.json +4 -2
  3. package/wiki/best-practices/api-usage-examples.md +591 -0
  4. package/wiki/best-practices/architectural-patterns.md +415 -0
  5. package/wiki/best-practices/architecture-decisions.md +488 -0
  6. package/wiki/{get-started/best-practices → best-practices}/code-style-standards.md +406 -17
  7. package/wiki/{get-started/best-practices → best-practices}/common-pitfalls.md +109 -4
  8. package/wiki/{get-started/best-practices → best-practices}/contribution-workflow.md +34 -7
  9. package/wiki/best-practices/data-modeling.md +376 -0
  10. package/wiki/best-practices/deployment-strategies.md +698 -0
  11. package/wiki/best-practices/index.md +27 -0
  12. package/wiki/best-practices/performance-optimization.md +196 -0
  13. package/wiki/best-practices/security-guidelines.md +218 -0
  14. package/wiki/{get-started/best-practices → best-practices}/troubleshooting-tips.md +97 -1
  15. package/wiki/changelogs/2025-12-16-initial-architecture.md +1 -1
  16. package/wiki/changelogs/2025-12-16-model-repo-datasource-refactor.md +1 -1
  17. package/wiki/changelogs/2025-12-17-refactor.md +1 -1
  18. package/wiki/changelogs/2025-12-18-performance-optimizations.md +5 -5
  19. package/wiki/changelogs/2025-12-18-repository-validation-security.md +13 -7
  20. package/wiki/changelogs/2025-12-26-nested-relations-and-generics.md +2 -2
  21. package/wiki/changelogs/2025-12-29-dynamic-binding-registration.md +104 -0
  22. package/wiki/changelogs/2025-12-29-snowflake-uid-helper.md +100 -0
  23. package/wiki/changelogs/2025-12-30-repository-enhancements.md +214 -0
  24. package/wiki/changelogs/2025-12-31-json-path-filtering-array-operators.md +214 -0
  25. package/wiki/changelogs/2025-12-31-string-id-custom-generator.md +137 -0
  26. package/wiki/changelogs/2026-01-02-default-filter-and-repository-mixins.md +418 -0
  27. package/wiki/changelogs/index.md +6 -0
  28. package/wiki/changelogs/planned-schema-migrator.md +0 -8
  29. package/wiki/{get-started/core-concepts → guides/core-concepts/application}/bootstrapping.md +18 -5
  30. package/wiki/{get-started/core-concepts/application.md → guides/core-concepts/application/index.md} +47 -104
  31. package/wiki/guides/core-concepts/components-guide.md +509 -0
  32. package/wiki/{get-started → guides}/core-concepts/components.md +24 -17
  33. package/wiki/{get-started → guides}/core-concepts/controllers.md +30 -13
  34. package/wiki/{get-started → guides}/core-concepts/dependency-injection.md +97 -0
  35. package/wiki/guides/core-concepts/persistent/datasources.md +179 -0
  36. package/wiki/guides/core-concepts/persistent/index.md +119 -0
  37. package/wiki/guides/core-concepts/persistent/models.md +241 -0
  38. package/wiki/guides/core-concepts/persistent/repositories.md +219 -0
  39. package/wiki/guides/core-concepts/persistent/transactions.md +170 -0
  40. package/wiki/{get-started → guides}/core-concepts/services.md +26 -3
  41. package/wiki/{get-started → guides/get-started}/5-minute-quickstart.md +59 -14
  42. package/wiki/guides/get-started/philosophy.md +682 -0
  43. package/wiki/guides/get-started/setup.md +157 -0
  44. package/wiki/guides/index.md +89 -0
  45. package/wiki/guides/reference/glossary.md +243 -0
  46. package/wiki/{get-started → guides/reference}/mcp-docs-server.md +0 -10
  47. package/wiki/{get-started → guides/tutorials}/building-a-crud-api.md +134 -132
  48. package/wiki/{get-started/quickstart.md → guides/tutorials/complete-installation.md} +107 -71
  49. package/wiki/guides/tutorials/ecommerce-api.md +1399 -0
  50. package/wiki/guides/tutorials/realtime-chat.md +1261 -0
  51. package/wiki/guides/tutorials/testing.md +723 -0
  52. package/wiki/index.md +176 -37
  53. package/wiki/references/base/application.md +27 -0
  54. package/wiki/references/base/bootstrapping.md +31 -26
  55. package/wiki/references/base/components.md +24 -7
  56. package/wiki/references/base/controllers.md +50 -20
  57. package/wiki/references/base/datasources.md +30 -0
  58. package/wiki/references/base/dependency-injection.md +39 -3
  59. package/wiki/references/base/filter-system/application-usage.md +224 -0
  60. package/wiki/references/base/filter-system/array-operators.md +132 -0
  61. package/wiki/references/base/filter-system/comparison-operators.md +109 -0
  62. package/wiki/references/base/filter-system/default-filter.md +428 -0
  63. package/wiki/references/base/filter-system/fields-order-pagination.md +155 -0
  64. package/wiki/references/base/filter-system/index.md +127 -0
  65. package/wiki/references/base/filter-system/json-filtering.md +197 -0
  66. package/wiki/references/base/filter-system/list-operators.md +71 -0
  67. package/wiki/references/base/filter-system/logical-operators.md +156 -0
  68. package/wiki/references/base/filter-system/null-operators.md +58 -0
  69. package/wiki/references/base/filter-system/pattern-matching.md +108 -0
  70. package/wiki/references/base/filter-system/quick-reference.md +431 -0
  71. package/wiki/references/base/filter-system/range-operators.md +63 -0
  72. package/wiki/references/base/filter-system/tips.md +190 -0
  73. package/wiki/references/base/filter-system/use-cases.md +452 -0
  74. package/wiki/references/base/index.md +90 -0
  75. package/wiki/references/base/middlewares.md +604 -0
  76. package/wiki/references/base/models.md +215 -23
  77. package/wiki/references/base/providers.md +731 -0
  78. package/wiki/references/base/repositories/advanced.md +555 -0
  79. package/wiki/references/base/repositories/index.md +228 -0
  80. package/wiki/references/base/repositories/mixins.md +331 -0
  81. package/wiki/references/base/repositories/relations.md +486 -0
  82. package/wiki/references/base/repositories.md +40 -635
  83. package/wiki/references/base/services.md +28 -4
  84. package/wiki/references/components/authentication.md +22 -2
  85. package/wiki/references/components/health-check.md +12 -0
  86. package/wiki/references/components/index.md +23 -0
  87. package/wiki/references/components/mail.md +687 -0
  88. package/wiki/references/components/request-tracker.md +16 -0
  89. package/wiki/references/components/socket-io.md +18 -0
  90. package/wiki/references/components/static-asset.md +14 -26
  91. package/wiki/references/components/swagger.md +17 -0
  92. package/wiki/references/configuration/environment-variables.md +427 -0
  93. package/wiki/references/configuration/index.md +73 -0
  94. package/wiki/references/helpers/cron.md +14 -0
  95. package/wiki/references/helpers/crypto.md +15 -0
  96. package/wiki/references/helpers/env.md +16 -0
  97. package/wiki/references/helpers/error.md +17 -0
  98. package/wiki/references/helpers/index.md +14 -0
  99. package/wiki/references/helpers/inversion.md +24 -4
  100. package/wiki/references/helpers/logger.md +19 -0
  101. package/wiki/references/helpers/network.md +11 -0
  102. package/wiki/references/helpers/queue.md +19 -0
  103. package/wiki/references/helpers/redis.md +21 -0
  104. package/wiki/references/helpers/socket-io.md +24 -5
  105. package/wiki/references/helpers/storage.md +18 -10
  106. package/wiki/references/helpers/testing.md +18 -0
  107. package/wiki/references/helpers/types.md +16 -0
  108. package/wiki/references/helpers/uid.md +167 -0
  109. package/wiki/references/helpers/worker-thread.md +16 -0
  110. package/wiki/references/index.md +177 -0
  111. package/wiki/references/quick-reference.md +634 -0
  112. package/wiki/references/src-details/boot.md +3 -3
  113. package/wiki/references/src-details/dev-configs.md +0 -4
  114. package/wiki/references/src-details/docs.md +2 -2
  115. package/wiki/references/src-details/index.md +86 -0
  116. package/wiki/references/src-details/inversion.md +1 -6
  117. package/wiki/references/src-details/mcp-server.md +3 -15
  118. package/wiki/references/utilities/index.md +86 -10
  119. package/wiki/references/utilities/jsx.md +577 -0
  120. package/wiki/references/utilities/request.md +0 -2
  121. package/wiki/references/utilities/statuses.md +740 -0
  122. package/wiki/get-started/best-practices/api-usage-examples.md +0 -266
  123. package/wiki/get-started/best-practices/architectural-patterns.md +0 -170
  124. package/wiki/get-started/best-practices/data-modeling.md +0 -177
  125. package/wiki/get-started/best-practices/deployment-strategies.md +0 -121
  126. package/wiki/get-started/best-practices/performance-optimization.md +0 -97
  127. package/wiki/get-started/best-practices/security-guidelines.md +0 -99
  128. package/wiki/get-started/core-concepts/persistent.md +0 -539
  129. package/wiki/get-started/index.md +0 -65
  130. package/wiki/get-started/philosophy.md +0 -296
  131. package/wiki/get-started/prerequisites.md +0 -113
@@ -1,3 +1,9 @@
1
+ ---
2
+ title: Services Reference
3
+ description: Technical reference for BaseService and business logic layer
4
+ difficulty: beginner
5
+ ---
6
+
1
7
  # Deep Dive: Services
2
8
 
3
9
  Technical reference for `BaseService` - the foundation for business logic layers in Ignis.
@@ -68,17 +74,17 @@ export class UserService extends BaseService {
68
74
  // 2. Dependencies (like UserRepository) are injected
69
75
  constructor(
70
76
  @inject({ key: 'repositories.UserRepository' })
71
- private userRepository: UserRepository,
77
+ private _userRepository: UserRepository,
72
78
  ) {
73
79
  super({ scope: UserService.name });
74
80
  }
75
81
 
76
82
  // 3. Method is called by a controller
77
- async getUserProfile(userId: string): Promise<Partial<TUser>> {
78
- this.logger.info(`Fetching profile for user ${userId}`);
83
+ async getUserProfile(opts: { userId: string }): Promise<Partial<TUser>> {
84
+ this.logger.info(`Fetching profile for user ${opts.userId}`);
79
85
 
80
86
  // 4. Orchestrates logic: calls the repository
81
- const user = await this.userRepository.findById({ id: userId });
87
+ const user = await this._userRepository.findById({ id: opts.userId });
82
88
 
83
89
  if (!user) {
84
90
  throw getError({ message: 'User not found' });
@@ -95,3 +101,21 @@ export class UserService extends BaseService {
95
101
  ```
96
102
 
97
103
  By adhering to this pattern, you keep your code organized, testable, and maintainable. You can easily test `UserService` by providing a mock `UserRepository` without needing a real database connection.
104
+
105
+ ---
106
+
107
+ ## See Also
108
+
109
+ - **Related References:**
110
+ - [Controllers](./controllers.md) - HTTP request handlers that call services
111
+ - [Repositories](./repositories/) - Data access layer used by services
112
+ - [Providers](./providers.md) - Factory pattern for runtime instantiation
113
+ - [Dependency Injection](./dependency-injection.md) - DI container and injection patterns
114
+
115
+ - **Guides:**
116
+ - [Building Services](/guides/core-concepts/services.md)
117
+ - [Dependency Injection Guide](/guides/core-concepts/dependency-injection.md)
118
+
119
+ - **Best Practices:**
120
+ - [Architectural Patterns](/best-practices/architectural-patterns)
121
+ - [Testing Guide](/guides/tutorials/testing)
@@ -242,7 +242,8 @@ import { Context } from 'hono';
242
242
 
243
243
  export class AuthenticationService extends BaseService implements IAuthService {
244
244
  constructor(
245
- @inject({ key: 'services.JWTTokenService' }) private jwtService: JWTTokenService,
245
+ @inject({ key: 'services.JWTTokenService' })
246
+ private _jwtTokenService: JWTTokenService,
246
247
  ) {
247
248
  super({ scope: AuthenticationService.name });
248
249
  }
@@ -267,7 +268,7 @@ export class AuthenticationService extends BaseService implements IAuthService {
267
268
  // Add any other data you want in the token
268
269
  };
269
270
 
270
- const token = await this.jwtService.generate({ payload });
271
+ const token = await this._jwtTokenService.generate({ payload });
271
272
  return { token };
272
273
  }
273
274
 
@@ -440,3 +441,22 @@ if (user) {
440
441
  console.log('User is not authenticated or not found in context.');
441
442
  }
442
443
  ```
444
+
445
+ ## See Also
446
+
447
+ - **Related Concepts:**
448
+ - [Components Overview](/guides/core-concepts/components) - Component system basics
449
+ - [Controllers](/guides/core-concepts/controllers) - Protecting routes with auth
450
+
451
+ - **Other Components:**
452
+ - [Components Index](./index) - All built-in components
453
+
454
+ - **References:**
455
+ - [Middlewares](/references/base/middlewares) - Custom authentication middleware
456
+ - [Crypto Helper](/references/helpers/crypto) - Password hashing utilities
457
+
458
+ - **Best Practices:**
459
+ - [Security Guidelines](/best-practices/security-guidelines) - Authentication best practices
460
+
461
+ - **Tutorials:**
462
+ - [Building a CRUD API](/guides/tutorials/building-a-crud-api) - Adding authentication
@@ -188,3 +188,15 @@ import { HealthCheckComponent } from '@venizia/ignis';
188
188
  ```
189
189
 
190
190
  This component provides a simple and effective way to monitor the health of your `Ignis` application.
191
+
192
+ ## See Also
193
+
194
+ - **Related Concepts:**
195
+ - [Components Overview](/guides/core-concepts/components) - Component system basics
196
+ - [Application](/guides/core-concepts/application/) - Registering components
197
+
198
+ - **Other Components:**
199
+ - [Components Index](./index) - All built-in components
200
+
201
+ - **Best Practices:**
202
+ - [Deployment Strategies](/best-practices/deployment-strategies) - Production monitoring
@@ -8,6 +8,7 @@ Reusable, pluggable modules that group together related features. A component ca
8
8
  |-----------|---------|--------------|
9
9
  | [Authentication](./authentication.md) | JWT-based auth | Token generation, protected routes, user payload |
10
10
  | [Health Check](./health-check.md) | Monitoring endpoint | `/health` endpoint, ping/pong functionality |
11
+ | [Mail](./mail.md) | Email sending system | Multiple transports, templating, queue-based processing |
11
12
  | [Request Tracker](./request-tracker.md) | Request logging | Request ID generation, timing, structured logging |
12
13
  | [Socket.IO](./socket-io.md) | Real-time communication | WebSocket support, Redis adapter, event-based |
13
14
  | [Static Asset](./static-asset.md) | File management | Upload/download files, MinIO & local filesystem support |
@@ -61,3 +62,25 @@ import { MyCustomComponent } from './components/my-custom.component';
61
62
  When the application starts, it will automatically call the `binding()` method of the registered component, setting up all the resources it provides.
62
63
 
63
64
  Using components is a great way to organize your application's features into modular, reusable pieces of code, keeping your main application class clean and focused on high-level configuration.
65
+
66
+ ## See Also
67
+
68
+ - **Component Guides:**
69
+ - [Components Overview](/guides/core-concepts/components) - What components are
70
+ - [Creating Components](/guides/core-concepts/components-guide) - Build your own components
71
+
72
+ - **Built-in Components:**
73
+ - [Authentication](./authentication) - JWT authentication
74
+ - [Health Check](./health-check) - Health check endpoints
75
+ - [Swagger](./swagger) - API documentation
76
+ - [Socket.IO](./socket-io) - WebSocket support
77
+ - [Mail](./mail) - Email functionality
78
+ - [Request Tracker](./request-tracker) - Request tracking
79
+ - [Static Asset](./static-asset) - Static file serving
80
+
81
+ - **References:**
82
+ - [BaseComponent API](/references/base/components) - Component base class
83
+ - [Application](/references/base/application) - Registering components
84
+
85
+ - **Best Practices:**
86
+ - [Architectural Patterns](/best-practices/architectural-patterns) - Component design patterns