siesa-agents 2.1.26-dev.0 → 2.1.26-dev.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 (63) hide show
  1. package/README.md +7 -2
  2. package/bin/install.js +106 -5
  3. package/bmad-core/agents/analyst.md +1 -1
  4. package/bmad-core/agents/architect.md +24 -2
  5. package/bmad-core/agents/backend-agent.md +74 -86
  6. package/bmad-core/agents/bmad-master.md +2 -2
  7. package/bmad-core/agents/bmad-orchestrator.md +2 -2
  8. package/bmad-core/agents/dev.md +1 -1
  9. package/bmad-core/agents/frontend-agent.md +4 -4
  10. package/bmad-core/agents/pm.md +4 -1
  11. package/bmad-core/agents/po.md +4 -1
  12. package/bmad-core/agents/qa.md +1 -1
  13. package/bmad-core/agents/sm.md +1 -1
  14. package/bmad-core/agents/ux-expert.md +2 -1
  15. package/bmad-core/checklists/architect-checklist.md +2 -0
  16. package/bmad-core/checklists/backend-checklist.md +10 -6
  17. package/bmad-core/data/architecture-patterns.md +415 -0
  18. package/bmad-core/data/backend-standards.md +737 -365
  19. package/bmad-core/data/bmad-kb.md +1 -1
  20. package/bmad-core/data/frontend-standards.md +1 -1
  21. package/bmad-core/data/technical-preferences-ux.md +1 -1
  22. package/bmad-core/data/technical-preferences.md +106 -1
  23. package/bmad-core/data/technology-stack.md +235 -0
  24. package/bmad-core/tasks/apply-qa-fixes.md +4 -4
  25. package/bmad-core/tasks/create-doc.md +59 -0
  26. package/bmad-core/tasks/create-entity.md +3 -3
  27. package/bmad-core/tasks/create-next-story.md +1 -1
  28. package/bmad-core/tasks/create-service.md +3 -3
  29. package/bmad-core/tasks/nfr-assess.md +3 -3
  30. package/bmad-core/tasks/qa-gate.md +2 -2
  31. package/bmad-core/tasks/review-story.md +1 -1
  32. package/bmad-core/tasks/scaffold-backend.md +13 -9
  33. package/bmad-core/tasks/scaffold-frontend.md +2 -2
  34. package/bmad-core/templates/architecture-tmpl.yaml +2 -2
  35. package/bmad-core/templates/front-end-architecture-tmpl.yaml +1 -1
  36. package/bmad-core/templates/story-tmpl.yaml +1 -1
  37. package/bmad-core/user-guide.md +1 -1
  38. package/claude/commands/BMad/agents/analyst.md +1 -1
  39. package/claude/commands/BMad/agents/architect.md +21 -1
  40. package/claude/commands/BMad/agents/backend.md +86 -99
  41. package/claude/commands/BMad/agents/bmad-master.md +2 -2
  42. package/claude/commands/BMad/agents/bmad-orchestrator.md +2 -2
  43. package/claude/commands/BMad/agents/dev.md +1 -1
  44. package/claude/commands/BMad/agents/frontend.md +4 -4
  45. package/claude/commands/BMad/agents/pm.md +4 -1
  46. package/claude/commands/BMad/agents/po.md +4 -1
  47. package/claude/commands/BMad/agents/qa.md +1 -1
  48. package/claude/commands/BMad/agents/sm.md +1 -1
  49. package/claude/commands/BMad/agents/ux-expert.md +1 -1
  50. package/claude/commands/BMad/tasks/apply-qa-fixes.md +4 -4
  51. package/claude/commands/BMad/tasks/create-doc.md +48 -0
  52. package/claude/commands/BMad/tasks/create-next-story.md +1 -1
  53. package/claude/commands/BMad/tasks/nfr-assess.md +3 -3
  54. package/claude/commands/BMad/tasks/qa-gate.md +2 -2
  55. package/claude/commands/BMad/tasks/review-story.md +1 -1
  56. package/claude/settings.local.json +18 -1
  57. package/github/chatmodes/architect.chatmode.md +7 -1
  58. package/github/chatmodes/backend.chatmode.md +133 -109
  59. package/github/chatmodes/dev.chatmode.md +12 -4
  60. package/github/chatmodes/frontend.chatmode.md +3 -3
  61. package/github/chatmodes/qa.chatmode.md +9 -3
  62. package/kiro/steering/agent-detection.md +16 -16
  63. package/package.json +1 -1
