Panggih Sedulur Apps
š Tech Stack
- Framework: Next.js (App Router)
- Styling: Tailwind CSS
- Form & Validasi: React Hook Form + Zod
- Database: Supabase
- Language: TypeScript
šÆ Kategori Utama & Alur Logika
- Olahraga
- Seni
- Penalaran
- Pecinta Alam
- Sosial & Disiplin
Alur Implementasi Kuisioner:
- Pengisian Biodata: Pengguna mengisi form di /kuisioner/biodata yang kemudian disimpan secara persisten di sesi browser (localStorage).
- Soal Level 1: Pengguna menjawab 5 pertanyaan awal yang berfungsi menentukan skor dasar tiap kategori.
- Branching Logic: Sistem mendeteksi 2 kategori tertinggi dari hasil scoring level 1. Selanjutnya, sistem secara pintar menampilkan pertanyaan lanjutan (level 2 dan 3) secara berurutan khusus untuk kategori teratas tersebut.
- Kalkulasi Rekomendasi: Rekomendasi UKM terbaik dihasilkan dengan menggabungkan:
- Hasil jawaban dari branching (paling spesifik sesuai minat)
- Aturan Pre-filter dari biodata (Agama, KIP-K, Fakultas)
- Fallback scoring apabila alur branching tidak menghasilkan rekomendasi spesifik.
- Penyimpanan Data: Seluruh hasil tes dan detail rekomendasi UKM direkam di tabel student_results di dalam database Supabase.
- Result Page: Pengguna langsung diarahkan ke /kuisioner/result untuk melihat hasil rekomendasi secara interaktif.
š Struktur Implementasi
- Data & Validasi:
- lib/schema.ts (Validasi struktur data menggunakan Zod)
- lib/questions.ts (Bank soal dan skenario branching logic)
- data/UkmLogic.ts (Algoritma rekomendasi spesifik per UKM)
- Komponen Interaktif:
- BiodataForm.tsx (Penanganan form interaktif untuk user)
- QuestionCard.tsx & ProgressBar.tsx (UI tes interaktif)
- UkmCard.tsx (Visualisasi detail hasil rekomendasi)
- Backend & Database:
- lib/supabase.ts (Konfigurasi dan integrasi client Supabase)
- Sinkronisasi asinkron yang andal.
š Status Pengembangan
- ā Alur end-to-end (biodata -> tes -> hasil) telah berfungsi 100%.
- ā Fitur branching question interaktif berjalan lancar.
- ā Sistem penyimpanan data terintegrasi real-time ke backend Supabase.
- ā Routing yang rapi dan terlokalisasi di prefix /kuisioner.
