engineering docs

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 -> database

Middleware 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

DatabaseBoundaryModel utama
runneridentity dan tenancyUser, Account, Session, Organization, Member, FAQ
catalogdefinisi produkProduct, ProductVariant, Service, Category, Promotion
commercetransaksiCart, Customer, Order, Invoice, Payment, Shipment
inventorystok dan gudangWarehouse, 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.