@@ -18,8 +18,9 @@
18
18
  - [ ] Domain services handle complex business logic
19
19
  - [ ] Ubiquitous language used throughout codebase
20
20
 
21
- ## NestJS & TypeScript
22
- - [ ] NestJS 10+ with TypeScript strict mode
21
+ ## .NET & C#
22
+ - [ ] .NET 10 with C# latest version
23
+ - [ ] Nullable reference types enabled
23
24
  - [ ] Dependency injection properly configured
24
25
  - [ ] All classes and methods have proper type definitions
25
26
  - [ ] No usage of `any` type
@@ -27,9 +28,11 @@
27
28
  - [ ] Module organization follows domain boundaries
28
29
  - [ ] Guards and interceptors properly implemented
29
30
 
30
- ## Database & Prisma
31
- - [ ] Prisma schema properly defined
32
- - [ ] No raw SQL queries - all operations through Prisma
31
+ ## Database & Entity Framework Core
32
+ - [ ] EF Core DbContext properly configured
33
+ - [ ] Entity configurations use Fluent API
34
+ - [ ] No raw SQL queries - all operations through EF Core
35
+ - [ ] Migrations properly versioned
33
36
  - [ ] Database migrations created and tested
34
37
  - [ ] Proper indexing for performance
35
38
  - [ ] Foreign key relationships properly defined
@@ -50,7 +53,8 @@
50
53
  - [ ] Repository methods return domain entities
51
54
  - [ ] Proper abstraction of data access concerns
52
55
  - [ ] Repository tests with test database
53
- - [ ] Prisma transformations to/from domain entities
56
+ - [ ] EF Core entity configurations map to domain entities
57
+ - [ ] AutoMapper profiles for DTO transformations
54
58
 
55
59
  ## API Design
56
60
  - [ ] REST endpoints follow RESTful conventions
