Skip to main content
Ringkasan teknologi production (app.sertifikasitrainer.com). Dev lokal memakai stack yang sama; DB bisa Postgres lokal atau Neon.

Diagram stack

Per lapisan

LapisanTeknologiCatatan
RuntimeBun 1.3Monorepo, API dev, tests
FrontendReact 19, Vite 6, TypeScriptPort dev 5757
RoutingReact Router 7Public + workspace /:slug/* + /admin/*
State / fetchTanStack Query, AxiosCache API, mutations
StylingTailwind CSS 4Utility-first
Video player@mux/mux-player-reactPlayback signed JWT
APIHono + OpenAPIapps/api
AuthBetter AuthCookie session + role
ORMDrizzle ORMSchema + migrate di apps/api
DatabasePostgreSQL (Neon prod)Hyperdrive di Workers
Job queuePgBossGenerate dokumen async
AI SDKVercel AI SDK + DeepSeekChat, enricher, section gen
Dokumendocx, docx-templates, pptxgenjsRenderer service
StorageCloudflare R2 (S3 API)Foto, upload file
Video CDNMuxUpload, transcode, signed playback
PaymentScalev API v3QRIS, VA, e-wallet
EmailResendInvite & notifikasi
DeployCloudflare Workers + Wrangler./thub deploy
DocsMintlifyFolder apps/docs
CIGitHub Actions + Biome + Vitest.github/workflows/ci.yml

Monorepo (apps/)

AppPathPeran
webapps/webSPA trainer, admin, checkout publik
apiapps/apiREST /api/*, auth, business logic
rendererapps/rendererRender template DOCX/PPTX (+ browser worker)
docsapps/docsDokumentasi ini
Entry API production: apps/api/src/worker.ts (Workers)
Entry API lokal: apps/api/src/server.ts (Bun + PM2 legacy)

Keamanan (ringkas)

  • CSRFhono/csrf untuk origin frontend yang diizinkan
  • Rate limit — register, generate, payment endpoints
  • Mux — playback policy signed + JWT per lesson
  • Course access — enrollment paid sebelum detail kursus / token video
  • Secrets.env shared → Wrangler secret bulk

Env penting

Lihat Model environment dan Layanan eksternal.

Kode referensi

AreaLokasi
Mount routesapps/api/src/app.ts
Schema DBapps/api/src/db/schema/
Generate pipelineapps/api/src/generation/
Paymentapps/api/src/payment/
Kelas & videoapps/api/src/kelas/
Frontend routesapps/web/src/routes/