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

Sudbury Connect

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 

Subscription Tracker

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

Illustration of a stack of books