A full-featured Flutter app inspired by Zomato, designed for food ordering and delivery. Built using Flutter, Supabase, Riverpod, and Retrofit, the app now supports complete authentication, profile management, and dynamic content loading.
- ✅ Supabase Email Link Authentication (Magic Link)
- ✅ Supabase Social Auth (Google, Facebook, Twitter)
- ✅ Forgot & Reset Password with email or social user verification
- ✅ Load Categories from Supabase table (with icon + label)
- ✅ View & Update User Profile from Supabase
userstable
- Onboarding & Walkthrough
- Login via email + password or magic link
- Login with Google, Facebook, or Twitter (OAuth)
- Forgot password and reset password flows with verification
- Display food categories dynamically from Supabase
- Update user profile: name, phone number, date of birth
- Home & Exploration
- Product Listing & Details
- Cart Management
- Checkout (UI Only)
- Chat & Support (Design Only)
- Offer Banner Section for Discounts and Deals
- Settings & Preferences
- Cross-Platform Compatibility (Android & iOS)
- Clean architecture with Riverpod & Retrofit
| Home | Product Details | Cart | Profile |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Live mobile preview (UI mockup)
- Flutter – UI Framework
- Supabase – Auth, Database, Storage
- Retrofit & Dio – Networking
- Freezed + JsonSerializable – Models
- State Management: Riverpod
- Pattern: MVVM (Model-View-ViewModel)
- GoRouter – Navigation
- Responsiveness:
flutter_screenutil
lib/
├── core/ # Constants, helpers, themes
├── features/
│ ├── auth/ # Login, signup, reset password
│ ├── home/ # Home screen with categories
│ └── profile/ # View and update user profile
├── model/ # Data models
├── services/ # API, Supabase, deep link services
└── main.dart # Entry point
flutter_riverpod: ^2.6.1
persistent_bottom_nav_bar_v2: ^6.0.1
flutter_screenutil: ^5.8.4You can install them with:
flutter pub get
git clone https://github.com/Suffixdigital/Zomato-Style-Food-Delivery-App.git
cd Zomato-Style-Food-Delivery-App
flutter pub get- Create a Supabase project.
- Enable the following Auth Providers:
- Email (Magic Link)
- Google, Facebook, Twitter
- Create the following tables in Supabase:
| Column | Type | Description |
|---|---|---|
| id | UUID | Supabase Auth User ID (PK) |
| full_name | Text | Full name |
| date_of_birth | Date | Date of birth |
| phone | Text | Phone number |
| updated_at | Timestamp | Last updated time |
| Column | Type | Description |
|---|---|---|
| id | UUID | Primary key |
| name | Text | Category name (e.g., Pizza) |
| icon_url | Text | Supabase storage public image URL |
- Add your Supabase credentials in
lib/core/constants/app_keys.dart:
const String supabaseUrl = 'https://your-project.supabase.co';
const String supabaseAnonKey = 'your-anon-key';Make sure your pubspec.yaml includes:
flutter:
assets:
- assets/images/
- assets/icons/To customize launcher icon/splash:
flutter pub run flutter_native_splash:create
flutter pub run flutter_launcher_icons:main/login– Email/password, magic link, social login/callback– Handles Supabase deep links/forgot-password→/reset-password- Detects email vs social user and shows proper error
- Loads categories from Supabase
categorytable - Displays icon + name
- Fully dynamic with graceful fallback if no icon found
- Fetches user data from
userstable - Editable fields: full name, phone, date of birth
- Saved to Supabase with validation
flutter run- Cart & Order Placement
- Restaurant & Food Detail Screens
- Payment Integration
- Order History
This project is licensed under the MIT License.
Contributions, issues, and feature requests are welcome!
Feel free to open an issue or submit a PR.
Developed by Suffix Digital
📫 Feel free to connect for collaboration or feedback.




