Portfolio
A mix of client work and projects of my own. The personal projects are mine end to end, so I can show them in full. Client and agency work is under NDA: the categories are public, the specifics are available on request.
Client & freelance work
Freelance and agency work since 2020, under NDA. I can walk through the specifics, screens and outcomes privately. Just ask.
AdventuresApp
A React Native app for planning real-world meet-ups with friends, built solo from the database up. The backend is Supabase: a six-table Postgres schema with row-level security on every table, plus Edge Functions for the server-side pieces. Group chat runs on Stream Chat, authenticated through a JWT-verified Edge Function so the client never sees a raw API key. The app itself is Expo with Expo Router, Zustand for state, Google Places for picking locations, and photo uploads for event covers and the group feed. Push notifications, a top-to-bottom redesign and a few smaller features are still to come.
- App
- Backend
- Services





Designed the schema, wrote the RLS policies and Edge Functions, built the app in React Native/Expo, and integrated Stream Chat. Solo, no team.
Ledger
A personal fitness tracker for logging workouts and watching progress over time. It works on the device first, with no Ledger account, and then syncs between your phone and laptop through a file in your own Google Drive, with no server of mine in between. It works offline, queues changes until you are back online, and shows a live map of which devices have synced and when. It includes a library of more than 750 exercises, past workouts can be logged and edited, and it can be installed to the home screen, where it updates itself when a new version ships. A rule-based coach reads the log and suggests the next workout, weighing which muscles have recovered against what is due in the rotation, with next-set targets by double progression and weekly sets per muscle checked against a range for your goal. An interactive body map shows the sets, recovery and last trained date for each muscle. A rest timer runs between sets. It lives at noahelsner.com/lab/fitness as the first tool in my Lab.
- Front end
- Build
- Data
- App features
- Coach
- Design






Designed and built it solo, as a React app with on-device storage, Google Drive sync and a rule-based coach.