LearnInk Core System
Identitas Proyek
- •Nama: LearnInk — Platform pembelajaran berbasis web (PWA).
- •Stack: Vite + React 18 + TypeScript + Supabase + TanStack Query.
- •Package Manager: Gunakan
bununtuk semua operasi (install, build, lint, test). - •Port Dev:
1400(bukan 3000).
Arsitektur Folder
code
src/ ├── components/ │ ├── ui/ # Komponen primitif (shadcn/ui) │ ├── shared/ # Komponen reusable (MarkdownRenderer, ErrorBoundary) │ ├── features/ # Komponen per-fitur (module/, dashboard/, auth/) │ └── layout/ # Layout components (BottomNavigation) ├── contexts/ # React Context (Auth, Theme, Language, PWA) ├── hooks/ # Custom hooks (useModules, useQuiz, useUserRole, dll.) ├── integrations/ # Supabase client & types ├── pages/ # Route pages (public/, dashboard/, learning/, admin/) ├── lib/ # Utilities (utils.ts, logger.ts) ├── locales/ # i18n translations (ID, EN, ZH) └── types/ # TypeScript type definitions
Aturan Wajib
TypeScript
- •DILARANG menggunakan tipe
any. Gunakanunknown, generic, atau buat interface khusus. - •Semua props komponen harus memiliki interface yang terdefinisi.
- •Import tipe Supabase dari
@/integrations/supabase/types.
Lazy Loading
- •SEMUA halaman di
App.tsxharus menggunakanlazy()+<Suspense>. - •Komponen berat (seperti
PythonCodeEditor) juga wajib lazy-loaded.
Proteksi Role
- •Gunakan
<ProtectedRoute>untuk halaman yang memerlukan login. - •Gunakan
<RoleProtectedRoute allowedRoles={[...]}>untuk halaman admin/tutor. - •SUPERADMIN tidak boleh di-ban, di-demote, atau diubah role-nya dari UI manapun.
- •Cek proteksi Superadmin ada di
useUserRole.tsdanuseUsers.ts.
Environment Strategy
- •
.env.development→ Supabase Dev project. - •
.env.production→ Supabase Prod project. - •JANGAN PERNAH expose Service Role Key di variabel
VITE_*. - •Edge Function secrets dikelola via
supabase secrets set.
Terminologi
- •Gunakan "Lembaran" bukan "Halaman" untuk page di konteks UI Indonesia.
- •Teks UI menggunakan Bahasa Indonesia sebagai default, dengan dukungan EN dan ZH.
Git & Versioning
- •1 hari = 1 versi maximum di CHANGELOG.
- •Kategori CHANGELOG:
Improvements,Fixes,Patches. - •Timezone: Jakarta (WIB, UTC+7).