haer-platform-api
Backend transaksional utama. Repo:
github.com/msa-haer-org/haer-platform-api
· folder lokal: backend-nestjs-boilerplate.
Stack
NestJS + TypeORM, TypeScript, Postgres (+ Oracle). Auth via Zitadel (JWT/SSO). Bukan heavy-lifting async — itu haer-platform-bgjobs.
Struktur
- Pola NestJS:
module/controller/service/dto. src/**/*.entity.ts— source of truth schema (TypeORM).src/database/migrations/*— source of truth migration.docs/AUTH.md,docs/SSO.md— auth flow, tenant resolution.
Menjalankan
Ikuti README.md. Butuh Postgres + Zitadel. Port & kredensial ambil dari
.env.example.
Konvensi
- Auth & tenant di-resolve server-side dari session; jangan percaya klaim dari client.
- RBAC/RBP di-enforce di action, bukan cuma route.
- Audit log untuk CREATE / UPDATE / DELETE di data tenant.
- Kontrak entity-based, ikut OData / REST. Perubahan kontrak → “API contract impact” + kabarin konsumer (web, mobile).
Migrasi (TypeORM)
synchronize: falseselalu. Jangan pernahtrue.- Jangan generate terhadap DB shared/remote. Pakai scratch DB lokal: kosong → run semua migration → baru generate.
- Verifikasi di clean DB (drop → recreate → run semua). Gagal = migration rusak, jangan merge.
- Oracle butuh wrapper script — jangan panggil TypeORM CLI langsung.
- Migration dari entity dipasangkan dua provider (Postgres + Oracle) di PR yang sama.
- Jangan edit migration yang udah merged — bikin baru.
- Sebelum handoff:
migration:show,migration:run,migration:revert.
Aturan lintas-repo: Data & Migrations.
Deploy
Dideploy via Coolify (di luar compose produksi utama).
Source of truth:
AGENTS.md+docs/AUTH.md+docs/SSO.mddi repo.