@ironbackend/core 1.0.0

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 (50) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.d.ts +33 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +123 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/rules/index.d.ts +36 -0
  7. package/dist/rules/index.d.ts.map +1 -0
  8. package/dist/rules/index.js +505 -0
  9. package/dist/rules/index.js.map +1 -0
  10. package/dist/security/index.d.ts +15 -0
  11. package/dist/security/index.d.ts.map +1 -0
  12. package/dist/security/index.js +243 -0
  13. package/dist/security/index.js.map +1 -0
  14. package/dist/stacks/index.d.ts +38 -0
  15. package/dist/stacks/index.d.ts.map +1 -0
  16. package/dist/stacks/index.js +193 -0
  17. package/dist/stacks/index.js.map +1 -0
  18. package/dist/styles/clean-monolith.d.ts +7 -0
  19. package/dist/styles/clean-monolith.d.ts.map +1 -0
  20. package/dist/styles/clean-monolith.js +124 -0
  21. package/dist/styles/clean-monolith.js.map +1 -0
  22. package/dist/styles/event-driven.d.ts +12 -0
  23. package/dist/styles/event-driven.d.ts.map +1 -0
  24. package/dist/styles/event-driven.js +247 -0
  25. package/dist/styles/event-driven.js.map +1 -0
  26. package/dist/styles/hexagonal.d.ts +7 -0
  27. package/dist/styles/hexagonal.d.ts.map +1 -0
  28. package/dist/styles/hexagonal.js +146 -0
  29. package/dist/styles/hexagonal.js.map +1 -0
  30. package/dist/styles/index.d.ts +33 -0
  31. package/dist/styles/index.d.ts.map +1 -0
  32. package/dist/styles/index.js +75 -0
  33. package/dist/styles/index.js.map +1 -0
  34. package/dist/styles/microservices.d.ts +12 -0
  35. package/dist/styles/microservices.d.ts.map +1 -0
  36. package/dist/styles/microservices.js +218 -0
  37. package/dist/styles/microservices.js.map +1 -0
  38. package/dist/styles/modular-monolith.d.ts +7 -0
  39. package/dist/styles/modular-monolith.d.ts.map +1 -0
  40. package/dist/styles/modular-monolith.js +131 -0
  41. package/dist/styles/modular-monolith.js.map +1 -0
  42. package/dist/styles/specialized.d.ts +17 -0
  43. package/dist/styles/specialized.d.ts.map +1 -0
  44. package/dist/styles/specialized.js +379 -0
  45. package/dist/styles/specialized.js.map +1 -0
  46. package/dist/types.d.ts +143 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +7 -0
  49. package/dist/types.js.map +1 -0
  50. package/package.json +56 -0
