Letta School: Sistem Manajemen Sekolah
Sistem manajemen sekolah dengan login JWT, pembagian hak akses per peran, dan deploy otomatis setiap kali ada push ke branch main.
Dibuat oleh @Lananuranf
github.com/Lananuranf/letta-school
🔴 Masalah
Sekolah Letta mengelola data siswa, guru, absensi, jadwal, dan laporan akademik secara manual di spreadsheet. Data mudah salah ketik, tidak aman, dan sulit dibuka beberapa orang sekaligus.
Sistem baru juga harus membedakan tiga jenis pengguna: admin dengan akses penuh, guru yang mengelola kelas dan nilai, dan siswa yang hanya bisa melihat data pribadinya.
🟢 Solusi
Saya membangun aplikasi web fullstack dengan React + TypeScript di frontend, Go Fiber di backend, dan PostgreSQL sebagai database. TypeScript menangkap kesalahan tipe data sebelum kode dijalankan. Go Fiber saya pilih karena ringan dan cepat untuk REST API; perbandingannya dengan Express.js saya tulis di artikel benchmark ini.
Hak akses diatur di middleware Go Fiber. Setiap endpoint API memeriksa token JWT dan peran pengguna sebelum memberi akses. Ada tiga peran: admin (menambah, mengubah, dan menghapus semua data), guru (mengelola kelas, absensi, dan nilai), dan siswa (melihat data pribadi dan jadwal).
⚡ Infrastruktur
Aplikasi berjalan di AWS EC2 (Ubuntu 22.04 LTS) dengan Docker Compose. Nginx bertugas sebagai reverse proxy: menangani SSL, mengalihkan HTTP ke HTTPS, menyajikan file statis, dan meneruskan request ke container yang tepat.
Deploy berjalan otomatis lewat GitHub Actions. Setiap ada merge ke main, workflow masuk ke EC2 lewat SSH, menjalankan git pull dan docker compose up --build -d, lalu versi baru aktif dalam 2–3 menit.
Tertarik dengan proyek ini?
Saya senang membahas cara kerjanya lebih dalam, atau membicarakan peluang magang dan kerja.