SwipeBite
Tinder for restaurants. Enter a city, get a stack of nearby places, swipe right on what looks good. Every swipe trains a taste profile that makes the next batch smarter.
This is a live working demo running against a real backend with a real database and Google Places API.

Working demo — backend running on Node.js + PostgreSQL + Prisma, real restaurant data from Google Places API, JWT auth with refresh tokens.
Every screen, running live
Captured from a running local instance connected to a real PostgreSQL database.

What it does
Swipe to Discover
Tinder-style card swiping for restaurants. Right to save, left to pass. The gesture is fast and the UI gets out of the way.
AI Match Score
Every card shows a percentage match based on your taste profile. The more you swipe, the more accurate it gets.
Location-Based Feed
Enter any city or neighborhood. Results pull from Google Places and filter by distance, price, and cuisine.
Real-Time Hours
Open/closed status shown on every card based on the current time. No more showing up to a closed restaurant.
Saved List
Liked restaurants stack up in a personal saved tab. Browse them anytime, no more forgetting that place you wanted to try.
Taste Profile
Your preferences build up over time — cuisine types, price range, and location radius all feed the recommendation engine.
What I am building next
Group mode: swipe with friends and match on places everyone liked
Visit log to track restaurants you have actually been to
Photo strip from Google Places for richer cards
Push notifications for deals at saved restaurants
Filter by dietary restrictions (vegetarian, halal, gluten-free)
How it is built
Next.js 16 with Turbopack, TypeScript throughout, Framer Motion for swipe gesture animations.
Node.js + Express REST API. JWT access tokens (15 min) with refresh token rotation stored in PostgreSQL.
PostgreSQL via Supabase. Prisma ORM with typed schemas for users, swipes, matches, and taste profiles.
Google Places API for real location data. Results cached per-query and filtered server-side by distance, price, and cuisine.
Taste profile built from swipe history. Match scores computed per-restaurant by weighting cuisine, price, and distance against your preferences.