demos, Full-Stack Voting Platform
2-person team, backend and system design owner (July 2026)
Built and deployed a workspace-scoped voting platform supporting single-choice, multiple-choice, and ranked-choice voting, roughly 11,700 lines across the codebase.
- Next.js
- Supabase
- PostgreSQL
- Row-Level Security
- Supabase Auth
- Supabase Realtime
- SQL
- TypeScript
Technical detail
- Authored the system design document and relational data model from scratch, then implemented 17 migrations totaling about 2,000 lines of SQL
- Designed the authorization layer as 40 Row-Level Security policies across 12 tables, backed by 30 security-definer functions with search_path pinned on every one
- Implemented Instant-Runoff Voting tabulation in full, including exhausted ballots dropped from both the round count and the majority denominator, and ties for lowest where all tied candidates are eliminated in the same round behind an all-tied guard
- Enforced vote integrity with three structural database constraints: unique(session_id, user_id), unique(vote_id, option_id), and a unique index on (vote_id, rank)
- Found and closed a real ballot-secrecy vulnerability where vote_selections could be joined back to votes through vote_id, replacing the linkage with a dense_rank() anonymized ballot_ref in migration 014
- Shipped the departments feature that the original design document had scoped as phase two
- Directed an AI coding agent as an engineering partner: scoped tasks, reviewed every diff, and retained architecture and security decisions
- Current work: adding test coverage and CI, which the project does not yet have


