My Personal Projects

Operations Management Software

Screenshot of...
July 2025 - Present

An enterprise web app for the company Meals On the Move's operations automation. Behind the admin password is a dashboard with a form that accepts a google sheet URL and return a zip file with packing slips, labels, and a shopping list as per the company wants them. This is the first project I have ever been contracted to make. Going with this theme, the passwords in the database are encrypted, professionalism was maintained, and the product was tested throughly before delivering.

  • Tech stack: Python (Flask, Pandas, bcrypt, ReportLab), JavaScript (HTMX), TailwindCSS, SQLite, Nginx, Gunicorn, DigitalOcean

Bettt

Screenshot of...
May 2025 - June 2025

A fully functional betting app. Users can signup, create a bet via staking fake tokens, challenge others with fake tokens, be challenged, and settle bets. Similar to Polymarket, only instead of markets, users create 1-1 that only one other user can challenge. This project was a collaborative effort, however I assumed a full stack role was responsible for most of the project. Specifically, I wrote the entire front end as well as all the busniess logic and most of the database queries.

  • Tech stack: Python (Flask), JavaScript (HTMX), TailwindCSS, SQLite, Nginx, Gunicorn, DigitalOcean

Polll

Screenshot of...
November 2024 - March 2025

A fully functional social media for polls. Users can signup, create one poll a day, vote on others' polls, and comment their opinons. I was brought on to this project about one month into its development, where I primarily worked on the front end.

  • Tech stack: Python (Flask, SciPy), JavaScript (HTMX, ApexCharts.js), TailwindCSS, PostgreSQL, Supabase, Gunicorn, Heroku

Guitar Tab Generator

December 2024 - Present

The intention with this app is to convert a soundfile to guitar tablature. Conceputally this is simple, but the details of it's implementation are exceedinly nontrivial. Currently, I am able to determine the notes and overtones of a sound file with a single, relatively clean, guitar note. I've always loved guitar and the math behind signials and sound, so I refuse to scrap this project entirely, but as it stands it is very low on the priority list. Also I do not intend on using machine learning for this project.

  • Tech stack: Python (Numpy, SciPy)

Canadian Varsity Web Scraper

Screenshot of...
November 2024 - December 2024

This web app displays all of the Canadian varsity athletes, organized by school, that attend universities that use the company SIDEARM Sports. Initally the scope of this project was just my school (UBC), but I realized after looking at other schools, each website had a very similar feel. It turns out that about 2/3 of Canadian universities use this comapny SIDEARM Sports, so I decided to generalize the program to the rest of these. Only keeping these particular schools allowed for the hard coded html elements used during UBC's web scraping to be reused without any modification, which I thoguht was pretty spectacular. An additional goal for the project was to analyze the faces with a CNN. This did actually work well, but it was too controversial to publish. Deep learning will thus have to wait for another time :(.

  • Tech stack: Python (Flask, beautifulsoup4), TailwindCSS, SQLite, Nginx, Gunicorn, DigitalOcean

WJ Water Level Monitor

July 2024 - August 2024

This project automates the process of logging water pressure levels by hand. Working for a construction copmany over a summer, I was breifly tasked with monitoring water pressure as work in a comprised area was being performed. There was a website with a handful of graphs, and every ~5 minutes the site would update the levels with data from the server, and I would have to write this level down and report if it exceeded a certain threshold. I immediately wanted to automate this, so I created the following, script in a notepad file. Primarily Javascript, it runs in the Chrome console, fetches data from the server, cleans the data, and creates .csv formmated files that mimmicked the sheets I was tasked with filling out. Apart from automation and saving time, this allowed for water levels to be measured even when the website (but not the API) was down, which was not something that could have been performed prior. The Python code involed is merely for converting the large swath of .csv chained together in the output of the Javascript script into individual .xlxs files on disc. As of last year, the job was finished and the server was shut down.

  • Tech stack: JavaScript, Python

Strava Activty Tracker

Screenshot of...
January 2024 - February 2024

This site graphs my personal Strava data via Strava's API. It also has some utilities for calcualting race paces and basic mileage scheduling. I had further goals with the project, such as creating a full training and scheduling hub, but I lost intrest. In the past it was being "hosted" locally using vscode's "Live Server" extension as I had yet to learn what a web server was. Thus, I recently implemented Flask as a web framework and am now hosting it as a subdomain of this site.

  • Tech stack: Python (Flask), JavaScript (Chart.js, FullCalendar), TailwindCSS, Nginx, Gunicorn, DigitalOcean