Software · 2025
Parkzy
Driveways, garages, and private lots — booked in seconds from real people in your neighborhood. A peer-to-peer parking marketplace, live on the App Store with a 5.0★ rating. My company; built end-to-end.
Skip the Search. Ping a Host Instead.
The whole product, frame-accurate: this walkthrough is rendered from code with Remotion — the same pipeline that renders Parkzy's App Store previews — so it's always the current app. The steps follow along as it plays; tap one (or scrub) to jump anywhere.
Live map at useparkzy.com ↗
How It Works
Tell us where you're going. Search a destination — SoFi, USC, a friend's apartment in Echo Park. We surface hosts within walking distance.
One tap. Real humans respond. Parkzy pings every nearby host at once — hosts accept in real time — the matching system is built for sub-60-second accepts.
Drive up. Pull in. Done. Your host's address, access notes, and a live chat thread are waiting.
“I listed 12 of my spots on Parkzy and was able to successfully rent out all of them. They earned me $600 in just one night from an event.”— App Store review, 5.0★ rating
On the App Store




The real App Store listing — “Stop Circling for Parking. Name your price and book a private spot in seconds.”
For spot hosts
List in seconds
Put an unused driveway, lot, or private space online in under a minute.
Earn automatically
Get paid every time a driver parks — pricing, scheduling, and availability all in your control.
Accept from the lock screen
v2.2 — approve or decline a parking request straight from the notification, without opening the app.
For drivers
Guaranteed parking
Find a spot when you actually need it — book last-minute or reserve ahead.
Pay in-app
Apple Pay and Google Pay through Stripe. No cash, no Venmo, no sketchiness.
Talk to a human
A live chat thread with your host — access notes, voice messages, gate codes.
Under the hood
The shape of it
598 TypeScript source files (~184k lines), 392 SQL migrations, and 163 Supabase edge functions — built and operated as sole engineer since Sept 2025.
One codebase, three platforms
React 18 + Vite + TypeScript, shipped to web, iOS, and Android through Capacitor 7 — with Capgo for over-the-air updates so a fix doesn't wait on app review.
Payments & identity
Stripe Connect for host payouts plus Stripe Identity for ID verification — the trust layer a stranger-parks-in-your-driveway marketplace actually requires.
Geospatial search
Mapbox GL with supercluster, so thousands of spots cluster and re-rank smoothly as you pan.
Tested, not hoped
6 Playwright end-to-end specs (guest booking, auth booking, pricing, Safari), Vitest units on the pricing engine, and a Deno test on the edge functions — all gated in GitHub Actions.
Data warehouse
A separate dbt + BigQuery stack lands PostHog, Supabase, and Stripe data in one place, so product questions get answered with SQL instead of vibes.
Disaster recovery — the part nobody sees
Parkzy runs on Supabase, which means Supabase is a single point of failure for a business that takes people's money. So there's a Terraform-managed AWS standby: an RDS Postgres 17 instance configured for logical replication to match Supabase's defaults, standby Lambdas covering the critical paths (auth, spot search, profile, payment methods, health check), and a GitHub Actions cron that syncs the database every four hours.
It's applied infrastructure, not a diagram — the Terraform state is on disk. Most solo products don't have a failover story. This one does, because a marketplace that can't take a booking is a marketplace that's dead.
The AI suite, shipped
All of it is in production, not in progress: semantic spot search (pgvector embeddings, with a backfill function), LLM-explained dynamic pricing, AI-graded listing photos, message translation, audio transcription, and AI-drafted support replies — all routed through one shared LLM/embeddings helper so every function gets model access the same way. That shared helper is the small, honest version of the model-access layer a platform team builds at real scale.
Live at useparkzy.com ↗.