PANDUAN INSTALASI SUARAKITA E-VOTING
====================================

SuaraKita adalah aplikasi E-Voting untuk pemilihan OSIS, RT, RW, organisasi,
komunitas, dan voting lain yang membutuhkan pemungutan suara.


STRUKTUR FILE
-------------

1. code.gs
   Backend, keamanan kode pemilih, penyimpanan suara, dan Spreadsheet.

2. index.html
   Portal pemilih, surat suara, hasil, dan panel panitia.

3. instalasi.txt
   Panduan instalasi ini.


PREVIEW TANPA SPREADSHEET
--------------------------

1. Buka folder projek-e-voting.
2. Klik dua kali index.html.
3. Gunakan Live Server jika browser tidak mengizinkan file lokal.

Kode pemilih demo:

- OSIS-AY7K2Q
- OSIS-BH4M9P
- OSIS-CN8R3T

PIN panel panitia preview:

246810

Data preview disimpan pada localStorage browser. Dari panel panitia, buka menu
Pengaturan lalu gunakan Reset seluruh data preview untuk mengulang demo.


INSTALASI GOOGLE APPS SCRIPT
-----------------------------

TAHAP 1 - MEMBUAT SPREADSHEET

1. Buat Google Spreadsheet baru.
2. Beri nama "Database SuaraKita".
3. Buka Extensions > Apps Script.
4. Ubah nama proyek menjadi "SuaraKita E-Voting".


TAHAP 2 - MEMASANG CODE.GS

1. Buka code.gs dari folder projek-e-voting.
2. Salin seluruh isi file.
3. Pada editor Apps Script, buka Code.gs.
4. Hapus kode bawaan.
5. Tempel kode SuaraKita.
6. Simpan.


TAHAP 3 - MEMASANG INDEX.HTML

1. Klik + pada panel Files.
2. Pilih HTML.
3. Beri nama index.
4. Buka index.html dari folder projek-e-voting.
5. Salin seluruh isi ke index.html di Apps Script.
6. Simpan proyek.


TAHAP 4 - KONFIGURASI

1. Buka Project Settings.
2. Atur Time zone ke Asia/Jakarta.
3. Jika Apps Script dibuat dari Spreadsheet, biarkan
   VOTE_CONFIG.SPREADSHEET_ID kosong.
4. Jika menggunakan proyek standalone, isi VOTE_CONFIG.SPREADSHEET_ID dengan
   ID Spreadsheet.


TAHAP 5 - MEMBUAT DATABASE

1. Pilih fungsi setupVotingApp.
2. Klik Run.
3. Berikan izin akses Google.
4. Tunggu sampai proses selesai tanpa error.

Sheet yang dibuat otomatis:

- PEMILIHAN
- KANDIDAT
- PEMILIH
- SUARA
- SESI_ADMIN
- SESI_PEMILIH
- PENGATURAN

Sistem juga membuat satu pemilihan OSIS contoh dan tiga kode pemilih demo.

Jangan mengubah nama sheet atau urutan kolom.


TAHAP 6 - DEPLOY WEB APP

1. Klik Deploy > New deployment.
2. Pilih Web app.
3. Description: SuaraKita versi 1.
4. Execute as: Me.
5. Who has access:
   - Anyone, jika pemilih berasal dari masyarakat umum.
   - Anyone within your organization, untuk sekolah atau organisasi Workspace.
6. Klik Deploy.
7. Salin Web app URL.
8. Uji URL pada browser atau mode incognito.


PIN AWAL PANITIA
-----------------

246810

Setelah deployment:

1. Klik Panel Panitia.
2. Masukkan PIN awal.
3. Buka Pengaturan.
4. Segera ubah PIN panitia.


MEMBUAT PEMILIHAN
------------------

1. Masuk Panel Panitia.
2. Buka menu Pemilihan.
3. Klik Buat pemilihan.
4. Isi judul dan jenis, misalnya:
   - Pemilihan Ketua OSIS
   - Pemilihan Ketua RT 04
   - Pemilihan Ketua RW 08
   - Pemilihan Pengurus Organisasi
5. Tentukan waktu mulai dan selesai.
6. Tentukan maksimal kandidat yang boleh dipilih.
7. Pilih aturan tampilan hasil:
   - Selalu
   - Setelah Selesai
   - Rahasia
8. Gunakan status Publikasi agar pemilihan muncul di portal.


MENAMBAHKAN KANDIDAT
---------------------

1. Buka menu Kandidat.
2. Pilih pemilihan pada dropdown.
3. Klik Tambah kandidat.
4. Isi nomor urut, nama, subjudul, visi, dan misi.
5. Foto bersifat opsional dan harus menggunakan URL HTTPS.
6. Pilih status Aktif.
7. Simpan kandidat.


MEMBUAT KODE PEMILIH
---------------------

1. Buka menu Kode Pemilih.
2. Pilih pemilihan.
3. Klik Buat kode.
4. Masukkan jumlah kode, prefix, dan label kelompok.
5. Simpan.
6. Kode hanya ditampilkan satu kali.
7. Klik Unduh .txt dan simpan file di tempat yang aman.
8. Bagikan satu kode kepada setiap pemilih.

Penting:

Spreadsheet hanya menyimpan hash kode. Kode asli tidak dapat dipulihkan setelah
jendela hasil generator ditutup.


ALUR PEMILIH
-------------

1. Pemilih membuka Web app URL.
2. Memilih agenda pemilihan.
3. Memasukkan kode pemilih.
4. Memilih kandidat sesuai batas maksimal.
5. Memeriksa pilihan.
6. Mengirim suara.
7. Kode langsung ditandai sudah digunakan.


KEAMANAN PEMILIHAN
-------------------

1. Satu kode hanya dapat digunakan satu kali.
2. Kode disimpan dalam bentuk hash.
3. Identitas pemilih tidak disimpan bersama kandidat yang dipilih.
4. Sesi surat suara berlaku selama 15 menit.
5. Gunakan akses Spreadsheet hanya untuk panitia terpercaya.
6. Jangan mengedit sheet SUARA atau PEMILIH ketika voting berlangsung.
7. Lakukan backup sebelum dan setelah pemilihan.
8. Uji seluruh alur menggunakan pemilihan percobaan sebelum hari pelaksanaan.


MEMPERBARUI DEPLOYMENT
-----------------------

1. Simpan perubahan code.gs dan index.html.
2. Klik Deploy > Manage deployments.
3. Klik Edit.
4. Pilih New version.
5. Klik Deploy.
6. URL lama tetap dapat digunakan.


PEMECAHAN MASALAH
------------------

Kode pemilih tidak valid:
Pastikan kode benar, status pemilih Aktif, dan kode belum digunakan.

Pemilihan belum dimulai atau sudah selesai:
Periksa tanggal, waktu, zona waktu proyek, dan status pemilihan.

Panel panitia tidak dapat dibuka:
Pastikan PIN benar. PIN awal hanya tersedia setelah setupVotingApp dijalankan.

Hasil tidak tampil pada portal publik:
Periksa pengaturan Tampilkan hasil. Panel panitia tetap dapat melihat hasil.

Versi lama masih tampil:
Buat New version melalui Manage deployments lalu muat ulang browser.
