haer-platform-web
Frontend web HAER. Repo: github.com/msa-haer-org/haer-platform-web · folder lokal: haer-web.
Stack
Next.js (App Router) + Turborepo, TypeScript, pnpm 9.1.0, ESLint, Prettier, Husky, Commitlint, Tailwind + design tokens, Playwright (E2E/a11y).
Struktur
apps/web— aplikasi Next.js: route orchestration, layout, auth/tenant, plumbing API.apps/docs— dokumentasi (Nextra) — handbook ini.packages/ui— UI primitives + app-base + design system.packages/types— kontrak domain / API / auth lintas-package.packages/config— config TS / Tailwind / tooling.packages/feature-*— implementasi fitur per-domain.
Menjalankan
pnpm install
pnpm dev:webDocs app: pnpm --filter docs dev (port 3100). Tenant lokal pakai slug (mis.
acme-corp) di URL; slug salah → 404.
Konvensi
page.tsxtipis — cuma mount feature module. Route bucket tetap:(marketing),(auth),[tenant],platform-admin.- Feature package cuma di-import lewat public entrypoint (
@haer/feature-*); import internalsrc/*dilarang. - Call backend: browser lewat
apps/web/src/lib/api/api-client.ts+/api/proxy; server lewatbackend-server.ts. Kontrak lintas-package dipackages/types. - UI reuse order:
@haer/ui→packages/ui/src/app-base/*→ app-base baru. Pakai token semantik, bukan literal. - TypeScript: hindari
any. Komentar cuma untuk workaround/business logic kritis (JSDoc). - Nambah
packages/*butuh 3 edit (transpilePackagesdinext.config.mjs,COPYdiDockerfilestage deps,pnpm install) — kalau nggak, clean build Docker gagal walaupnpm buildlokal lolos.
Data & migrasi
Repo ini web client, nggak punya schema. Perubahan yang nyiratin schema backend dikoordinasi ke haer-platform-api via “API contract impact”.
Deploy
Dideploy via compose stack produksi. Di-version oleh release-please (push ke
main); seluruh Turborepo satu versi.
Source of truth:
AGENTS.md+docs/engineering-development-standard.mddi repo.