Skip to Content

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: false selalu. Jangan pernah true.
  • 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.md di repo.