VoteSync adalah aplikasi E-Voting (pemungutan suara elektronik) full-stack yang dirancang untuk menyediakan platform pemilihan yang aman, efisien, dan transparan. Dibangun menggunakan teknologi web modern terkini.
Aplikasi ini dibangun menggunakan:
- Framework: Next.js 16 (App Router)
- Bahasa: TypeScript
- Database: PostgreSQL
- ORM: Prisma
- UI Components: Shadcn UI
- Styling: Tailwind CSS
- Visualisasi Data: Recharts
- Daftar Pemilihan: Melihat pemilihan yang sedang berlangsung.
- Profil Kandidat: Informasi detail, visi, dan misi setiap kandidat.
- Real Count: Dasbor publik untuk memantau hasil suara sementara secara real-time.
- Login Sederhana: Menggunakan ID Pemilih dan Password yang telah didistribusikan.
- One Voter, One Vote: Sistem memastikan setiap pemilih hanya dapat memberikan satu suara per pemilihan.
- Antarmuka Intuitif: Desain yang mudah digunakan oleh semua kalangan.
- Role-Based Access Control (RBAC): Manajemen hak akses granular untuk berbagai peran admin (misal: Komisi Pemilihan, Pengawas, Operator).
- Manajemen Data:
- Pemilih: CRUD data pemilih, import massal dari CSV, dan manajemen password plain-text untuk keperluan cetak kartu.
- Kandidat: Pengelolaan data kandidat, foto, dan nomor urut.
- Panitia: Manajemen struktur panitia pemilihan.
- Kategori: Pengelompokan pemilih dan kandidat.
- Tools:
- Cetak Kartu: Pembuatan kartu login pemilih secara otomatis.
- Rekapitulasi: Laporan statistik lengkap dan Berita Acara.
- Reset Data: Fitur aman untuk mereset data pemilihan jika diperlukan.
-
Clone Repositori
git clone https://github.com/yok2-debug/VoteSync-pgsql.git cd VoteSync -
Install Dependensi
npm install
-
Konfigurasi Environment Buat file
.env(copy darienv.example) dan sesuaikan:# Koneksi Database PostgreSQL DATABASE_URL="postgresql://user:password@localhost:5432/votesync_db?schema=public" # Secret Key untuk Session JWT_SECRET_KEY="rahasia_super_aman_anda_disini"
-
Setup Database
npx prisma migrate dev
-
Jalankan Aplikasi
npm run dev
Akses aplikasi di http://localhost:3000.
-
Persiapan Server Pastikan Node.js (v18+) dan PostgreSQL sudah terinstall.
-
Environment Variables Buat file
.envdi server. Penting untuk menambahkanCOOKIE_SECUREjika Anda tidak menggunakan HTTPS.DATABASE_URL="postgresql://user:password@localhost:5432/votesync_production" JWT_SECRET_KEY="string_acak_yang_sangat_panjang_dan_aman" # PENTING: Set "false" jika akses via HTTP (tanpa SSL/HTTPS) # Jika menggunakan HTTPS (rekomendasi), set "true" atau hapus baris ini COOKIE_SECURE="false"
-
Build dan Migrasi
# Install dependencies npm install # Build aplikasi npm run build # Jalankan migrasi database production npx prisma migrate deploy
-
Jalankan Aplikasi
Mode Manual:
npm start
Menggunakan PM2 (Rekomendasi):
npm install -g pm2 pm2 start npm --name "votesync" -- start pm2 save pm2 startup
Jika Anda menjalankan seed database, akun administrator default biasanya adalah:
- Username:
admin - Password:
admin
(Pastikan untuk mengubah password ini di environment produksi!)
- Password Pemilih: Aplikasi ini dikonfigurasi untuk menyimpan password pemilih dalam format plain text. Hal ini disengaja untuk memudahkan distribusi kredensial (cetak kartu fisik) kepada pemilih dalam lingkungan tertutup. Pastikan database Anda terlindungi dengan baik.
- Password Admin: Password administrator tetap di-hash menggunakan bcrypt untuk keamanan.