Find what to order — not just where to eat.
Bytez is a dish-first food review app for iOS. Most apps tell you where to go. Bytez answers the question people actually ask at the table: "What dish should I get?"
Click the thumbnail to watch the demo on YouTube.
You’re at a restaurant. The menu is long. Yelp says the place is 4.2 stars — great, but that doesn’t tell you which of the 40 items is worth ordering. Generic review apps are built around venues, not dishes. So you scroll, guess, or ask the server. Bytez flips that: it’s built for the moment you’re staring at the menu and want to know what to get, not just whether the place is good.
Bytez is a dish-first food review app for iOS. You explore nearby spots on a map, open a restaurant, and then drill into individual dishes. Rate what you ordered with stars, tags, photos, and notes. When you’re deciding what to order next time, you search a dish name and get a quick verdict: average rating, top tags, and a latest photo — then you can dive into full reviews. The app surfaces restaurants that already have Bytez reviews so you see real dish-level intel before you go.
- Explore — Map and list of nearby restaurants; places with Bytez reviews are prioritized so you see where the community has already contributed.
- Dish-level reviews — Rate dishes with 1–5 stars, tags, photos, and text. Your review is tied to a specific dish at a specific restaurant.
- Dish summary — Search a dish at a restaurant and see an aggregated snapshot: average rating, top tags, latest photo. One glance before opening individual reviews.
- Dish suggestions — When writing a review, you see dishes others have already reviewed at that restaurant so names stay consistent and searchable.
- Favorites — Save other users’ reviews to your list so you can revisit “that pasta” or “that bowl” later.
- Profile — Avatar, display name, bio, and light/dark/system appearance. Your reviews and saved reviews live in your profile and in the main flows.
Explore — The app shows a map (default centered on a demo region; real location can be used) and loads nearby restaurants via MapKit search. Restaurants that have at least one Bytez review in the database are fetched and surfaced so the map and list highlight “reviewed” spots. You tap a place to open its detail view.
Restaurant detail — A single restaurant screen shows its info, a small map, and all Bytez reviews for that place. A dish search bar lets you type a dish name. If there’s an exact match (e.g. “Pad Thai”), you see a dish summary card: review count, average rating, top tags, and the most recent photo. Below that, every review for that dish. If there’s no exact match, you get filtered results by partial name. From here you can open the “new review” flow for this restaurant.
Writing a review — You pick the restaurant (from the detail screen), enter the dish name (with suggestions from existing dishes at that restaurant), set a 1–5 rating, add optional text, tags, and photos. Photos go to Supabase Storage; the review is stored in Postgres with links to the restaurant and your profile. Dish names are the key: consistent naming makes dish search and summaries useful for everyone.
Favorites — From any review card you can save a review to your Favorites tab. Saved reviews are stored in a junction table (user + review). Your Favorites list shows the full review (dish, rating, photos, tags, author) so you can revisit “what to order” later.
Profile — Sign in with email/password, Sign in with Apple, or Google. Your profile holds avatar, display name, and bio; avatar and food photos use Supabase Storage. Appearance (light/dark/system) is stored locally. “My reviews” and “Saved” are the two main lists; the rest of the app uses the same review and restaurant data.
| Layer | Technology |
|---|---|
| UI | SwiftUI (iOS 17+). Tabs: Explore, Favorites, My Reviews, Profile. MapKit for map and local search; bottom sheets and list layouts for explore and detail. |
| Maps & location | MapKit (MKLocalSearch for nearby restaurants), CoreLocation for user location. Restaurants are matched to the database by mapkit_id or coordinates when creating reviews. |
| Backend & data | Supabase: Postgres for profiles, restaurants, reviews, and saved_reviews; Auth for email/password, Apple, and Google; Storage for avatars and food photos. |
| Auth | Supabase Auth (JWT). Login/signup and OAuth callbacks; profile created on first sign-in and updated from Profile screen. |
| Images | SwiftUI PhotosPicker, uploads to Supabase Storage (avatars, foods), in-memory caching for avatars and review photos so lists and cards load without re-fetching. |
The app is native iOS: one Xcode project, no separate backend server. All persistence and auth go through the Supabase client in the app.
Bytez — so you stop guessing at the menu and start ordering what actually hits.
MIT — use it, change it, ship it. No warranty if you still order the wrong thing.
