top of page

Personal Projects

Campsites App

A full-stack application for exploring public campsites across the US and Canada.

view source on GitHub

Still a work in progress!

I wanted to tackle a full-stack project on my own, so I went looking for an interesting dataset off which to base an application. I found a dataset of 13,000+ free campsites on USCampgrounds.info (major thanks to Tom Hillegass, the site owner) and decided to build an application that allows users to filter campsites and explore on a map.

Currently, the application consists of a PostgreSQL database (with a sqlalchemy ORM), a REST API using the python library FastAPI that allows for server-side filtering/sorting/pagination, and a React/TypeScript frontend with a filterable list view.

Future additions will include a details page, a map explorer, and potentially a trip planner.

The app only runs locally at this time -- instructions for running the server in Docker, and running the frontend in development mode, are available at the GitHub link above.

Food Web Simulator

a react app for simulating relationships between
organisms in a food web

view website
view source on GitHub

Developed by request in October 2021. A middle school science teacher needed a replacement for a Flash app she had used to simulate predator-prey relationships in ecosystems. She wanted a website that would have two dropdowns, one showing predators and another showing prey, and feedback about the choice.

I would say this project is most interesting for its management and validation of JSON stored locally, as well as upload and download capabilities. I also wanted to practice using Material UI v5 as I've only worked with v4. On the shortlist of feature-adds is a user interface for adding data (instead of forcing the user to work directly with JSON). I would like to add a simple backend to this eventually.

M5Stack Hangman

a game of Hangman for use with the M5Stack Faces keyboard module.

view source on GitHub

I received an M5Stack as a gift and wanted to find a nice project that would combine the Faces modules, button presses, using the SD card, and drawing graphics on the screen. I decided to implement a hangman game that would pull from a list of random words and show feedback on which letters had been correct and incorrect, as well as show a hangman which slowly fills up as the player guesses incorrect letters.

I used this as an opportunity to practice splitting a one-file monster into multiple, organized files. I'd worked with Arduino extensively in the HCI lab but had only ever put my programs into a single file (and for CRISPEE that file was very, very, very long). This seemed like a good chance to think about splitting the project into three logical chunks - the business logic, the graphics, and the SD card reader. Code exists for a version that uses the Merriam-Webster API to fetch the definition of the secret word, as a hint for the player, but this was not completed to the point of being ready for publication.

bottom of page