@@ -0,0 +1,379 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.automation = exports.readHeavy = exports.serverless = void 0;
4
+ /**
5
+ * Serverless Backend Architecture
6
+ * Stateless functions triggered by events, managed infrastructure
7
+ */
8
+ exports.serverless = {
9
+ id: 'serverless',
10
+ name: 'Serverless Backend',
11
+ description: 'Backend composed of stateless functions triggered by events. Infrastructure managed by cloud provider. Pay-per-use with automatic scaling.',
12
+ whenToUse: [
13
+ 'Variable/unpredictable traffic patterns',
14
+ 'Event-driven workloads (webhooks, file processing)',
15
+ 'Minimal operational overhead desired',
16
+ 'Pay-per-use cost model preferred',
17
+ 'Rapid development with managed infrastructure',
18
+ 'Prototype or MVP development'
19
+ ],
20
+ whenNotToUse: [
21
+ 'Long-running processes (> 15 min)',
22
+ 'Low latency critical (cold start issues)',
23
+ 'High-frequency invocations (cost prohibitive)',
24
+ 'Complex stateful workflows',
25
+ 'Need full control over infrastructure',
26
+ 'Vendor lock-in unacceptable'
27
+ ],
28
+ corePrinciples: [
29
+ 'Functions are stateless',
30
+ 'State stored in external managed services',
31
+ 'Each function does one thing well',
32
+ 'Cold start mitigation strategies required',
33
+ 'Design for idempotency',
34
+ 'Optimize for invocation cost and duration'
35
+ ],
36
+ folderStructure: {
37
+ name: 'src',
38
+ type: 'folder',
39
+ children: [
40
+ {
41
+ name: 'functions',
42
+ type: 'folder',
43
+ children: [
44
+ {
45
+ name: 'http',
46
+ type: 'folder',
47
+ description: 'API Gateway triggers',
48
+ children: [
49
+ {
50
+ name: 'create-order',
51
+ type: 'folder',
52
+ children: [
53
+ { name: 'handler.ts', type: 'file', description: 'Function entry point' },
54
+ { name: 'schema.ts', type: 'file', description: 'Input validation' },
55
+ { name: 'index.ts', type: 'file', description: 'Export' }
56
+ ]
57
+ },
58
+ { name: 'get-orders', type: 'folder' }
59
+ ]
60
+ },
61
+ {
62
+ name: 'events',
63
+ type: 'folder',
64
+ description: 'Event triggers (S3, SQS, SNS)',
65
+ children: [
66
+ { name: 'process-upload', type: 'folder' },
67
+ { name: 'handle-payment', type: 'folder' }
68
+ ]
69
+ },
70
+ {
71
+ name: 'scheduled',
72
+ type: 'folder',
73
+ description: 'Cron triggers',
74
+ children: [
75
+ { name: 'daily-report', type: 'folder' },
76
+ { name: 'cleanup-job', type: 'folder' }
77
+ ]
78
+ }
79
+ ]
80
+ },
81
+ {
82
+ name: 'shared',
83
+ type: 'folder',
84
+ description: 'Shared code across functions',
85
+ children: [
86
+ { name: 'domain', type: 'folder', description: 'Business logic' },
87
+ { name: 'utils', type: 'folder', description: 'Utilities' },
88
+ { name: 'clients', type: 'folder', description: 'External service clients' }
89
+ ]
90
+ },
91
+ {
92
+ name: 'infrastructure',
93
+ type: 'folder',
94
+ description: 'IaC definitions',
95
+ children: [
96
+ { name: 'cdk', type: 'folder', description: 'AWS CDK or' },
97
+ { name: 'terraform', type: 'folder', description: 'Terraform configs' }
98
+ ]
99
+ }
100
+ ]
101
+ },
102
+ commonPitfalls: [
103
+ 'Functions too large (should be < 500 lines)',
104
+ 'Ignoring cold start latency',
105
+ 'No local development/testing setup',
106
+ 'Synchronous chains of functions',
107
+ 'Over-reliance on managed services',
108
+ 'Missing structured logging',
109
+ 'Not monitoring costs per function'
110
+ ],
111
+ aiInstructions: `When generating code for Serverless Backend:
112
+
113
+ FUNCTION DESIGN:
114
+ - Functions must be stateless and idempotent
115
+ - Keep function code under 500 lines
116
+ - Separate business logic from handler boilerplate
117
+ - One function = one responsibility
118
+
119
+ CONFIGURATION:
120
+ - Use environment variables for configuration
121
+ - Secrets in secrets manager, not env vars
122
+ - Configure appropriate memory/timeout
123
+
124
+ COLD START:
125
+ - Keep dependencies minimal
126
+ - Use lazy initialization for heavy resources
127
+ - Consider provisioned concurrency for latency-sensitive functions
128
+
129
+ OBSERVABILITY:
130
+ - Implement structured logging from start
131
+ - Include request ID in all logs
132
+ - Use distributed tracing (X-Ray, etc.)
133
+
134
+ TESTING:
135
+ - Unit test business logic independently
136
+ - Integration test with local emulators (LocalStack, etc.)
137
+ - Test handler wrapper separately`
138
+ };
139
+ /**
140
+ * Read-Heavy API Architecture
141
+ * Optimized for high read-to-write ratio
142
+ */
143
+ exports.readHeavy = {
144
+ id: 'read-heavy',
145
+ name: 'Read-Heavy API',
146
+ description: 'Backend optimized for high read-to-write ratio. Aggressive caching, denormalized storage, eventual consistency for reads.',
147
+ whenToUse: [
148
+ 'Read:Write ratio > 10:1',
149
+ 'Data changes infrequently',
150
+ 'Latency for reads critical',
151
+ 'Can tolerate stale reads',
152
+ 'Content delivery / catalog systems',
153
+ 'Public-facing high-traffic APIs'
154
+ ],
155
+ whenNotToUse: [
156
+ 'Data changes frequently',
157
+ 'Strong consistency required for reads',
158
+ 'Write-heavy workload',
159
+ 'Cache invalidation complexity unacceptable',
160
+ 'Data freshness critical (financial, real-time)'
161
+ ],
162
+ corePrinciples: [
163
+ 'Cache everything cacheable',
164
+ 'Denormalize data for read performance',
165
+ 'Accept eventual consistency',
166
+ 'Invalidate caches explicitly on writes',
167
+ 'Multiple cache layers (CDN, app, DB)',
168
+ 'Optimize for cache hits'
169
+ ],
170
+ folderStructure: {
171
+ name: 'src',
172
+ type: 'folder',
173
+ children: [
174
+ {
175
+ name: 'api',
176
+ type: 'folder',
177
+ children: [
178
+ { name: 'queries', type: 'folder', description: 'Read endpoints' },
179
+ { name: 'commands', type: 'folder', description: 'Write endpoints' }
180
+ ]
181
+ },
182
+ {
183
+ name: 'cache',
184
+ type: 'folder',
185
+ children: [
186
+ { name: 'strategies', type: 'folder', description: 'Cache patterns' },
187
+ { name: 'invalidation', type: 'folder', description: 'Cache invalidation logic' },
188
+ { name: 'warming', type: 'folder', description: 'Pre-populate caches' }
189
+ ]
190
+ },
191
+ {
192
+ name: 'read-models',
193
+ type: 'folder',
194
+ description: 'Denormalized views optimized for queries'
195
+ },
196
+ {
197
+ name: 'projectors',
198
+ type: 'folder',
199
+ description: 'Update read models on writes'
200
+ },
201
+ { name: 'domain', type: 'folder' },
202
+ {
203
+ name: 'infrastructure',
204
+ type: 'folder',
205
+ children: [
206
+ { name: 'cache', type: 'folder', description: 'Redis, Memcached' },
207
+ { name: 'database', type: 'folder' }
208
+ ]
209
+ }
210
+ ]
211
+ },
212
+ commonPitfalls: [
213
+ 'Cache stampede on invalidation - use locking or probabilistic expiry',
214
+ 'Stale cache with no TTL - always set TTL',
215
+ 'Missing cache warming strategy - cold cache = slow startup',
216
+ 'Over-caching (wasted memory) - cache what matters',
217
+ 'No cache hit rate monitoring - flying blind',
218
+ 'Complex invalidation logic - simpler is better'
219
+ ],
220
+ aiInstructions: `When generating code for Read-Heavy API:
221
+
222
+ CACHING:
223
+ - Every query endpoint checks cache first
224
+ - Cache TTL required for all cached data
225
+ - Use cache-aside pattern as default
226
+ - Implement multi-layer caching where appropriate
227
+
228
+ INVALIDATION:
229
+ - Write operations invalidate affected caches
230
+ - Use cache tags for grouped invalidation
231
+ - Consider event-driven invalidation
232
+ - Handle cache stampede protection
233
+
234
+ READ MODELS:
235
+ - Denormalize for query patterns
236
+ - Accept data duplication for performance
237
+ - Update read models on writes (sync or async)
238
+
239
+ MONITORING:
240
+ - Log cache hit/miss rates
241
+ - Alert on low hit rates
242
+ - Monitor cache memory usage
243
+
244
+ PATTERNS:
245
+ - Cache-aside: app manages cache
246
+ - Read-through: cache fetches on miss
247
+ - Write-through: writes go to cache first`
248
+ };
249
+ /**
250
+ * Automation / Bot Backend Architecture
251
+ * Scheduled jobs, workflows, integrations
252
+ */
253
+ exports.automation = {
254
+ id: 'automation',
255
+ name: 'Automation / Bot Backend',
256
+ description: 'Backend for scheduled jobs, workflows, integrations, and automated processes. Emphasizes reliability, retries, and observability.',
257
+ whenToUse: [
258
+ 'Scheduled batch processing',
259
+ 'Third-party integrations',
260
+ 'Workflow orchestration',
261
+ 'Background job processing',
262
+ 'Data pipelines',
263
+ 'Automated notifications / alerts'
264
+ ],
265
+ whenNotToUse: [
266
+ 'Real-time user interactions',
267
+ 'Low latency requirements',
268
+ 'Simple CRUD operations',
269
+ 'User-facing API as primary purpose'
270
+ ],
271
+ corePrinciples: [
272
+ 'All jobs must be idempotent',
273
+ 'Explicit retry policies with backoff',
274
+ 'Comprehensive logging and tracing',
275
+ 'Failure isolation between jobs',
276
+ 'Clear timeout for every operation',
277
+ 'Compensating transactions for failures'
278
+ ],
279
+ folderStructure: {
280
+ name: 'src',
281
+ type: 'folder',
282
+ children: [
283
+ {
284
+ name: 'jobs',
285
+ type: 'folder',
286
+ children: [
287
+ {
288
+ name: 'scheduled',
289
+ type: 'folder',
290
+ description: 'Cron jobs',
291
+ children: [
292
+ { name: 'daily-report', type: 'folder' },
293
+ { name: 'cleanup', type: 'folder' },
294
+ { name: 'sync-external', type: 'folder' }
295
+ ]
296
+ },
297
+ {
298
+ name: 'triggered',
299
+ type: 'folder',
300
+ description: 'Event-triggered jobs'
301
+ },
302
+ {
303
+ name: 'workflows',
304
+ type: 'folder',
305
+ description: 'Multi-step processes'
306
+ }
307
+ ]
308
+ },
309
+ {
310
+ name: 'integrations',
311
+ type: 'folder',
312
+ description: 'External API clients',
313
+ children: [
314
+ { name: 'slack', type: 'folder' },
315
+ { name: 'stripe', type: 'folder' },
316
+ { name: 'sendgrid', type: 'folder' },
317
+ { name: 'salesforce', type: 'folder' }
318
+ ]
319
+ },
320
+ {
321
+ name: 'shared',
322
+ type: 'folder',
323
+ children: [
324
+ { name: 'retry', type: 'folder', description: 'Retry utilities' },
325
+ { name: 'logging', type: 'folder', description: 'Structured logging' },
326
+ { name: 'monitoring', type: 'folder', description: 'Metrics, alerts' }
327
+ ]
328
+ },
329
+ {
330
+ name: 'infrastructure',
331
+ type: 'folder',
332
+ children: [
333
+ { name: 'scheduler', type: 'folder', description: 'Job scheduling' },
334
+ { name: 'queue', type: 'folder', description: 'Job queues' }
335
+ ]
336
+ }
337
+ ]
338
+ },
339
+ commonPitfalls: [
340
+ 'Non-idempotent jobs - re-runs cause duplicates',
341
+ 'Missing retry logic - transient failures break everything',
342
+ 'No dead letter handling - failed jobs disappear',
343
+ 'Insufficient logging - debugging is impossible',
344
+ 'Jobs without timeout - stuck jobs consume resources',
345
+ 'No job state tracking - cannot resume or debug',
346
+ 'Missing alerting on failures'
347
+ ],
348
+ aiInstructions: `When generating code for Automation Backend:
349
+
350
+ JOBS:
351
+ - Every job operation MUST be idempotent
352
+ - Set explicit timeout for every job
353
+ - Include job ID in all log entries
354
+ - Log: job start, progress checkpoints, completion, failure
355
+
356
+ RETRY:
357
+ - Implement exponential backoff for retries
358
+ - Configure max retry attempts
359
+ - Use jitter to prevent thundering herd
360
+ - Different retry strategies for different failure types
361
+
362
+ INTEGRATIONS:
363
+ - Wrap all external API calls with retry logic
364
+ - Implement circuit breaker for unreliable APIs
365
+ - Cache authentication tokens appropriately
366
+ - Handle rate limiting gracefully
367
+
368
+ MONITORING:
369
+ - Track job execution duration
370
+ - Alert on job failures
371
+ - Monitor success/failure rates
372
+ - Dashboard for job status overview
373
+
374
+ WORKFLOWS:
375
+ - Break into checkpointed steps
376
+ - Each step independently resumable
377
+ - Handle partial failures with compensation`
378
+ };
379
+ //# sourceMappingURL=specialized.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specialized.js","sourceRoot":"","sources":["../../src/styles/specialized.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * IronBackend Core Types
3
+ * Shared type definitions for architecture styles, stacks, rules, and security
4
+ */
5
+ export interface ArchitectureStyle {
6
+ id: string;
7
+ name: string;
8
+ description: string;
9
+ whenToUse: string[];
10
+ whenNotToUse: string[];
11
+ corePrinciples: string[];
12
+ folderStructure: FolderNode;
13
+ commonPitfalls: string[];
14
+ aiInstructions: string;
15
+ }
16
+ export interface FolderNode {
17
+ name: string;
18
+ type: 'folder' | 'file';
19
+ description?: string;
20
+ children?: FolderNode[];
21
+ }
22
+ export interface TechStack {
23
+ id: string;
24
+ name: string;
25
+ language: string;
26
+ languageVersion: string;
27
+ framework: string;
28
+ frameworkVersion: string;
29
+ database: DatabaseConfig;
30
+ messaging: MessagingConfig;
31
+ authentication: string;
32
+ logging: string;
33
+ testing: TestingConfig;
34
+ deployment: string[];
35
+ conventions: string[];
36
+ }
37
+ export interface DatabaseConfig {
38
+ type: string;
39
+ orm: string;
40
+ driver?: string;
41
+ }
42
+ export interface MessagingConfig {
43
+ type: string;
44
+ provider: string;
45
+ }
46
+ export interface TestingConfig {
47
+ unit: string;
48
+ integration: string;
49
+ e2e?: string;
50
+ coverageTarget: number;
51
+ }
52
+ export type RuleSeverity = 'ERROR' | 'WARN';
53
+ export type RuleCategory = 'API' | 'DOMAIN' | 'ERROR_HANDLING' | 'TRANSACTIONS' | 'DATA_ACCESS' | 'NAMING' | 'VALIDATION' | 'ASYNC';
54
+ export interface DesignRule {
55
+ id: string;
56
+ category: RuleCategory;
57
+ rule: string;
58
+ severity: RuleSeverity;
59
+ rationale?: string;
60
+ examples?: RuleExample[];
61
+ }
62
+ export interface RuleExample {
63
+ type: 'good' | 'bad';
64
+ code: string;
65
+ explanation?: string;
66
+ }
67
+ export type AuthStrategy = 'JWT' | 'SESSION' | 'API_KEY' | 'OAUTH2' | 'MTLS';
68
+ export type AuthorizationModel = 'RBAC' | 'ABAC';
69
+ export interface AuthConfig {
70
+ strategy: AuthStrategy;
71
+ useWhen: string[];
72
+ implementation: string[];
73
+ }
74
+ export interface SecurityPlaybook {
75
+ authentication: AuthConfig[];
76
+ authorization: AuthorizationDescription;
77
+ rateLimiting: RateLimitConfig;
78
+ idempotency: IdempotencyConfig;
79
+ retryStrategy: RetryConfig;
80
+ circuitBreaker: CircuitBreakerConfig;
81
+ auditLogging: AuditConfig;
82
+ failurePhilosophy: string[];
83
+ }
84
+ export interface AuthorizationDescription {
85
+ rbac: AuthModelDescription;
86
+ abac: AuthModelDescription;
87
+ decisionMatrix: Record<string, {
88
+ rbac: string;
89
+ abac: string;
90
+ }>;
91
+ }
92
+ export interface AuthModelDescription {
93
+ description: string;
94
+ checkPattern: string;
95
+ goodFor: string[];
96
+ }
97
+ export interface RateLimitConfig {
98
+ windowType: string;
99
+ defaultLimit: string;
100
+ anonymousLimit: string;
101
+ headers: string[];
102
+ responseCode: number;
103
+ }
104
+ export interface IdempotencyConfig {
105
+ headerName: string;
106
+ keyFormat: string;
107
+ storageDuration: string;
108
+ implementation: string[];
109
+ }
110
+ export interface RetryConfig {
111
+ baseDelay: string;
112
+ multiplier: number;
113
+ maxRetries: number;
114
+ maxDelay: string;
115
+ jitter: string;
116
+ retryOn: number[];
117
+ doNotRetryOn: number[];
118
+ }
119
+ export interface CircuitBreakerConfig {
120
+ states: string[];
121
+ failureThreshold: number;
122
+ successThreshold: number;
123
+ timeout: string;
124
+ monitoringWindow: string;
125
+ }
126
+ export interface AuditConfig {
127
+ requiredEvents: string[];
128
+ logFormat: Record<string, string>;
129
+ }
130
+ export interface IronBackendConfig {
131
+ version: string;
132
+ style?: string;
133
+ stack?: string;
134
+ rules: {
135
+ enabled: RuleCategory[];
136
+ overrides: Record<string, RuleSeverity>;
137
+ };
138
+ security: {
139
+ authStrategy?: AuthStrategy;
140
+ authorizationModel?: AuthorizationModel;
141
+ };
142
+ }
143
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * IronBackend Core Types
4
+ * Shared type definitions for architecture styles, stacks, rules, and security
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@ironbackend/core",
3
+ "version": "1.0.0",
4
+ "description": "Backend architecture styles, rules, stacks, and security playbooks",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ },
13
+ "./styles": {
14
+ "types": "./dist/styles/index.d.ts",
15
+ "import": "./dist/styles/index.js"
16
+ },
17
+ "./stacks": {
18
+ "types": "./dist/stacks/index.d.ts",
19
+ "import": "./dist/stacks/index.js"
20
+ },
21
+ "./rules": {
22
+ "types": "./dist/rules/index.d.ts",
23
+ "import": "./dist/rules/index.js"
24
+ },
25
+ "./security": {
26
+ "types": "./dist/security/index.d.ts",
27
+ "import": "./dist/security/index.js"
28
+ }
29
+ },
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "keywords": [
34
+ "backend",
35
+ "architecture",
36
+ "ai",
37
+ "coding-assistant",
38
+ "patterns",
39
+ "design-rules"
40
+ ],
41
+ "author": "IronBackend Contributors",
42
+ "license": "MIT",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "https://github.com/ironbackend/ironbackend.git",
46
+ "directory": "packages/core"
47
+ },
48
+ "devDependencies": {
49
+ "typescript": "^5.3.0"
50
+ },
51
+ "scripts": {
52
+ "build": "tsc",
53
+ "test": "vitest run",
54
+ "clean": "rm -rf dist"
55
+ }
56
+ }