FeedMe is a Meal Planning & Delivery Web Application that allows users to personalize their meal plans and schedule deliveries based on their dietary preferences. Customers can browse available meal options, select meals based on their preferences, and schedule delivery. Meal providers can manage menus, respond to customer orders, and track deliveries.
- Secure login system for customers and meal providers using email or phone number and password.
- JWT (JSON Web Tokens) for authentication.
- Passwords are securely hashed with bcrypt.
- Browse meal options based on dietary preferences (vegan, keto, gluten-free, etc.).
- Track meal orders and past deliveries.
- Manage dietary preferences, cuisines, and portion sizes.
- Meal providers can create, update, and manage their menus.
- Respond to customer orders by accepting, modifying, or declining requests.
- Customers can personalize meals based on dietary needs.
- Meal providers can specify ingredients, portion sizes, and pricing.
- Customers can search for meals based on cuisine, dietary preferences, ratings, and availability.
- Meal providers can view customer preferences and prepare meals accordingly.
- Custom dashboards and routes for customers and meal providers.
- Admin access for managing users and content.
- Notifications for customers when meals are prepared and out for delivery.
- Notifications for meal providers when new orders are placed.
- Next.js (for SSR/SSG)
- TypeScript for type safety
- React for building user interfaces
- Tailwind CSS for styling
- Node.js with Express for the RESTful API
- MongoDB for storing data (users, meal menus, orders)
- JWT for authentication
- bcrypt for password hashing
- Nodemailer for email notifications
- Redux for state management
- NextAuth for authentication
- Axios for making HTTP requests
- Cloudinary for image uploads
- Home Page: Overview of the platform.
- Login Page: Login using email or phone number.
- Dashboard: Browse meals, manage orders and preferences.
- Profile: Edit personal details.
- Find Meals: Search for meals based on preferences.
- Order Meal: Place meal orders with customization options.
- Home Page: Overview of platform benefits for meal providers.
- Login Page: Login using email or phone number.
- Dashboard: Manage menus and orders.
- Profile: Edit meal provider profile, including available meals.
- Post Meal Menu: Post detailed meal menus for customers to browse.
- Order Responses: Respond to customer orders.
- Node.js (version 16 or higher)
- MongoDB (local setup or Atlas)
-
Clone the repository:
git clone https://github.com/ifajul89/feedme.git
-
Install dependencies for frontend and backend:
In the root folder of the project:
cd feedme npm install -
Set up the environment variables:
Create a
.env.localfile in the root directory and add your environment variables. Example:NEXT_PUBLIC_API_URL=backend-url NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=name NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET=preset
-
Start the development server:
To run the frontend and backend in development mode:
npm run dev
This will start the server on
http://localhost:3000.
/feedme
/frontend # Next.js frontend code
/backend # Node.js and Express backend API
/models # MongoDB Mongoose models for users, meals, orders
/controllers # Logic for handling API requests
/routes # API routes for frontend interaction
/public # Static files (e.g., images)
/utils # Utility functions (e.g., for authentication, email sending)
/config # Configuration files (e.g., for MongoDB, JWT)