@@ -0,0 +1,415 @@
1
+ # Architecture Patterns & Design Decisions
2
+
3
+ ## Frontend Architecture
4
+
5
+ ### Architecture Style
6
+ - **Clean Architecture** + **Domain-Driven Design (DDD)**
7
+
8
+ ### Folder Structure
9
+
10
+ Next.js 16 App Router Structure with Clean Architecture + DDD:
11
+
12
+ ```
13
+ ├── app/ # Next.js App Router directory
14
+ │ ├── (dashboard)/ # Route groups for dashboard
15
+ │ ├── sales/ # Routes for sales module
16
+ │ │ ├── quotes/ # Quote management pages
17
+ │ │ └── invoices/ # Invoice pages
18
+ │ ├── inventory/ # Inventory routes
19
+ │ ├── globals.css # Global styles
20
+ │ ├── layout.tsx # Root layout component
21
+ │ ├── page.tsx # Home page
22
+ │ ├── loading.tsx # Global loading UI
23
+ │ └── not-found.tsx # 404 page
24
+
25
+ ├── src/
26
+ │ ├── modules/ # Business modules following DDD
27
+ │ │ ├── sales/ # Sales module
28
+ │ │ │ ├── quotes/ # Quote domain
29
+ │ │ │ │ ├── cart/ # Shopping cart feature
30
+ │ │ │ │ │ ├── domain/
31
+ │ │ │ │ │ │ ├── entities/
32
+ │ │ │ │ │ │ ├── repositories/
33
+ │ │ │ │ │ │ ├── services/
34
+ │ │ │ │ │ │ └── types/
35
+ │ │ │ │ │ ├── application/
36
+ │ │ │ │ │ │ ├── use-cases/
37
+ │ │ │ │ │ │ ├── hooks/
38
+ │ │ │ │ │ │ └── store/
39
+ │ │ │ │ │ ├── infrastructure/
40
+ │ │ │ │ │ │ ├── repositories/
41
+ │ │ │ │ │ │ ├── api/
42
+ │ │ │ │ │ │ └── adapters/
43
+ │ │ │ │ │ └── presentation/
44
+ │ │ │ │ │ └── components/ # Only components, pages in app/
45
+ │ │ │ │ └── products/ # Products feature
46
+ │ │ │ └── billing/ # Billing domain
47
+ │ │ ├── inventory/ # Inventory module
48
+ │ │ └── users/ # User module
49
+ │ │
50
+ │ ├── shared/
51
+ │ │ ├── components/ # Reusable UI components
52
+ │ │ ├── hooks/ # Shared hooks
53
+ │ │ ├── utils/ # Utility functions
54
+ │ │ ├── types/ # Common TypeScript types
55
+ │ │ └── constants/ # App constants
56
+ │ │
57
+ │ ├── providers/ # React context providers
58
+ │ ├── store/ # Global Zustand stores
59
+ │ └── middleware.ts # Next.js middleware
60
+
61
+ ├── lib/ # Next.js utilities and configurations
62
+ ├── components/ # Global UI components (alternative to src/shared)
63
+ ├── public/ # Static assets and PWA manifest
64
+ └── styles/ # Additional stylesheets
65
+ ```
66
+
67
+ ### Core Principles
68
+
69
+ #### Clean Architecture First
70
+ Strict separation of:
71
+ - **Domain layer** - Business entities, repositories interfaces, domain services, and types
72
+ - **Application layer** - Use cases, hooks, and state management (Zustand stores)
73
+ - **Infrastructure layer** - Repository implementations, API clients, and adapters
74
+ - **Presentation layer** - UI components (pages go in `app/`, components in `presentation/`)
75
+
76
+ #### Domain-Driven Design
77
+ Business logic drives architecture decisions. Organize by business modules and domains, not technical layers.
78
+
79
+ #### Component Composition
80
+ Build complex UIs from simple, reusable components.
81
+
82
+ #### Type Safety
83
+ Leverage TypeScript for compile-time safety and developer experience.
84
+
85
+ #### Performance by Design
86
+ - Lazy loading
87
+ - Memoization
88
+ - Bundle optimization
89
+
90
+ #### Accessibility as Standard
91
+ WCAG 2.1 AA compliance in all components.
92
+
93
+ #### Test-Driven Development
94
+ Unit tests for all use cases and components.
95
+
96
+ #### Progressive Web App
97
+ Offline-first approach with service workers.
98
+
99
+ #### Minimal and Functional
100
+ Only build what's explicitly requested, nothing more.
101
+
102
+ #### User-Centered Design
103
+ Start with user needs and work backward to implementation.
104
+
105
+ #### MCP Shadcn Available
106
+ Use MCP to install Shadcn components instead of creating manually.
107
+
108
+ ### Framework Selection Rules
109
+
110
+ **Default**: Always use Next.js 16 with App Router unless explicitly told otherwise.
111
+
112
+ **Exceptions**: Only use pure React + Vite when user specifically mentions offline-first functionality or requests non-Next.js setup.
113
+
114
+ **Reasoning**: Next.js provides better developer experience, built-in optimization, and easier deployment while maintaining PWA capabilities.
115
+
116
+ ## Backend Architecture
117
+
118
+ ### Architecture Style
119
+ - **Clean Architecture** + **Domain-Driven Design (DDD)** + **Microservices**
120
+
121
+ ### Technology Stack
122
+ - **.NET 10** with **C# Minimal API**
123
+ - **Entity Framework Core** with **PostgreSQL**
124
+ - **UUID (Guid)** primary keys mandatory
125
+ - **linq2db**, **DynamicLinq**, **LinqKit** for advanced queries
126
+ - **FluentValidation** for validation
127
+ - **xUnit** for testing
128
+ - **Scalar** for API documentation (NO Swagger)
129
+ - **QuestPDF** for PDF generation
130
+
131
+ ### Folder Structure
132
+
133
+ .NET Solution Structure with Clean Architecture + DDD + Microservices:
134
+
135
+ ```
136
+ ├── src/
137
+ │ ├── Services/ # Microservices
138
+ │ │ ├── Sales/ # Sales domain microservice
139
+ │ │ │ ├── Sales.API/ # Minimal API project
140
+ │ │ │ │ ├── Program.cs # Application entry point
141
+ │ │ │ │ ├── appsettings.json
142
+ │ │ │ │ ├── Endpoints/ # Minimal API endpoints
143
+ │ │ │ │ │ ├── UserEndpoints.cs
144
+ │ │ │ │ │ └── QuoteEndpoints.cs
145
+ │ │ │ │ ├── Filters/
146
+ │ │ │ │ ├── Middleware/
147
+ │ │ │ │ └── Sales.API.csproj
148
+ │ │ │ │
149
+ │ │ │ ├── Sales.Application/ # Application layer
150
+ │ │ │ │ ├── Quotes/ # Bounded context
151
+ │ │ │ │ │ ├── Commands/
152
+ │ │ │ │ │ │ ├── CreateQuoteCommand.cs
153
+ │ │ │ │ │ │ └── CreateQuoteCommandHandler.cs
154
+ │ │ │ │ │ ├── Queries/
155
+ │ │ │ │ │ │ ├── GetQuoteByIdQuery.cs
156
+ │ │ │ │ │ │ └── GetQuoteByIdQueryHandler.cs
157
+ │ │ │ │ │ ├── DTOs/
158
+ │ │ │ │ │ │ └── QuoteResponseDto.cs
159
+ │ │ │ │ │ ├── Validators/ # FluentValidation
160
+ │ │ │ │ │ │ └── CreateQuoteCommandValidator.cs
161
+ │ │ │ │ │ └── Interfaces/ # Repository interfaces
162
+ │ │ │ │ │ └── IQuoteRepository.cs
163
+ │ │ │ │ └── Sales.Application.csproj
164
+ │ │ │ │
165
+ │ │ │ ├── Sales.Domain/ # Domain layer
166
+ │ │ │ │ ├── Quotes/ # Bounded context
167
+ │ │ │ │ │ ├── Entities/
168
+ │ │ │ │ │ │ └── QuoteEntity.cs
169
+ │ │ │ │ │ ├── ValueObjects/
170
+ │ │ │ │ │ │ ├── QuoteNumber.cs
171
+ │ │ │ │ │ │ └── Money.cs
172
+ │ │ │ │ │ ├── Aggregates/
173
+ │ │ │ │ │ │ └── QuoteAggregate.cs
174
+ │ │ │ │ │ ├── Events/
175
+ │ │ │ │ │ │ └── QuoteCreatedEvent.cs
176
+ │ │ │ │ │ └── Services/ # Domain services
177
+ │ │ │ │ │ └── QuotePricingService.cs
178
+ │ │ │ │ └── Sales.Domain.csproj
179
+ │ │ │ │
180
+ │ │ │ └── Sales.Infrastructure/ # Infrastructure layer
181
+ │ │ │ ├── Data/
182
+ │ │ │ │ ├── ApplicationDbContext.cs
183
+ │ │ │ │ ├── Configurations/ # EF Core configurations
184
+ │ │ │ │ │ ├── QuoteConfiguration.cs
185
+ │ │ │ │ │ └── UserConfiguration.cs
186
+ │ │ │ │ └── Migrations/ # EF Core migrations
187
+ │ │ │ ├── Repositories/ # Repository implementations
188
+ │ │ │ │ └── QuoteRepository.cs
189
+ │ │ │ ├── Services/ # External service adapters
190
+ │ │ │ │ └── EmailService.cs
191
+ │ │ │ └── Sales.Infrastructure.csproj
192
+ │ │ │
193
+ │ │ ├── Inventory/ # Inventory microservice (independent DB)
194
+ │ │ │ ├── Inventory.API/
195
+ │ │ │ ├── Inventory.Application/
196
+ │ │ │ ├── Inventory.Domain/
197
+ │ │ │ └── Inventory.Infrastructure/
198
+ │ │ │ └── Data/ # Separate PostgreSQL DB
199
+ │ │ │ └── InventoryDbContext.cs
200
+ │ │ │
201
+ │ │ └── Users/ # Users microservice (independent DB)
202
+ │ │ ├── Users.API/
203
+ │ │ ├── Users.Application/
204
+ │ │ ├── Users.Domain/
205
+ │ │ └── Users.Infrastructure/
206
+ │ │ └── Data/ # Separate PostgreSQL DB
207
+ │ │ └── UsersDbContext.cs
208
+ │ │
209
+ │ └── Shared/ # Shared libraries
210
+ │ ├── Shared.Domain/ # Shared domain concepts
211
+ │ │ ├── Base/
212
+ │ │ │ ├── AggregateRoot.cs
213
+ │ │ │ ├── Entity.cs
214
+ │ │ │ ├── ValueObject.cs
215
+ │ │ │ └── DomainEvent.cs
216
+ │ │ ├── Interfaces/
217
+ │ │ │ ├── IRepository.cs
218
+ │ │ │ └── IUnitOfWork.cs
219
+ │ │ └── Shared.Domain.csproj
220
+ │ │
221
+ │ ├── Shared.Infrastructure/ # Shared infrastructure
222
+ │ │ ├── Data/
223
+ │ │ │ ├── BaseRepository.cs
224
+ │ │ │ └── UnitOfWork.cs
225
+ │ │ ├── Filters/
226
+ │ │ │ └── ValidationFilter.cs
227
+ │ │ ├── Middleware/
228
+ │ │ │ ├── ExceptionHandlingMiddleware.cs
229
+ │ │ │ └── LoggingMiddleware.cs
230
+ │ │ └── Shared.Infrastructure.csproj
231
+ │ │
232
+ │ └── Shared.Common/ # Common utilities
233
+ │ ├── Extensions/
234
+ │ │ ├── StringExtensions.cs
235
+ │ │ └── GuidExtensions.cs
236
+ │ ├── Helpers/
237
+ │ │ └── DateTimeHelper.cs
238
+ │ ├── Constants/
239
+ │ │ └── ErrorMessages.cs
240
+ │ └── Shared.Common.csproj
241
+
242
+ ├── tests/ # Test projects
243
+ │ ├── Sales.UnitTests/
244
+ │ │ ├── Domain/
245
+ │ │ ├── Application/
246
+ │ │ └── Sales.UnitTests.csproj
247
+ │ ├── Sales.IntegrationTests/
248
+ │ │ ├── Repositories/
249
+ │ │ ├── API/
250
+ │ │ └── Sales.IntegrationTests.csproj
251
+ │ ├── Inventory.UnitTests/
252
+ │ └── Users.UnitTests/
253
+
254
+ ├── docker/ # Docker configurations (Production only)
255
+ │ ├── docker-compose.yml
256
+ │ └── Dockerfiles/
257
+ │ ├── Sales.Dockerfile
258
+ │ ├── Inventory.Dockerfile
259
+ │ └── Users.Dockerfile
260
+
261
+ └── YourSolution.sln # Solution file
262
+ ```
263
+
264
+ ### Microservices Communication Patterns
265
+
266
+ #### 1. Synchronous Communication (REST)
267
+ ```csharp
268
+ // HTTP client for inter-service communication
269
+ public class InventoryServiceClient
270
+ {
271
+ private readonly HttpClient _httpClient;
272
+
273
+ public InventoryServiceClient(HttpClient httpClient)
274
+ {
275
+ _httpClient = httpClient;
276
+ }
277
+
278
+ public async Task<ProductAvailabilityDto> CheckProductAvailabilityAsync(
279
+ Guid productId,
280
+ CancellationToken cancellationToken)
281
+ {
282
+ var response = await _httpClient.GetAsync(
283
+ $"/api/products/{productId}/availability",
284
+ cancellationToken);
285
+ response.EnsureSuccessStatusCode();
286
+ return await response.Content.ReadFromJsonAsync<ProductAvailabilityDto>(cancellationToken);
287
+ }
288
+ }
289
+ ```
290
+
291
+ #### 2. Asynchronous Communication (Message Broker)
292
+ - **RabbitMQ** or **Azure Service Bus** for event-driven architecture
293
+ - Each microservice publishes domain events
294
+ - Other services subscribe to relevant events
295
+
296
+ #### 3. gRPC for High-Performance Communication
297
+ - Use for internal high-throughput service-to-service calls
298
+ - Protocol Buffers for efficient serialization
299
+
300
+ ### Database per Microservice Pattern
301
+
302
+ **Key Principles:**
303
+ - Each microservice has its own PostgreSQL database
304
+ - No direct database access between services
305
+ - Data consistency via eventual consistency and sagas
306
+ - Each database uses UUID (Guid) primary keys
307
+
308
+ **Connection String Pattern:**
309
+ ```json
310
+ {
311
+ "ConnectionStrings": {
312
+ "SalesDb": "Host=localhost;Database=sales_db;Username=admin;Password=***",
313
+ "InventoryDb": "Host=localhost;Database=inventory_db;Username=admin;Password=***",
314
+ "UsersDb": "Host=localhost;Database=users_db;Username=admin;Password=***"
315
+ }
316
+ }
317
+ ```
318
+
319
+ ### Core Backend Principles
320
+
321
+ #### Clean Architecture Layers
322
+ 1. **Domain Layer** - Business entities, value objects, domain services (no dependencies)
323
+ 2. **Application Layer** - Commands, queries, validators, interfaces (depends on Domain)
324
+ 3. **Infrastructure Layer** - EF Core, repositories, external services (depends on Application)
325
+ 4. **Presentation Layer** - Minimal API endpoints (depends on Application)
326
+
327
+ #### UUID Primary Keys
328
+ ```csharp
329
+ public abstract class Entity
330
+ {
331
+ public Guid Id { get; protected set; } = Guid.NewGuid();
332
+ }
333
+ ```
334
+
335
+ #### Entity Framework Core Configuration
336
+ ```csharp
337
+ public class QuoteConfiguration : IEntityTypeConfiguration<QuoteEntity>
338
+ {
339
+ public void Configure(EntityTypeBuilder<QuoteEntity> builder)
340
+ {
341
+ builder.ToTable("Quotes");
342
+ builder.HasKey(q => q.Id);
343
+
344
+ builder.Property(q => q.Id)
345
+ .HasColumnType("uuid")
346
+ .IsRequired();
347
+
348
+ builder.OwnsOne(q => q.QuoteNumber, qn =>
349
+ {
350
+ qn.Property(n => n.Value)
351
+ .HasColumnName("QuoteNumber")
352
+ .HasMaxLength(50)
353
+ .IsRequired();
354
+ });
355
+ }
356
+ }
357
+ ```
358
+
359
+ #### Test-Driven Development
360
+ - Write xUnit tests before or alongside implementation
361
+ - Use EF Core InMemory for fast unit tests
362
+ - Use PostgreSQL Test Containers for integration tests
363
+ - Mock external dependencies
364
+
365
+ #### FluentValidation Usage
366
+ ```csharp
367
+ public class CreateQuoteCommandValidator : AbstractValidator<CreateQuoteCommand>
368
+ {
369
+ public CreateQuoteCommandValidator()
370
+ {
371
+ RuleFor(x => x.CustomerId)
372
+ .NotEmpty()
373
+ .WithMessage("Customer ID is required");
374
+
375
+ RuleFor(x => x.Items)
376
+ .NotEmpty()
377
+ .WithMessage("At least one item is required");
378
+ }
379
+ }
380
+ ```
381
+
382
+ #### Scalar API Documentation
383
+ Register Scalar instead of Swagger in Program.cs:
384
+ ```csharp
385
+ app.MapScalarApiReference(); // NOT app.UseSwagger()
386
+ ```
387
+
388
+ ## Summary
389
+
390
+ ### Frontend
391
+ - **Framework**: Next.js 16 with TypeScript and App Router
392
+ - **Architecture**: Clean Architecture + DDD
393
+ - **State**: Zustand
394
+ - **UI**: shadcn/ui + Radix UI + TailwindCSS v4
395
+ - **Testing**: Vitest + React Testing Library
396
+ - **Validation**: Zod + React Hook Form
397
+
398
+ ### Backend
399
+ - **Framework**: .NET 10 with C# Minimal API
400
+ - **Architecture**: Clean Architecture + DDD + Microservices
401
+ - **Database**: PostgreSQL (one per microservice)
402
+ - **ORM**: Entity Framework Core + linq2db + DynamicLinq + LinqKit
403
+ - **Validation**: FluentValidation
404
+ - **Testing**: xUnit + EF Core InMemory + PostgreSQL Test Containers
405
+ - **Documentation**: Scalar (NO Swagger)
406
+ - **Primary Keys**: UUID (Guid) mandatory
407
+ - **PDF Generation**: QuestPDF
408
+
409
+ ### Key Principles
410
+ 1. **Clean Architecture** - Strict layer separation in both frontend and backend
411
+ 2. **Domain-Driven Design** - Business logic drives all decisions
412
+ 3. **Test-Driven Development** - Tests before/alongside implementation
413
+ 4. **Database per Microservice** - Complete isolation between services
414
+ 5. **Type Safety** - TypeScript (frontend) and C# (backend) strong typing
415
+ 6. **Docker for Production** - Local development without containers