This capstone project represents the culmination of the MIT - Full Stack Development with MERN Course, showcasing my skills and expertise in creating a comprehensive web application. The project revolves around a Food Ordering platform that offers a seamless user experience, allowing individuals to easily sign up, browse a wide selection of dishes, and conveniently checkout using secure credit card transactions.
One unique aspect of this project is the inclusion of a dual user functionality. In addition to regular user accounts, the platform also accommodates restaurant entities. As a restaurant, users have the ability to create and customize their own dedicated restaurant space. This includes adding a compelling description and incorporating a distinct logo that represents their brand. Furthermore, restaurant owners can effortlessly manage their menu by creating, deleting, and editing dishes to effectively cater to their target audience.
By offering this added functionality, users are empowered to experience the dynamics of running a business within the digital realm. The platform provides an interactive environment for both users and restaurants, fostering a seamless and engaging food ordering experience.
- Sign Up as a user or restaurant with email and password
- Sign In
- Search for restaurants
- Search for dishes in a restaurant
- Add dishes to your cart by selecting a quantity
- Modify quantity of dishes on cart
- Price and quantity shown in cart updates automatically
- Check out with stripe
- Create your Restaurant by signing up as a restaurant
- Upload or edit your restaurant picture
- Create, Edit and Delete Dishes. Including pictures and prices
- Auto populate restaurant address when creating a restaurant.
Fork this repository and follow the next steps
git clone
npm installBefore running npm run dev, create a .env.local file in the root directory with the following environment variables:
DB_URI=mongodb+srv://username:password@cluster.mongodb.net/dbname?retryWrites=true&w=majority
ACCESS_TOKEN_SECRET=your-random-secret-key-here
REFRESH_TOKEN_SECRET=your-random-secret-key-here
STRIPE_PUBLIC_KEY=pk_test_your_stripe_public_key
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key
BLOB_READ_WRITE_TOKEN=vercel_blob_rw_your_token_here
REACT_APP_GOOGLE=your_google_maps_api_keyNote: This project has been migrated from AWS S3 to Vercel Blob Storage. See SETUP_LOCAL.md for detailed local setup instructions, or VERCEL_DEPLOYMENT.md for deployment guide.
Once you have set up the environment variables, you can safely run the application by running npm run dev. Then open localhost:3000 in your browser.
- Framework: NextJS
- Hosting Service: Vercel
- API Approach: REST
- API Documentation: Swagger. Visit Lyfteats API Docs
- Database: MongoDB Atlas
- File Storage: Vercel Blob Storage
- Payment Gateway: Stripe (test mode for demo)
- Authorization and Authentication: JSON Web Tokens
- Material UI: MaterialUI
- Important libraries: @vercel/blob, stripe, mongoose, cookies-next, next-swagger-doc, general-formatter, NextJS-ProgressBar
