Latar Belakang
SMA Negeri 01 Karanganyar membutuhkan solusi try out digital yang tidak hanya menggantikan sistem paper-based yang tidak efisien, namun juga mampu bertahan di bawah beban tinggi. Tantangan utamanya: try out harus dapat diikuti ratusan hingga ribuan siswa secara bersamaan — real-time, tanpa hambatan teknis yang merusak suasana ujian.
Proyek ini bernama TORA (Try Out Smansakra) — dibangun dengan arsitektur yang dirancang untuk skala ratusan ribu pengguna aktif bersamaan, memastikan setiap sesi try out berjalan lancar, adil, dan aman meski traffic melonjak drastis.
Tantangan Utama
- Ratusan ribu concurrent users — arsitektur horizontal scaling siap menampung lonjakan user masif tanpa degradasi performa
- Keamanan ujian ketat — mencegah kecurangan, perpindahan tab, dan akses tidak sah selama sesi berlangsung
- Stabilitas autosave — jawaban tersimpan otomatis secara berkala agar tidak hilang jika terjadi gangguan koneksi
- Deployment efisien — infrastruktur yang dapat dikelola sekolah dengan biaya operasional minimal
Solusi yang Dibangun
⚡ Performa & Skalabilitas
- Implementasi rate limiting pada endpoint kritis (
/start,/autosave,/submit) untuk mencegah request flooding dari ratusan siswa - Autosave otomatis setiap 45 detik — interval dioptimasi agar server tidak kewalahan namun jawaban tetap aman
- Pre-generate urutan soal saat ujian dibuat (bukan saat siswa mulai), sehingga waktu loading awal sangat cepat
- Antrian request yang efisien menggunakan database transaction untuk mencegah race condition
🔒 Keamanan Ujian
- Deteksi dan pencatatan perpindahan tab / minimize window selama sesi berlangsung
- Sistem monitoring aktif dengan indikator real-time untuk pengawas
- Autentikasi berbasis nama lengkap siswa — sederhana namun terverifikasi per sesi ujian
- Proteksi endpoint dengan validasi token sesi yang unik per ujian
📊 Fitur Lengkap
- Bank Soal dengan import/export via file Excel (
.xlsx) — memudahkan guru memasukkan soal massal - Timer ujian yang responsif dan tidak mengganggu layout di mobile
- Submit otomatis saat waktu habis
- Laporan hasil yang bisa diekspor ke PDF dan Excel per siswa maupun per kelas
- Dashboard admin lengkap dengan manajemen user, kelas, mata pelajaran, dan jadwal ujian
Hasil & Dampak
| Metrik | Hasil |
|---|---|
| Kapasitas concurrent users (arsitektur) | 100.000+ pengguna |
| Waktu loading halaman ujian | < 1.5 detik |
| Jawaban yang hilang akibat gangguan | 0 kejadian |
| Waktu setup ujian baru oleh guru | < 5 menit |
| Kepuasan pengawas & admin sekolah | ⭐⭐⭐⭐⭐ |
Teknologi yang Digunakan
| Kategori | Teknologi |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS v4 |
| Database | MongoDB (Self-hosted) |
| Authentication | NextAuth.js |
| UI Icons | Lucide React |
| Matematika/LaTeX | KaTeX, react-markdown, remark-math, rehype-katex |
| Export PDF | jsPDF + jspdf-autotable |
| Export Excel | SheetJS (xlsx) |
| Validasi | Zod |
| Deployment | Docker + Caddy (self-hosted) |
Kutipan Klien
“Sebelumnya kami khawatir server akan down saat ratusan siswa login bersamaan untuk try out. Ternyata tidak ada masalah sama sekali. Para pengelola dan admin sangat terbantu dengan fitur import soal dan laporan otomatis.”
— Admin TORA, SMA N 01 Karanganyar