← Back to home
ExperienceProjectsContactResume

Open to software engineering roles.

Graduating April 2027. Reach out by email or LinkedIn.

Email meLinkedInDownload resume
VolleyNet app icon

Project · Startup

VolleyNet

A social app for finding volleyball players to connect, chat and play with, plus tools for hosts to run paid events.

  • Mobile app
  • iOS and Android
  • Flutter
  • Supabase
  • PostgreSQL
  • Stripe
App Store↗(opens in a new tab)Google Play↗(opens in a new tab)Website↗(opens in a new tab)

Code is private

Role
CTO and co-founder, lead developer
Timeline
Mar 2026 – present
Team
Two co-founders
Platforms
iOS and Android
Users
500+
VolleyNet app screens: sign-in, player profile and calendar

Overview

VolleyNet helps volleyball players find people to play with and gives hosts the tools to run events. Players build a profile, connect with nearby players, chat, schedule games and keep live scores. Hosts create events with sign-ups, waivers and reminders through a paid host plan.

As co-founder and CTO, I was the main developer across the full stack: the Flutter app, the Supabase backend, payments and app store releases.

Highlights

  • VolleyNet player profile screen

    Find players

    Profiles show position, gear and availability, plus how far away each player is.

  • VolleyNet calendar screen

    Personal calendar

    Your own past, current and upcoming sessions in one place, filterable by type.

  • VolleyNet live scoreboard

    Live scoring

    The host keeps score, and everyone in the game sees it update live.

  • VolleyNet host plan screen

    Host plan

    Hosts run events with sign-ups, waivers and reminders on a monthly plan.

Key challenges

Responding to a security incident +Result: Database rules blocked access to sign-in data and secrets, and users were notified.

Problem

An analytics server connected to production was missing a security patch and was exploited.

What I did

Led the same-day response: rebuilt the timeline from logs, revoked access, rotated credentials and added alerts for new database connections.

Taking payments safely +Result: Both run through server-side rules, so payments can't be faked or charged twice.

Problem

The app needed two kinds of payments: a host subscription, and players paying hosts for real-world events, with refunds and payouts.

What I did

Used app store billing for the host plan and Stripe Connect for event payments, with fee splits, refunds, delayed payouts and protection against double charges.

Deleting accounts without breaking shared data +Result: Accounts delete cleanly in one step, and other users' chats and events stay intact.

Problem

Users must be able to fully delete their account, but their chats, connections and events are shared with other people.

What I did

Built one server-side delete that cleans up data across about 30 linked tables, anonymizes shared records, cancels the user's upcoming events and removes their photos.

How it's built

App

  • Flutter
  • Dart
  • Riverpod
  • GoRouter

Backend

  • Supabase
  • PostgreSQL
  • PostGIS
  • Edge Functions

Services

  • RevenueCat
  • Stripe Connect
  • Firebase Messaging
  • PostHog
  • Shorebird
VolleyNet architecture: the Flutter app, the Supabase backend and the outside services it uses

More projects

Back to all work →
Interactive Idlewild app icon over the town map, with the article list and an event screen

Interactive Idlewild

  • Mobile app
  • Flutter
  • Firebase
  • Built solo
  • Honors thesis

Mobile app preserving the history of Idlewild, Michigan, a historic Black resort community. Visitors explore an illustrated map, read community-written stories and find events, while admins review every post.

View project →
A dashcam photo of a snowy road goes into a CNN, which labels it snow out of dry, snow, ice and mixed

Road Surface Classification

  • Machine learning
  • PyTorch
  • Computer vision
  • Course project
  • Team of three

Image classifier that predicts whether a road is dry, snowy, icy or mixed from a dashcam photo. Built in PyTorch for a machine learning course, using 9,000 images from the WinterSim Initiative.

View project →