LegisKuy adalah backend RESTful API untuk sistem pemilu digital yang dibangun menggunakan Go (Golang), Fiber framework, dan database SQLite. Proyek ini merupakan pengembangan lanjutan dari tugas akademik yang kemudian dikembangkan secara mandiri sebagai bagian dari portofolio profesional. Dirancang dengan pendekatan arsitektur multilayer yang bersih, aman, dan efisien.
- Otentikasi & Otorisasi Berbasis Peran:
- Sistem login yang aman menggunakan JWT (JSON Web Token).
- Pemisahan hak akses yang jelas antara
petugas
(manajemen penuh) dan pemilih (hanya bisa memilih dan melihat data).
- Manajemen Data (CRUD):
- Pengelolaan data Calon Legislatif (tambah, lihat, ubah, hapus).
- Pengelolaan data Pemilih (registrasi, lihat, ubah, hapus).
- Proses Pemilu yang Aman:
- Endpoint khusus untuk melakukan voting (
POST /api/v1/votes
) - Validasi untuk memastikan setiap pemilih hanya bisa memberikan suara satu kali.
- Penggunaan transaksi database untuk menjamin integritas data saat proses pemilihan.
- Endpoint khusus untuk melakukan voting (
- Pencarian & Pengurutan Data:
- Pencarian calon berdasarkan nama atau partai.
- Pengurutan data calon berdasarkan nama (menggunakan Selection Sort), partai, dan jumlah suara (menggunakan Insertion Sort) secara
ascending
maupundescending
.
- Pengaturan Dinamis Pemilu:
- Petugas dapat mengatur jadwal (waktu mulai & selesai) pemilu. Proses voting hanya bisa dilakukan dalam rentang waktu tersebut.
- Petugas dapat menentukan ambang batas (threshold) suara minimum bagi calon untuk dapat terpilih.
Proyek ini dibangun di atas arsitektur N-Tier untuk memastikan kode yang modular, scalable, dan maintainable.
- Presentation Layer (Handler): Menangani request & response HTTP.
- Business Logic Layer (Service): Berisi semua logika bisnis dan validasi.
- Data Access Layer (Repository): Bertanggung jawab untuk interaksi dengan database.
- Bahasa: Go (Golang)
- Framework: Fiber
- Database: SQLite 3
- Keamanan: JWT (JSON Web Token) & Bcrypt
- Dokumentasi API: Swagger (OpenAPI)
Dokumentasi API yang lengkap dan interaktif tersedia melalui Swagger. Setelah menjalankan server, akses URL berikut:
http://localhost:3000/swagger/index.html
-
Prasyarat
- Pastikan Go versi 1.22 atau lebih baru sudah terinstal.
- Pastikan Git sudah terinstal.
-
Clone Repositori
git clone https://github.com/RozhakXD/legiskuy-backend.git cd legiskuy-backend
-
Instalasi Dependensi
go mod tidy
-
Konfigurasi Lingkungan
Proyek ini menggunakan variabel lingkungan untuk JWT Secret. Anda bisa membuat file .env di root direktori (opsional).
JWT_SECRET=kunci_rahasia_yang_sangat_aman
Jika file
.env
tidak ditemukan, aplikasi akan menggunakanfallback
secret bawaan. -
Jalankan Aplikasi
go run cmd/api/main.go
Server akan berjalan di
http://localhost:3000
.
/legiskuy-backend
|-- /cmd/api/main.go # Titik masuk aplikasi & registrasi rute
|-- /docs # File dokumentasi Swagger
|-- /internal # Logika inti aplikasi
| |-- /auth # Modul otentikasi & otorisasi
| |-- /candidate # Modul manajemen calon
| |-- /election # Modul proses pemilu
| |-- /voter # Modul manajemen pemilih
|-- /pkg # Paket pendukung
| |-- /database # Koneksi & inisialisasi DB
| |-- /middleware # Middleware untuk otentikasi
|-- go.mod
|-- go.sum
|-- README.md
LegisKuy bukan sekadar proyek backend — ini karya dari malam-malam panjang, kopi yang gak habis-habis, dan rasa yang gak bisa disampaikan langsung.
- 💻 Rozhak — Backend Developer, System Architect
"Didedikasikan diam-diam untuk seseorang yang pernah jadi semangat paling tulus... walau hanya bisa mencintai dari jauh, setidaknya aku bisa mengubah rasa itu jadi baris-baris kode."
Kalau kamu baca ini, terima kasih… karena tanpamu, mungkin proyek ini nggak pernah selesai.
Proyek ini dilisensikan di bawah MIT License
.