My Portfolio

Welcome to my portfolio!

Force Sensor with LED Output

A CircuitPython project developed on an Adafruit Metro board to measure grip strength using a force sensor. LEDs light up based on force thresholds, and results are compared against prior sessions. A two-test comparison stores the stronger grip result in memory, lighting all LEDs when the second test beats the first.

  • CircuitPython
  • Adafruit Metro M4 board
  • LEDs & force sensor
Force sensor with LED apparatus

View on GitHub

Grid Occupancy Detection with OpenCV

A computer vision project that detects and counts occupied zones in a 6x6 grid using a live webcam feed. Each cell is analyzed with grayscale conversion, Gaussian blur, and adaptive thresholding to estimate occupancy in real time, useful for crowd monitoring or object counting applications.

  • Python
  • OpenCV (cv2)
  • NumPy
Webcam and hardware setup for grid occupancy detection 6x6 grid visualization showing occupied and empty cells

View on GitHub

Remind App

A cross-platform reminder and task app built with Flutter, focused on clean UI, fast task entry, and reliable persistence. Tasks sync to the cloud via Firebase Cloud Firestore and are also cached locally with SharedPreferences for quick access.

  • Flutter / Dart
  • Firebase Cloud Firestore
  • SharedPreferences

View on GitHub

WeatherAPI

A backend API that acts as a proxy and cache in front of the Visual Crossing weather API. A client asks for the weather in a city; the server checks a Redis cache first (cache-aside pattern with configurable TTL) and only calls Visual Crossing when there's no fresh answer cached. Hardened with per-IP rate limiting and structured 400/404/429/502 error responses.

  • Node.js / Express
  • Redis (ioredis)
  • express-rate-limit

View on GitHub

Blogging Platform API

A REST API for a personal blogging platform with full CRUD on blog posts plus a case-insensitive keyword search across title, content, and category. Validates request bodies and returns clear, consistently-shaped error responses instead of crashing; data persists in PostgreSQL via Prisma.

  • Node.js / Express 5
  • PostgreSQL / Prisma
  • express-validator

View on GitHub

Hackathons

ACE

HackHayward 2026

An assistant coach for volleyball: a manual stat-tracking app for coaches, plus an attempt to track players and read jersey numbers automatically from game video.

My part: I took on the video side, adapting an open-source, pretrained jersey-number model to volleyball footage. I couldn't get the tracking working before the deadline. A teammate built the app screens.

ACE live volleyball tracker showing court view, play-by-play, and team stats

View on Devpost

oculusMD

QuackHacks 2026

A medication safety copilot. Gemini only identifies medications from camera and document images; a rule-based engine makes every safety decision with three checks: drug interactions, contraindications, and too-soon re-doses.

My part: I built the FastAPI backend: the safety engine, the Gemini perception agent, the API endpoints, and the tests. A teammate built the mobile app.

oculusMD scan result showing a verified-safe medication

View on GitHub | View on QuackHacks

ZIP

SacHacks VII

A map-first investment radar that ranks U.S. ZIP codes for single-family housing opportunity, with choropleth and heatmap views and drilldown analytics.

My part: I built the map and the UI: the Mapbox choropleth and heatmap modes, ZIP search with a boundary fallback, the drilldown views, and two API routes. A teammate built the scoring model and data pipeline.

ZIP choropleth map showing ZIP-level investment scores

View on GitHub | View on Devpost

VibeMate Winner

Hack with MLH and DigitalOcean: SF — Winner, Best Beginner Project

One AI agent with three modes that share context: a DJ that matches music to your mood, a counselor that reads emotion from facial expressions, and a study buddy, with 3D visuals that react to both.

My part: A team win I contributed to: I helped shape the idea, set up the APIs and DigitalOcean, and tested the prototypes.

VibeMate interface showing the 3D audio visualizer and AI study assistant chat

View on GitHub | View on Devpost