MyGourmet is a premium platform connecting high-net-worth individuals with professional chefs for personalized fine dining experiences in the comfort of their own homes.
- User Authentication: Secure login/signup system with role-based access (Chef/Customer)
- Chef Profile Management: Chefs can create and manage their profiles and dish offerings
- Dish Management: Chefs can add, edit, and delete dishes with images and dietary tags
- Profile Customization: Users can upload profile pictures and set dietary preferences
- Elegant UI: Luxury design with serif headings and a refined navy blue color scheme
- Frontend: React 18, TypeScript, Tailwind CSS 4.0
- Styling: Custom luxury design system with Domine (serif) and Montserrat (sans-serif) fonts
- Backend: Supabase (Authentication, Database, Storage)
- Routing: React Router 7
- State Management: React Context API
- Image Upload: React Dropzone with Supabase Storage
- Node.js (v16+)
- npm or yarn
- Supabase account and project
- Docker (for running Supabase locally)
git clone https://your-repository-url/my-gourmet.git
cd my-gourmetnpm install
# or
yarn- Create a new Supabase project at supabase.com
- Run the migration files located in the
supabase/migrationsdirectory - Create required storage buckets:
dish_images- For storing chef dish imagesprofile_avatars- For storing user profile images
-
Install Supabase CLI:
# Using npm npm install -g supabase # Using Homebrew (macOS) brew install supabase/tap/supabase
-
Start Supabase locally (requires Docker):
supabase start
-
Run migrations to set up the database schema:
supabase db push
-
Create required storage buckets:
# The storage buckets will be created by migrations, but you can also create them manually: supabase storage create-bucket dish_images --public supabase storage create-bucket profile_avatars --public -
Set appropriate RLS (Row Level Security) policies for storage:
# You can apply the RLS policies by running the SQL files in the migrations directory: supabase db reset -
Get local credentials:
supabase status
This will provide you with the local URL and anon key to use in your environment variables.
Create a .env file in the root directory with the following variables:
# For Supabase Cloud
VITE_SUPABASE_URL=your-supabase-url
VITE_SUPABASE_ANON_KEY=your-supabase-anon-key
# OR for local Supabase (example values, replace with your actual values from `supabase status`)
# VITE_SUPABASE_URL=http://localhost:54321
# VITE_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0
npm run dev
# or
yarn devThe application will be available at http://localhost:5173.
my-gourmet/
├── src/ # Source files
│ ├── components/ # Reusable React components
│ ├── contexts/ # React context providers
│ ├── layouts/ # Page layout components
│ ├── lib/ # Utility functions and libraries
│ ├── pages/ # Page components
│ │ └── chef/ # Chef-specific pages
│ └── types/ # TypeScript type definitions
├── public/ # Static assets
└── supabase/ # Supabase configuration and migrations
└── migrations/ # Database migration files
npm run dev- Start the development servernpm run build- Build the production versionnpm run preview- Preview the production build locallynpm run lint- Run ESLint for code quality
To deploy the application to production:
-
Build the application:
npm run build
-
Deploy the built files from the
distdirectory to your hosting provider of choice. -
Ensure your Supabase project is properly configured for production use.
- Images from Unsplash
- Icons from Lucide
- Fonts from Google Fonts