FEATUREDGatekeeper
An async API gateway written from scratch in FastAPI. Forwards client requests to configurable upstreams with API-key authentication, per-key token-bucket rate limiting, and structured logging. Built with explicit timeout handling (502 vs. 504 semantics) and a deterministic pytest suite that mocks failure paths via respx.
PythonFastAPIPostgreSQLSQLAlchemyDockerpytest
IN DEVELOPMENTA match tracking and Elo ranking platform for school chess and badminton clubs. Members log singles or doubles matches, ratings update automatically, and each club gets its own leaderboard. Built as a real product on top of the same infrastructure story as Gatekeeper: first the API gateway, then the consumer app that uses it.
Next.jsPythonFastAPIPostgreSQLSQLAlchemyGoogle OAuthElo Ratings
AI-Powered LMS
A full-stack Learning Management System prototype aimed at K–12 classrooms. Teachers create courses and assignments; students enroll and submit; Google Gemini handles automated grading with feedback. Role-based access for teacher and student accounts.
PythonFastAPISQLAlchemyGemini APIHTML/CSS
Disaster Safety App
Built and deployed at the Hello World hackathon. Pulls active emergency alerts anywhere in the U.S. from the National Weather Service API and surfaces them with location-based risk levels. I owned the backend and API integration end-to-end.
PythonREST APIsHTML/CSSRender
GradeBook
A Java desktop app for managing students, courses, and grades with a JavaFX GUI. Persists data to CSV so a teacher can close the app and pick back up where they left off. Built early in freshman year while learning object-oriented design.
JavaJavaFXCSV
Sudoku Solver
A backtracking-based sudoku solver in Java with optimized row, column, and 3×3 box validation. A small project, but a good excuse to actually write a recursive search algorithm by hand. Next phase: GUI for entering puzzles.
JavaBacktrackingAlgorithms
Workout Manager
A Python console app for logging workouts and tracking patterns over time. Multiple user profiles, daily logs, and a small analysis layer that flags progress trends. Started as a way to practice working with persistent state outside of a web context.
PythonCLI