โ† Kembali ke Dokumentasi Utama
APP 1

Pendaftaran PD

Portal publik untuk pelamar Pendamping & Pengawas Desa

๐Ÿ“‹ Deskripsi & Fungsi

Portal publik untuk pelamar Pendamping Desa: pendaftaran online, pengisian data diri, pemilihan posisi & wilayah, unggah dokumen, serta pemantauan status seleksi (5 tahap) dari sudut pandang pelamar.

Fitur Utama

  • Registrasi & login pelamar (akun users/JWT + data pd_applicants).
  • Form pendaftaran bertahap: data pribadi, pendidikan, pengalaman kerja, pilihan posisi (PLD / PD / TA) dan lokasi (provinsi → kabupaten → kecamatan → desa via tabel region).
  • Unggah dokumen persyaratan (KTP, ijazah, SKCK, pasfoto, dll) melalui MinIO object storage.
  • Buka/tutup gelombang pendaftaran: panitia mengatur lewat /api/settings (manajemen); saat "tutup", registrasi & submit pendaftaran ditolak.
  • Halaman status pelamar: 5 kartu progres (Pendaftaran → Seleksi Admin → Test Online → Wawancara → Kelulusan).
  • Simpan draft dan resume kapan saja; submit bila data & dokumen lengkap.

โš™ Teknologi

Backend: Node.js + Express, pg, jsonwebtoken, bcryptjs, multer, uuid, minio, cors, dotenv.

Frontend: React, react-router-dom, axios, Vite, Tailwind CSS.

Upload: Presigned PUT โ€” browser upload langsung ke MinIO (offload backend). Endpoint lama POST /upload via multer masih tersedia untuk backward compatibility.

Lint: oxlint (npm run lint).

๐Ÿ“ค Alur Upload (Presigned PUT)

File tidak melewati backend โ€” browser upload langsung ke MinIO via presigned URL.

1. PresignPOST /api/upload/presign โ†’ validasi + generate key + presigned PUT URL (24 jam)
2. UploadPUT {uploadUrl} โ†’ browser kirim file langsung ke MinIO
3. ConfirmPOST /api/upload/confirm โ†’ insert pd_documents + return presigned GET URL

Endpoint lama POST /api/upload (proxy multerโ†’MinIO) tetap tersedia. PG_POOL_MAX configurable (default 20).

๐Ÿ”Œ Port & Environment

BackendPORT 5001 (env saat ini)
Frontend5174, proxy /apihttp://localhost:5001
DatabasePostgreSQL "online_test"
.env wajib: DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME, JWT_SECRET, JWT_EXPIRES, PORT
.env MinIO: MINIO_ENDPOINT, MINIO_PORT, MINIO_USE_SSL, MINIO_ACCESS_KEY, MINIO_SECRET_KEY, MINIO_BUCKET

๐Ÿ›ฃ Route API

Prefix: /api

EndpointFungsi
/api/authRegistrasi & login pelamar; guard periode tutup pada route register.
/api/applicantsCRUD data pendaftaran pelamar (submit, getProgress / me/progress → status 5 tahap).
/api/regionsMaster wilayah (provinces/regencies/districts/villages) untuk dropdown lokasi.
/api/settings/registration(PUBLIK) Mengambil status buka/tutup gelombang.
/api/upload/presignGenerate presigned PUT URL untuk upload langsung ke MinIO.
/api/upload/confirmKonfirmasi upload sukses + simpan metadata ke pd_documents.
/api/uploadUnggah dokumen via proxy multerโ†’MinIO (legacy, tetap tersedia).

๐Ÿ—„ Tabel Database

TabelFungsi
pd_provincesMaster wilayah (provinsi, kabupaten, kecamatan, desa).
pd_regencies
pd_districts
pd_villages
pd_applicantsData pendaftaran inti + status tiap tahap (status_pendaftaran, status_test_online, status_kelulusan, published_at, keputusan_akhir_at, dst).
pd_educationRiwayat pendidikan pelamar.
pd_work_experiencesPengalaman kerja pelamar.
pd_documentsFile dokumen (user_id link ke tabel users bila ada akun).

๐Ÿš€ Cara Menjalankan

# Backend (:5001)
cd pendaftaran_pd/backend && npm install && node src/server.js

# Frontend (:5174)
cd pendaftaran_pd/frontend && npm install && npm run dev

# Build produksi
npm run build && npm run preview

๐Ÿ‘ค Akun Test

EmailPasswordKeterangan
siti.amelia@test.comPelamar123Pelamar contoh

๐Ÿ”— Catatan Integrasi

  • Status tahap diisi oleh aplikasi lain: seleksi administratif & kelulusan oleh manajemen_test_pd; nilai CBT dari test_online. Aplikasi ini membaca status untuk menampilkan progres pelamar.
  • Gelombang buka/tutup (pd_settings.registration) diubah oleh panitia melalui manajemen_test_pd (menu Setup Pendaftaran), dibaca publik oleh aplikasi ini.