Skip to Content
Engineering HandbookRepositorieshaer-platform-web

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:web

Docs app: pnpm --filter docs dev (port 3100). Tenant lokal pakai slug (mis. acme-corp) di URL; slug salah → 404.

Konvensi

  • page.tsx tipis — cuma mount feature module. Route bucket tetap: (marketing), (auth), [tenant], platform-admin.
  • Feature package cuma di-import lewat public entrypoint (@haer/feature-*); import internal src/* dilarang.
  • Call backend: browser lewat apps/web/src/lib/api/api-client.ts + /api/proxy; server lewat backend-server.ts. Kontrak lintas-package di packages/types.
  • UI reuse order: @haer/uipackages/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 (transpilePackages di next.config.mjs, COPY di Dockerfile stage deps, pnpm install) — kalau nggak, clean build Docker gagal walau pnpm build lokal 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.md di repo.