Selected work
start to finish, end to end
Sudbury Connect
Best UI/UX, Cursor Hackathon Sudbury 2026 · Covered by Cambrian College, Sudbury.com, and The Sudbury Star
Sudbury Connect is a free bilingual web app that helps people in Greater Sudbury find local food, housing, mental health, legal, and employment support. Users pick a language, tap what they need, and get 3 to 5 real local organizations with tappable phone numbers, hours, and optional read-aloud. My team curated and verified 312 local organizations, and matching runs locally so results come back in under 200ms with no API call, which keeps the app usable on poor mobile data. I was lead developer.
React 19 · TypeScript · Vite · Tailwind
Subscription Tracker
Subscription Tracker helps people see what they’re actually paying each month and catch the subscriptions quietly draining their account. Users log their subscriptions and get a dashboard showing total spend at a glance. The hard part was state, keeping the dashboard, forms, and list in sync without things drifting out of step. Built as my capstone for Software Development Lifecycle, with full stack development as my responsibility
React · Tailwind · Supabase
Dog Ear
Dog Ear is a reading tracker for people who want more than a catalogue. Most apps in this space are good at recording what you finished and bad at the harder question of what to read next, so Dog Ear builds around recommendations and generated reading lists rather than shelves and star ratings. The interesting problem so far has been the state boundary: TanStack Query owns anything from the server, Zustand holds only local UI state, and keeping that line strict is what stops the two from drifting out of sync. Built solo in React Native and Expo with a Supabase backend, currently in development.
ReactNative · Supabase · In Progress