app.sertifikasitrainer.com). Dev lokal memakai stack yang sama; DB bisa Postgres lokal atau Neon.
Diagram stack
Per lapisan
| Lapisan | Teknologi | Catatan |
|---|---|---|
| Runtime | Bun 1.3 | Monorepo, API dev, tests |
| Frontend | React 19, Vite 6, TypeScript | Port dev 5757 |
| Routing | React Router 7 | Public + workspace /:slug/* + /admin/* |
| State / fetch | TanStack Query, Axios | Cache API, mutations |
| Styling | Tailwind CSS 4 | Utility-first |
| Video player | @mux/mux-player-react | Playback signed JWT |
| API | Hono + OpenAPI | apps/api |
| Auth | Better Auth | Cookie session + role |
| ORM | Drizzle ORM | Schema + migrate di apps/api |
| Database | PostgreSQL (Neon prod) | Hyperdrive di Workers |
| Job queue | PgBoss | Generate dokumen async |
| AI SDK | Vercel AI SDK + DeepSeek | Chat, enricher, section gen |
| Dokumen | docx, docx-templates, pptxgenjs | Renderer service |
| Storage | Cloudflare R2 (S3 API) | Foto, upload file |
| Video CDN | Mux | Upload, transcode, signed playback |
| Payment | Scalev API v3 | QRIS, VA, e-wallet |
| Resend | Invite & notifikasi | |
| Deploy | Cloudflare Workers + Wrangler | ./thub deploy |
| Docs | Mintlify | Folder apps/docs |
| CI | GitHub Actions + Biome + Vitest | .github/workflows/ci.yml |
Monorepo (apps/)
| App | Path | Peran |
|---|---|---|
| web | apps/web | SPA trainer, admin, checkout publik |
| api | apps/api | REST /api/*, auth, business logic |
| renderer | apps/renderer | Render template DOCX/PPTX (+ browser worker) |
| docs | apps/docs | Dokumentasi ini |
apps/api/src/worker.ts (Workers)Entry API lokal:
apps/api/src/server.ts (Bun + PM2 legacy)
Keamanan (ringkas)
- CSRF —
hono/csrfuntuk origin frontend yang diizinkan - Rate limit — register, generate, payment endpoints
- Mux — playback policy
signed+ JWT per lesson - Course access — enrollment
paidsebelum detail kursus / token video - Secrets —
.envshared → Wranglersecret bulk
Env penting
Lihat Model environment dan Layanan eksternal.Kode referensi
| Area | Lokasi |
|---|---|
| Mount routes | apps/api/src/app.ts |
| Schema DB | apps/api/src/db/schema/ |
| Generate pipeline | apps/api/src/generation/ |
| Payment | apps/api/src/payment/ |
| Kelas & video | apps/api/src/kelas/ |
| Frontend routes | apps/web/src/routes/ |