{"id":29748674,"url":"https://github.com/rozhakxd/legiskuy-backend","last_synced_at":"2025-07-26T10:41:19.197Z","repository":{"id":271751425,"uuid":"914393494","full_name":"RozhakXD/Legiskuy-Backend","owner":"RozhakXD","description":"RESTful API untuk sistem e-voting digital berbasis Golang + Fiber. Dirancang dengan arsitektur multilayer, keamanan JWT, dan pengolahan data pemilu yang efisien.","archived":false,"fork":false,"pushed_at":"2025-07-01T07:19:25.000Z","size":2084,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-01T07:41:09.941Z","etag":null,"topics":["backend","clean-architecture","election","evoting","fiber","go","golang","jwt","multilayer","pemilu","rest-api","sqlite"],"latest_commit_sha":null,"homepage":"http://localhost:3000/swagger/index.html","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RozhakXD.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-09T14:07:23.000Z","updated_at":"2025-07-01T07:19:28.000Z","dependencies_parsed_at":"2025-01-09T17:38:05.580Z","dependency_job_id":"75c38b21-4b0b-4305-8f67-fee948556ce8","html_url":"https://github.com/RozhakXD/Legiskuy-Backend","commit_stats":null,"previous_names":["rozhakxd/legiskuy","rozhakxd/legiskuy-backend"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RozhakXD/Legiskuy-Backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RozhakXD%2FLegiskuy-Backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RozhakXD%2FLegiskuy-Backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RozhakXD%2FLegiskuy-Backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RozhakXD%2FLegiskuy-Backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RozhakXD","download_url":"https://codeload.github.com/RozhakXD/Legiskuy-Backend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RozhakXD%2FLegiskuy-Backend/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267150782,"owners_count":24043524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","clean-architecture","election","evoting","fiber","go","golang","jwt","multilayer","pemilu","rest-api","sqlite"],"created_at":"2025-07-26T10:41:16.332Z","updated_at":"2025-07-26T10:41:19.164Z","avatar_url":"https://github.com/RozhakXD.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LegisKuy - Backend API Pemilu\r\n\r\n**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.\r\n\r\n## ✨ Fitur Utama\r\n\r\n- **Otentikasi \u0026 Otorisasi Berbasis Peran:**\r\n  - Sistem login yang aman menggunakan **JWT (JSON Web Token)**.\r\n  - Pemisahan hak akses yang jelas antara `petugas` (manajemen penuh) dan pemilih (hanya bisa memilih dan melihat data).\r\n- **Manajemen Data (CRUD):**\r\n  - Pengelolaan data **Calon Legislatif** (tambah, lihat, ubah, hapus).\r\n  - Pengelolaan data **Pemilih** (registrasi, lihat, ubah, hapus).\r\n- **Proses Pemilu yang Aman:**\r\n  - Endpoint khusus untuk melakukan voting (`POST /api/v1/votes`)\r\n  - Validasi untuk memastikan setiap pemilih hanya bisa memberikan suara satu kali.\r\n  - Penggunaan **transaksi database** untuk menjamin integritas data saat proses pemilihan.\r\n- **Pencarian \u0026 Pengurutan Data:**\r\n  - Pencarian calon berdasarkan nama atau partai.\r\n  - Pengurutan data calon berdasarkan nama (menggunakan _Selection Sort_), partai, dan jumlah suara (menggunakan _Insertion Sort_) secara `ascending` maupun `descending`.\r\n- **Pengaturan Dinamis Pemilu:**\r\n  - Petugas dapat mengatur **jadwal (waktu mulai \u0026 selesai)** pemilu. Proses _voting_ hanya bisa dilakukan dalam rentang waktu tersebut.\r\n  - Petugas dapat menentukan **ambang batas (threshold)** suara minimum bagi calon untuk dapat terpilih.\r\n\r\n## 🏛️ Arsitektur \u0026 Teknologi\r\n\r\nProyek ini dibangun di atas arsitektur _N-Tier_ untuk memastikan kode yang _modular_, _scalable_, dan _maintainable_.\r\n\r\n- **Presentation Layer (Handler):** Menangani request \u0026 response HTTP.\r\n- **Business Logic Layer (Service):** Berisi semua logika bisnis dan validasi.\r\n- **Data Access Layer (Repository):** Bertanggung jawab untuk interaksi dengan database.\r\n\r\n### Tumpukan Teknologi (Tech Stack):\r\n\r\n- **Bahasa:** Go (Golang)\r\n- **Framework:** Fiber\r\n- **Database:** SQLite 3\r\n- **Keamanan:** JWT (JSON Web Token) \u0026 Bcrypt\r\n- **Dokumentasi API:** Swagger (OpenAPI)\r\n\r\n## 📚 Dokumentasi API\r\n\r\nDokumentasi API yang lengkap dan interaktif tersedia melalui Swagger. Setelah menjalankan server, akses URL berikut:\r\n\r\n[http://localhost:3000/swagger/index.html](http://localhost:3000/swagger/index.html)\r\n\r\n## 🚀 Instalasi \u0026 Menjalankan Proyek\r\n\r\n1. **Prasyarat**\r\n   \r\n   - Pastikan Go versi 1.22 atau lebih baru sudah terinstal.\r\n   - Pastikan Git sudah terinstal.\r\n\r\n2. **Clone Repositori**\r\n   \r\n   ```bash\r\n   git clone https://github.com/RozhakXD/legiskuy-backend.git\r\n   cd legiskuy-backend\r\n   ```\r\n\r\n3. **Instalasi Dependensi**\r\n   \r\n   ```bash\r\n   go mod tidy\r\n   ```\r\n\r\n4. **Konfigurasi Lingkungan**\r\n   \r\n   Proyek ini menggunakan variabel lingkungan untuk JWT Secret. Anda bisa membuat file .env di root direktori (opsional).\r\n   \r\n   ```sh\r\n      JWT_SECRET=kunci_rahasia_yang_sangat_aman\r\n   ```\r\n   \r\n   Jika file `.env` tidak ditemukan, aplikasi akan menggunakan `fallback` secret bawaan.\r\n\r\n5. **Jalankan Aplikasi**\r\n   \r\n   ```bash\r\n   go run cmd/api/main.go\r\n   ```\r\n   \r\n    Server akan berjalan di `http://localhost:3000`.\r\n\r\n## 📂 Struktur Proyek\r\n\r\n```text\r\n/legiskuy-backend\r\n|-- /cmd/api/main.go        # Titik masuk aplikasi \u0026 registrasi rute\r\n|-- /docs                   # File dokumentasi Swagger\r\n|-- /internal               # Logika inti aplikasi\r\n|   |-- /auth               # Modul otentikasi \u0026 otorisasi\r\n|   |-- /candidate          # Modul manajemen calon\r\n|   |-- /election           # Modul proses pemilu\r\n|   |-- /voter              # Modul manajemen pemilih\r\n|-- /pkg                    # Paket pendukung\r\n|   |-- /database           # Koneksi \u0026 inisialisasi DB\r\n|   |-- /middleware         # Middleware untuk otentikasi\r\n|-- go.mod\r\n|-- go.sum\r\n|-- README.md\r\n```\r\n\r\n## 👤 Kontributor\r\n\r\nLegisKuy bukan sekadar proyek backend — ini karya dari malam-malam panjang, kopi yang gak habis-habis, dan rasa yang gak bisa disampaikan langsung.\r\n\r\n- 💻 **Rozhak** — Backend Developer, System Architect  \r\n  _\"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.\"_  \r\n\r\nKalau kamu baca ini, terima kasih… karena tanpamu, mungkin proyek ini nggak pernah selesai.\r\n\r\n**Proyek ini dilisensikan di bawah `MIT License`.**\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frozhakxd%2Flegiskuy-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frozhakxd%2Flegiskuy-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frozhakxd%2Flegiskuy-backend/lists"}