A production-ready fullstack web portal built entirely solo as a volunteer contribution for the SM Sains Kubang
Pasu (KUPSIS) alumni association. Designed to modernise the association's election process: replacing manual
voting with a secure, verifiable, user-friendly & digital-first system. Built from scratch across backend, frontend,
infrastructure, and CI/CD pipelines.
Key Features
- Alumni registration with batch selection, OTP-verified email, and secure account creation
- Email OTP verification: 6-digit, 5-min expiry, 3-attempt limit, 30s resend cooldown
- Round-robin Gmail SMTP dispatch across a pool of sender accounts: engineered to work around Gmail's 500
emails/day cap per account while keeping infrastructure cost at zero
- Board election voting: swipe/tab navigation across roles, one vote per verified user
- Candidate profile pages: photo, summary, experience, manifesto points, and a personal quote per
candidate
- Confirmation modal & confidential vote tallying (admins see aggregated counts only)
- JWT-based stateless authentication (HS256, with X-hour expiry)
- eKYC integration via Didit: document scan + face liveness + name similarity check with automated admin
alerts; feature-flagged off due to PDPA concerns
- IP-based rate limiting
- Duplicate vote prevention enforced at DB level via UNIQUE constraint
Infrastructure & Security
Hosting
GCP Cloud Run (serverless, auto-scales to zero)
Database
Cloud SQL · PostgreSQL 16
Secrets
GCP Secret Manager
DNS / Proxy
Cloudflare: SSL Full (Strict), DDoS & WAF
CI/CD
GitHub Actions → Artifact Registry → Cloud Run
Passwords
Encrypted in transit & at rest
CORS
Restricted to Cloudflare-fronted origin only