
03 Feb 2026 → now
SwipeBite
Tinder for restaurants. Enter a city, get a stack of nearby places, and swipe right on what looks good. Every swipe trains a taste profile that makes the next batch smarter.
It runs against a real backend: Express and PostgreSQL through Prisma, JWT auth with refresh tokens, and restaurant data from the Google Places API.
- Role
- Solo, full stack
- Stack
- Next.js 16, TypeScript, Express, PostgreSQL, Prisma
- Data
- Google Places API
- Status
- Live
Screens
One unedited take of the web app running locally against a real PostgreSQL database.
01 / 04 · Sign up
01
Sign up
A name, an email and a password. The form checks each field as you type.
02
Taste setup
Set a location, pick the cuisines you like, then a price range. SwipeBite uses these to weight your first recommendations.
03
Swipe feed
One restaurant at a time, with its hours and a match score. Like or pass, and every swipe trains your taste profile.
04
Saved
Every restaurant you liked in one list. Mark a place as visited and leave a short review.
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.
- 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.
How it's built
- Frontend
- Next.js 16 with Turbopack, TypeScript throughout, Framer Motion for swipe gesture animations.
- Backend
- Node.js + Express REST API. JWT access tokens (15 min) with refresh token rotation stored in PostgreSQL.
- Database
- PostgreSQL via Supabase. Prisma ORM with typed schemas for users, swipes, matches, and taste profiles.
- Restaurants
- Google Places API for real location data. Results cached per-query and filtered server-side by distance, price, and cuisine.
- Personalization
- Taste profile built from swipe history. Match scores computed per-restaurant by weighting cuisine, price, and distance against your preferences.
What I'm building next
- 01Group mode: swipe with friends and match on places everyone liked
- 02Visit log to track restaurants you have actually been to
- 03Photo strip from Google Places for richer cards
- 04Push notifications for deals at saved restaurants
- 05Filter by dietary restrictions (vegetarian, halal, gluten-free)