Projects

Personal projects first, then earlier team and university work.

SnapEcho

2026Personal project

Guests scan one code and add photos, videos, and voice notes to an event’s gallery, with no app to install and no account to create. Photos are resized to WebP and stripped of EXIF and GPS data before they’re stored. Videos are transcoded and watermarked with ffmpeg on a separate background queue, so a long encode never holds up an upload someone is waiting on.

  • ASP.NET Core MVC
  • C#
  • PostgreSQL
  • Azure Blob Storage
  • ffmpeg
  • TypeScript
SnapEcho home page with the headline “Everything your guests share, in one gallery.”

DocFront

Personal project

Documents move through an asynchronous pipeline for extraction, validation, facial verification, categorization, and routing before they reach a staff review queue. Azure Document Intelligence and OpenAI handle document understanding to cut down manual review. Queue state, validation results, and workflow tracking sit behind a Django and HTMX interface for staff.

  • Django
  • Celery
  • Redis
  • Azure Service Bus
  • Azure Blob Storage
  • PostgreSQL
  • Azure Document Intelligence
  • OpenAI
  • HTMX
  1. Upload
  2. Extract
  3. Validate
  4. Verify identity
  5. Categorize
  6. Route
  7. Staff review

Social Distribution

2023Team of 5, University of Alberta

Profiles, posts, follows, comments, shares, and likes work across independently run servers. I built authentication, follow and unfollow, the GitHub activity feed integration, and parts of the federated REST API, and wrote the Swagger documentation.

  • Django
  • Django REST Framework
  • PostgreSQL
  • Bootstrap
Social Distribution profile page showing an admin user and a demo post.

Earlier work

TA Management System

2022University of Alberta

Connects Computing Science instructors with the students assigned as their TAs, and with students who want to TA in a future term.

  • Django
  • PostgreSQL
  • React
  • Google OAuth
  • MUI
TA Management sign-in page for the University of Alberta Department of Computing Science.

MedsToGo

2022Team project

Lets patients order their prescriptions and keep track of refills and order status without a trip to the pharmacy.

  • React
  • Node.js
  • Express
  • MongoDB
  • Bootstrap
MedsToGo dashboard listing current prescription orders and refills remaining.

Slide Creator

Upload a set of student photos named after each student, add the school logo, and download a finished PowerPoint deck with one slide per graduate.

  • Python
  • Flask
  • Google Cloud Storage
  • Google App Engine
Slide Creator upload form beside a sample graduation slide.

Appraisal

2021Team project, University of Alberta

Tracks experiments and analyzes their results. Results are visible to every user by default, so people can follow and discuss each other’s experiments.

  • Java
  • Android
  • Firebase Firestore
  • Firebase Authentication
  • Google Maps API
Four Appraisal app screens showing experiment lists and results.