Web Application
Voter Match
A petition validation and campaign management platform that helps teams organize campaigns, manage teams and roles, collect and validate petition signatures, and search voter records.
Tech Stack
SupabaseNext.jsPostgreSQLAmazon S3Tailwind CSSShadcn
TimelineNov 2024 - Present
RoleFull Stack
ClientDirect
StatusIn-Development

Problems it solves:
- Centralizes petition workflows (campaign setup, formats, circulators, signature entry and validation).
- Enforces fine-grained permissions and team-based access.
- Integrates voter search via an external service (Directus-backed Elasticsearch) for validation.
- Prevents duplicate signers per campaign using Redis.
- Manages invitations and onboarding via Supabase.
Full-Stack Development with Supabase
I built extensive production experience building scalable, multi-tenant applications using Supabase as the primary backend infrastructure during this project. My work demonstrates deep knowledge across the entire Supabase ecosystem:
Authentication & Session Management
- Implemented SSR-compatible authentication using
@supabase/ssracross Next.js App Router - Built custom middleware with cookie-based session handling that refreshes auth tokens on every request
- Designed role-based access control combining Supabase Auth with custom PostgreSQL RPC functions
- Created seamless client/server authentication patterns with consistent session handling across browser clients, Server Components, and Server Actions
Database Architecture
- Designed and maintained complex PostgreSQL schemas using Supabase migrations
- Leveraged PostgREST for efficient data querying with nested relations, filtering, and pagination
- Implemented Row Level Security (RLS) policies to enforce data access at the database level
- Built custom stored procedures (RPC) for business logic and authorization checks
- Used advanced query patterns including
!innerjoins, foreign key traversal, and aggregate counts
Edge Functions
- Developed Deno-based Edge Functions for transactional emails, webhooks, and batch processing
- Integrated Edge Functions with external APIs and third-party services
- Implemented service role access patterns for privileged operations
- Built invocation patterns from Next.js using
supabase.functions.invoke()
Storage & Security
- Configured Supabase Storage buckets with structured upload paths
- Implemented secure file access using signed URLs with expiration
- Built reusable hooks and utilities for consistent Storage API usage
Production Patterns
- Centralized Supabase client creation for consistent configuration
- Separated concerns between anonymous and service role keys
- Implemented proper error handling and type safety across the stack
- Designed maintainable migration history for schema evolution
This experience spans the full Supabase platform in a production environment, demonstrating both technical depth and architectural decision-making for real-world applications.