Taste of Home, Delivered
A full-stack web application connecting home cooks with customers who want healthy, affordable, home-style meals. Built with React, TypeScript, TailwindCSS, and Supabase.
- Browse dishes by cuisine, price, rating, and location
- Order food from verified home chefs
- Subscribe to tiffin meal plans (daily/weekly/monthly)
- Book catering for parties and events
- Track orders in real-time
- Rate and review dishes and cooks
- Save favorite chefs and addresses
- Create and manage dish listings
- Accept and manage orders
- Build your chef profile with specialties
- View earnings and analytics
- Post recipes and cooking tips
- Offer tiffin subscriptions
- Accept event catering orders
- Authentication: Email/password and Google OAuth via Supabase Auth
- Role-Based Access: Customer, Cook, and Admin roles with Row Level Security
- Real-time Updates: Order status updates using Supabase Realtime
- Image Storage: Dish and profile images via Supabase Storage
- Secure Payments: Razorpay integration (test mode ready)
- Responsive Design: Mobile-first UI with TailwindCSS
- Admin Dashboard: User management, cook verification, analytics
- Frontend: React 18, TypeScript, TailwindCSS
- Backend: Supabase (PostgreSQL, Auth, Storage, Realtime, Edge Functions)
- Styling: TailwindCSS with custom brand colors
- Icons: Lucide React
- Build Tool: Vite
- Deployment: Vercel-ready
The application uses the following main tables:
- profiles: User information and roles
- cook_profiles: Additional chef details
- dishes: Menu items
- orders: Food orders
- tiffin_subscriptions: Meal plans
- event_orders: Party/event bookings
- reviews: Ratings and comments
- blogs: Recipes and articles
All tables have Row Level Security (RLS) policies for secure data access.
- Node.js 18+ and npm
- A Supabase account (free tier works)
- Git
```bash git clone cd gharse ```
```bash npm install ```
The database schema is already applied. Your Supabase project includes:
- All database tables with RLS policies
- Authentication configured
- Storage buckets for images
Your .env file already contains:
```env VITE_SUPABASE_URL=https://hybhjratuaqstvebzatc.supabase.co VITE_SUPABASE_ANON_KEY= ```
To enable image uploads, create a storage bucket in your Supabase dashboard:
- Go to Storage in Supabase Dashboard
- Create a new bucket named
dish-images - Set it to public for read access
- Add policy to allow authenticated users to upload
To enable Google sign-in:
- Go to Authentication > Providers in Supabase Dashboard
- Enable Google provider
- Add authorized redirect URLs
- Configure OAuth consent screen in Google Cloud Console
```bash npm run dev ```
Visit http://localhost:5173 to see the app.
```bash npm run build ```
- Push your code to GitHub
- Connect your repository to Vercel
- Add environment variables in Vercel:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEY
- Deploy
Your app will be live at <your-project>.vercel.app
After deployment, add your production URL to Supabase:
- Go to Authentication > URL Configuration
- Add your Vercel URL to Redirect URLs
- Created automatically on signup
- Can browse, order, and review food
- Access to customer dashboard
- Requires admin approval or self-registration as cook
- Can create dishes and manage orders
- Access to cook dashboard
- Can post blogs and recipes
- Manually set in database
- Full access to all data
- User management
- Cook verification
- Analytics dashboard
To create an admin user, update the role in Supabase:
```sql UPDATE profiles SET role = 'admin' WHERE email = 'admin@example.com'; ```
To integrate Razorpay:
- Sign up at razorpay.com
- Get API keys (use test mode for development)
- Create a Supabase Edge Function for payment processing
- Add Razorpay keys to Edge Function secrets
To add location features:
- Get Google Maps API key
- Add to environment variables
- Implement location picker in order forms
``` src/ βββ components/ # Reusable components β βββ Header.tsx β βββ Footer.tsx β βββ ProtectedRoute.tsx βββ contexts/ # React contexts β βββ AuthContext.tsx βββ lib/ # Utilities β βββ supabase.ts βββ pages/ # Page components β βββ HomePage.tsx β βββ LoginPage.tsx β βββ OrderFoodPage.tsx β βββ EventsPage.tsx β βββ TiffinPage.tsx β βββ BecomeChefPage.tsx β βββ CustomerDashboard.tsx β βββ CookDashboard.tsx β βββ BlogPage.tsx β βββ AboutPage.tsx β βββ ContactPage.tsx βββ App.tsx # Main app component βββ main.tsx # Entry point ```
- Email/password signup and login
- Google OAuth integration
- Protected routes based on user role
- Session management with Supabase
- Type-safe queries with TypeScript
- Row Level Security for data protection
- Real-time subscriptions for order updates
- Automatic timestamps with triggers
- Image upload to Supabase Storage
- Public URLs for dish images
- Profile avatar management
- Create, read, update orders
- Status tracking (pending β delivered)
- Real-time updates to both cook and customer
- Primary Orange: #F97316
- Success Green: #22C55E
- Background Cream: #FFF7ED
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a pull request
MIT License - feel free to use this project for learning or commercial purposes.
For issues or questions:
- Email: hello@gharse.com
- GitHub Issues: Create an issue
- Real-time chat between customers and cooks
- AI-powered dish recommendations
- Nutrition information API integration
- Mobile app (React Native)
- Multi-city expansion
- Cook earnings dashboard with charts
- Automated tiffin renewals
- Rating-based cook badges
- PWA support for offline access
Built with β€οΈ using React, TypeScript, and Supabase