Tim's Kitchen is a modern food ordering platform where customers can browse, order, and pay for delicious food items. Chefs can also add and manage their food offerings. The platform includes features like real-time payment processing, WhatsApp integration for order customization, and user account management.
For Customers
- Browse a wide variety of food items with detailed descriptions
- Filter food items by category, price, and origin
- Add food items to cart and place orders
- Multiple payment options via Flutterwave or direct chat with chef
- Track order history and status
- User authentication and profile management
For Chefs/Admins
- Add, edit, and remove food items
- Upload food images directly or via URL
- Track food inventory and order statistics
- Manage orders and customer communications
- Profile and settings management
- React - UI Library
- Redux Toolkit - State Management
- React Router - Routing
- Firebase - Authentication
- Supabase - Image Storage
- Flutterwave - Payment Processing
- TailwindCSS - Styling
- Vite - Build Tool
- Node.js (v14 or higher)
- npm or yarn
- Firebase account
- Supabase account
- Flutterwave account (for payment processing)
-
Clone the repository
git clone https://github.com/freshpex/timkitchenFrontend.git
-
Navigate to the project directory
cd timkitchenFrontend -
Install dependencies
npm install # or yarn -
Create a
.envfile in the root directory based on.env.example# API Configuration VITE_API_URL=http://localhost:5000/api # Firebase Configuration VITE_API_KEY=your_firebase_api_key VITE_AUTH_DOMAIN=your-project-id.firebaseapp.com VITE_PROJECT_ID=your-project-id VITE_STORAGE_BUCKET=your-project-id.appspot.com VITE_MESSAGING_SENDER_ID=your_messaging_sender_id VITE_APP_ID=1:your_app_id:web:your_web_app_id # Payment Gateway (Flutterwave) VITE_FLUTTERWAVE_PUBLIC_KEY=FLWPUBK_TEST-your-public-key-here-X # Supabase Configuration VITE_SUPABASE_URL=https://your-project-id.supabase.co VITE_SUPABASE_ANON_KEY=your_supabase_anon_key VITE_SUPABASE_BUCKET_NAME=your_bucket_name -
Start the development server
npm run dev # or yarn dev -
Open http://localhost:5173 in your browser
timkitchenFrontend/
├── public/ # Public assets
├── src/
│ ├── Components/ # Reusable components
│ ├── Firebase/ # Firebase configuration
│ ├── MainLayout/ # Layout components
│ ├── Pages/ # Page components
│ │ ├── AddFood/ # Add food page
│ │ ├── Food/ # Food listing page
│ │ ├── FoodOrder/ # Food order page
│ │ └── ... # Other pages
│ ├── redux/ # Redux store and slices
│ │ ├── slices/ # Redux slices
│ │ └── store.js # Redux store configuration
│ ├── utils/ # Utility functions
│ ├── App.jsx # Main app component
│ └── index.css # Global styles
├── .env # Environment variables
├── .gitignore # Git ignore file
├── package.json # Project dependencies
└── vite.config.js # Vite configuration
The application uses Redux Toolkit for state management. The store is organized into the following slices:
authSlice: Manages user authentication statefoodSlice: Manages food item datafoodActionsSlice: Manages actions related to food (adding, ordering, etc.)uiSlice: Manages UI state (loading, modals, etc.)
User authentication is handled by Firebase Authentication. The application supports:
- Email/password authentication
- Google sign-in
- Password reset
Food images can be uploaded in two ways:
- Direct file upload to Supabase
- URL input
Payment processing is handled by Flutterwave. The application also supports direct communication with the chef via WhatsApp for order customization and alternative payment methods.
Contributions are welcome! Here's how you can contribute:
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please ensure your code follows the project's style and includes appropriate tests.
Distributed under the MIT License. See LICENSE for more information.
Project Link: https://github.com/freshpex/timkitchenFrontend




