
Central Deploy Manager
2026
The deployment plumbing behind this site and its smaller siblings: signed webhooks, health-checked Docker rollouts, and Caddy routing on one VPS.

Aquarium
2026
A small 3D aquarium for the browser, built with React and Three.js and deployed like a real app because apparently I cannot leave anything simple.

Bird of the Day
2026
A tiny daily bird site powered by recent eBird observations, a small Express API, and an unreasonable amount of affection for birds.
CentraID
2026
A six-person capstone connecting a NestJS/PostgreSQL backend, an Expo mobile app, and a classroom reader service for verified check-ins.
React Native Cloud Prototypes
2025
Two Expo/Firebase prototypes: one for vehicle access approvals and one for QR-based classroom attendance.
Wurmkickflip
2026
An extremely serious physics experiment about teaching a worm to ride a skateboard. The physics works; the worm remains a work in progress.
2025
React Native Cloud Prototypes
Two Expo/Firebase prototypes: one for vehicle access approvals and one for QR-based classroom attendance.
My notes
These were my first serious passes at taking a mobile workflow all the way from a phone screen to cloud-backed state. Drive Safe handled photo-based vehicle approvals; the attendance prototype swapped that flow for teacher-generated QR codes and student check-ins.
They are proofs of concept, not production security systems, and their Firebase backends are intentionally switched off now. The useful part was learning the loop: permissions, routing, role-specific screens, uploads, live database updates, and all the small failure states that appear once an app leaves a single device.
These two React Native prototypes explored the same core mobile pattern in different domains: use a phone app as the user-facing surface, use Firebase for cloud-backed state, and make the workflow visible through live updates rather than static forms.
Drive Safe Doha was a vehicle approval proof of concept. A car-side flow captured a photo, uploaded it to Firebase Storage, and created a pending request in Firestore. An owner-side flow listened for new requests, reviewed the image, and approved or denied access.
QR Attendance Verification adapted the same Expo/Firebase foundation for an education workflow. A teacher generated a class QR code, students scanned it with their phone camera, and Firestore reflected live attendance state for the roster.
Neither project was intended as a production security system. They were useful because they made the mobile-to-cloud loop concrete: routing, camera permissions, image or QR handling, real-time database updates, and role-specific screens all had to work together.