Selamat datang di layanan backend untuk Aplikasi Pendaftaran Anggota Baru HIMATIF! Dibuat dengan Go, layanan ini menyediakan REST API yang tangguh dan aman untuk mengelola seluruh alur pendaftaran, mulai dari otentikasi pengguna hingga manajemen file di cloud.
✨ Fitur Unggulan
Otentikasi Modern & Aman: Menggunakan Paseto (PASETO), alternatif superior dari JWT, untuk token yang lebih aman.
Manajemen User Lengkap: Registrasi dan Login untuk calon anggota baru.
Pendaftaran Online: Pengguna dapat mengisi formulir pendaftaran secara lengkap.
Cloud File Uploads: CV dan sertifikat diunggah langsung ke Cloudinary, memastikan penyimpanan file yang efisien dan aman.
Dashboard Admin Komprehensif: Admin dapat melihat, mengelola, memperbarui status (termasuk aksi massal), dan menghapus pendaftar.
Manajemen Informasi: Admin dapat membuat, membaca, memperbarui, dan menghapus pengumuman atau informasi untuk semua pengguna.
🛠️ Tumpukan Teknologi
Bahasa: Go (v1.23+)
Database: MongoDB Atlas
Router: Chi (v5)
Otentikasi: Paseto (v2)
Penyimpanan File: Cloudinary
Driver DB: go.mongodb.org/mongo-driver
Lainnya: godotenv untuk manajemen environment, bcrypt untuk hashing password.
⚙️ Instalasi & Konfigurasi Lokal
Clone repository ini:
git clone [https://github.com/ulbithebest/FE-pendaftaran.git](https://github.com/ulbithebest/FE-pendaftaran.git)
cd pendaftaran-backend
Siapkan file environment:
Buat file .env di direktori utama dan isi dengan format berikut:
# Ambil dari MongoDB Atlas (klik Connect -> Drivers)
MONGO_URI="mongodb+srv://<user>:<password>@<cluster-url>/<db-name>?retryWrites=true&w=majority"
MONGO_DATABASE="himatif_db"
# Kunci rahasia untuk Paseto (HARUS 32 karakter)
PASETO_SECRET_KEY="R4nd0mS3cr3tK3yF0rP4s3t0Appl1c4t"
# Port untuk server backend
SERVER_PORT=":8080"
# Kredensial dari akun Cloudinary Anda
CLOUDINARY_CLOUD_NAME="<your_cloud_name>"
CLOUDINARY_API_KEY="<your_api_key>"
CLOUDINARY_API_SECRET="<your_api_secret>"
Instal dependensi:
go mod tidy
Jalankan server:
go run ./main.go
Server akan berjalan di http://localhost:8080.
📝 Endpoint API
Otentikasi
POST /register: Mendaftarkan user baru.
POST /login: Login user dan mendapatkan token Paseto.
Pengguna (Memerlukan Token)
GET /api/user/profile: Mendapatkan detail profil user yang sedang login.
POST /api/user/registration: Mengirimkan formulir pendaftaran (termasuk upload CV & sertifikat).
GET /api/user/my-registration: Mendapatkan status pendaftaran user yang sedang login.
GET /api/info: Mendapatkan semua informasi/pengumuman terbaru.
Admin (Memerlukan Token & Role Admin)
GET /api/admin/registrations-with-details: Mendapatkan daftar semua pendaftar beserta detailnya.
GET /api/admin/users: Mendapatkan daftar semua pengguna terdaftar.