← Back to home
ExperienceProjectsContactResume

Open to software engineering roles.

Graduating April 2027. Reach out by email or LinkedIn.

Email meLinkedInDownload resume

Project · Honors thesis

Interactive Idlewild

A mobile app that preserves the history of Idlewild, Michigan, a historic Black resort community.

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

Thesis paper coming soon

Role
Sole designer and developer
Timeline
Oct 2024 – Dec 2026
Context
Honors thesis, WMU
Status
Demo-ready on Android
Interactive Idlewild app icon over the town map, with the article list and an event screen

Overview

Idlewild's history was scattered across personal memories and disconnected sources. The app brings it together: visitors explore an illustrated town map, read history written by the community and find local events, while admins review everything before it goes public.

I designed, built and tested it on my own as my honors thesis. Feedback from students on a trip to Idlewild and from my thesis committee shaped the final app, from a new resources hub to image descriptions for screen readers.

Highlights

  • Idlewild illustrated map with pins

    Illustrated town map

    Zoomable map with pins that link to stories and events, and line up on every screen size.

  • Idlewild article list

    Community stories

    Contributors write articles with images, and readers search and filter by tag.

  • Idlewild article editor

    Writing tools

    A rich text editor with drafts saved on the phone. When someone edits a published article, admins review it in a diff view that highlights what was added and removed.

  • Idlewild admin dashboard

    Admin review

    Every post, edit and event is reviewed first, and denials come with feedback.

Key challenges

Keeping roles secure +Result: Security rules check the role on every read and write, and server functions refuse role changes from anyone but an admin.

Problem

My first plan stored each user's role on their own profile, which users are allowed to edit. Someone bypassing the app could have written directly to their profile and made themselves an admin.

What I did

Moved roles into Firebase Auth custom claims, which only server code can set, with role changes handled by server functions that check the caller.

Rebuilding with a real architecture +Result: Every one of the app's 39 screens now follows the same structure, which made new features faster to add.

Problem

The first version mixed screen and logic code, and progress stalled.

What I did

Learned MVVM from developers in the WMU Developer Club, planned the app in Figma and rebuilt it from scratch with a layered structure.

How it's built

App

  • Flutter
  • Dart
  • GoRouter
  • get_it
  • SQLite

Backend

  • Firebase Auth
  • Firestore
  • Cloud Functions
  • Node.js
  • Storage

Testing

  • Mocha
  • Firebase Emulator

More projects

Back to all work →
VolleyNet app screens: sign-in, player profile and calendar

VolleyNet

  • Mobile app
  • iOS and Android
  • Flutter
  • Supabase
  • Stripe

Social app for volleyball players and hosts, live on iOS and Android with 500+ users. Players find teammates, chat and keep live scores; hosts run paid events with waivers and reminders.

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 →