Projects
A collection of full-stack apps, tools, and platforms I've built — some grew out of my background in seismology and geospatial data, others came from problems I wanted to solve. Each one taught me something different about shipping production-grade software.

Hazard-Watch
Web application for hazard reporting on an interactive map
A full-stack web app where users can report hazards (earthquakes, fires, etc.) and view them on a live map. Includes authentication and infinite scrolling for the report feed. Built end-to-end as a study of production-grade patterns — JWT auth, protected routes, optimistic UI, and proper error boundaries.
Key features
- JWT-based authentication with refresh/access-token flow
- Infinite scrolling feed of reports backed by paginated MongoDB queries
- Interactive Leaflet map with clustering for dense areas
- User login/register forms with client and server-side validation
- React Query for data fetching, caching, and optimistic UI updates
- Zustand for global state management of auth and UI state
Built with
Frontend
Backend
Database

GeoJSON Validator
Web tool for validating and debugging GeoJSON data
A focused utility for validating GeoJSON files against the official spec. Uploads are checked for invalid geometry types, missing required fields, malformed coordinates, and other structural issues. Each problem is surfaced as an issue object with a clear error message, an explanation of what went wrong, and a suggested fix. Built after running into the same validation problems repeatedly while working with geospatial data.
Key features
- Server-side validation via FastAPI orchestration
- Client-side checks for immediate feedback on common issues
- Detailed server-side error messages with line numbers and descriptions
- GeoJSON validation according to the official specification, including geometry and feature collection rules
Built with
Frontend
Backend

A Journey Into Seismology
Educational platform with articles and interactive seismic tools
An educational platform covering seismology fundamentals through written articles and interactive tools. Articles span wave propagation, frequency-domain analysis, Python libraries for seismology, and the role of site effects in modern practice. The interactive side includes a P & S wave arrival picker, a MiniSEED file processor, and other hands-on utilities. Built with Astro for fast content delivery and React islands for the interactive components.
Key features
- Seismic articles created with Astro's Markdown support for fast static content
- React islands for interactive seismic visualizations
- Interactive tools for exploring seismic waveforms and arrival times
- FastAPI backend serving processed seismic datasets
Built with
Frontend
Backend