Arsitektur monorepo
apps/api adalah Express application yang dipasang pada /api. Aplikasi web, landing, commerce, dan mobile bertindak sebagai API consumers.
Alur request
Client -> apiFetch -> HTTPS /api -> request context -> security/CORS/rate limit
-> router -> validation -> auth/ownership -> service -> Prisma client -> databaseMiddleware dipasang berurutan: request context, security headers, CORS guard, rate limit, content-type validation, body parser, lalu router. Error diproses oleh handler terpusat.
Empat database fisik
| Database | Boundary | Model utama |
|---|---|---|
| runner | identity dan tenancy | User, Account, Session, Organization, Member, FAQ |
| catalog | definisi produk | Product, ProductVariant, Service, Category, Promotion |
| commerce | transaksi | Cart, Customer, Order, Invoice, Payment, Shipment |
| inventory | stok dan gudang | Warehouse, InventoryItem, Batch, Movement, Transfer |
Jangan menganggap relasi organizationId, productId, atau memberId sebagai foreign key lintas database. Service harus melakukan existence check melalui client pemilik data.
Package boundaries
Gunakan package bersama untuk konfigurasi, types, dan UI sesuai pola monorepo. Jangan mengimpor generated Prisma client ke browser bundle. Query database hanya boleh berada di server/API boundary.