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.

https://hazard-watch.onrender.com/
Hazard-Watch map view with reported incidents

Hazard-Watch

2026

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

React TypeScript Material UI Leaflet Zustand

Backend

Node.js Express JWT

Database

MongoDB (Mongoose)
GeoJSON Validator showing error highlights

GeoJSON Validator

2024

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

React Tailwind CSS

Backend

FastAPI Python
https://seismoexplorer.com/
A Journey Into Seismology article page

A Journey Into Seismology

2023 — 2024

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

Astro React Tailwind CSS

Backend

FastAPI Python