A comprehensive Next.js-based e-commerce platform for a Bengali restaurant featuring advanced order management, automated PDF bill generation, and dual-delivery email system.
- Interactive Menu System: Browse authentic Bengali dishes with detailed descriptions
- User Authentication: Secure login/signup with JWT tokens and dual authentication support
- Order Management: Complete order lifecycle from cart to delivery
- Automated Bill Generation: PDF invoices generated using Puppeteer with professional formatting
- Dual Email Delivery: Bills automatically sent to both customer and admin
- Profile Management: User profile updates with address management
- Admin Dashboard: Order management and system administration
- Next.js 15.5.0 with App Router and TypeScript
- MongoDB Atlas for data persistence with comprehensive models
- Dual Authentication System: Cookie-based and Bearer token support for browser compatibility
- Puppeteer PDF Generation with Chrome path detection and fallback support
- Nodemailer Integration for reliable email delivery
- Responsive Design with Tailwind CSS
- Server-Side Validation using Zod schemas
- Node.js 18+ and npm
- MongoDB Atlas account or local MongoDB instance
- SMTP email service (Gmail recommended)
-
Clone the repository
git clone https://github.com/DebdootManna/bong-flavours cd bong-flavours -
Install dependencies
npm install
-
Environment Configuration Create a
.env.localfile in the root directory:# MongoDB Configuration MONGODB_URI=your_mongodb_connection_string # JWT Configuration JWT_SECRET=your_super_secure_jwt_secret_key_here # Email Configuration (SMTP) SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USER=your_email@gmail.com SMTP_PASS=your_app_specific_password ADMIN_EMAIL=admin@bongflavours.com # Application Configuration NEXT_PUBLIC_APP_URL=http://localhost:3000
-
Start the development server
npm run dev
-
Access the application Open http://localhost:3000 in your browser
The application includes comprehensive MongoDB models with automatic validation and schema enforcement.
The following collections will be automatically created:
{
_id: ObjectId,
name: String (required),
email: String (required, unique, indexed),
phone: String (required, unique, indexed),
password: String (required, hashed),
role: String (enum: ['customer', 'admin'], default: 'customer'),
address: String (optional),
city: String (optional),
zipCode: String (optional),
createdAt: Date,
updatedAt: Date
}{
_id: ObjectId,
orderNumber: String (required, unique, auto-generated),
userId: ObjectId (required, references Users),
items: [{
menuItemId: String (required),
name: String (required),
price: Number (required),
quantity: Number (required),
variant: String (optional),
specialInstructions: String (optional)
}],
customerInfo: {
name: String (required),
email: String (required),
phone: String (required),
address: String (required)
},
deliveryInfo: {
address: String (required),
phone: String (required),
deliveryNotes: String (optional)
},
total: Number (required),
status: String (enum: ['pending', 'confirmed', 'preparing', 'ready', 'delivered', 'cancelled'], default: 'pending'),
paymentMethod: String (enum: ['cod', 'online'], default: 'cod'),
notes: String (optional),
createdAt: Date,
updatedAt: Date
}-
Install MongoDB Compass Download from MongoDB Compass
-
Connect to your MongoDB instance
- Local:
mongodb://localhost:27017 - Atlas: Use your connection string from MongoDB Atlas
- Local:
-
Create Database
- Database name:
bongflavours
- Database name:
-
Import Sample Data Create the following collections and import sample documents:
Users Collection Sample:
[ { "name": "Admin User", "email": "admin@bongflavours.com", "phone": "9876543210", "password": "$2b$10$hashedPasswordHere", "role": "admin", "createdAt": new Date(), "updatedAt": new Date() }, { "name": "John Customer", "email": "customer@example.com", "phone": "9876543211", "password": "$2b$10$hashedPasswordHere", "role": "customer", "address": "123 Main Street", "city": "Kolkata", "zipCode": "700001", "createdAt": new Date(), "updatedAt": new Date() } ]
-
Connect to MongoDB
mongosh "your_mongodb_connection_string" -
Switch to database
use bongflavours
-
Create admin user
db.users.insertOne({ name: "Admin User", email: "admin@bongflavours.com", phone: "9876543210", password: "$2b$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi", // "password" role: "admin", createdAt: new Date(), updatedAt: new Date(), });
-
Create sample customer
db.users.insertOne({ name: "Test Customer", email: "customer@example.com", phone: "9876543211", password: "$2b$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi", // "password" role: "customer", address: "123 Main Street", city: "Kolkata", zipCode: "700001", createdAt: new Date(), updatedAt: new Date(), });
-
Create indexes for performance
db.users.createIndex({ email: 1 }, { unique: true }); db.users.createIndex({ phone: 1 }, { unique: true }); db.orders.createIndex({ userId: 1 }); db.orders.createIndex({ orderNumber: 1 }, { unique: true }); db.orders.createIndex({ createdAt: -1 });
Create a seeding script scripts/seed.js:
const { MongoClient } = require("mongodb");
const bcrypt = require("bcryptjs");
const MONGODB_URI = "your_mongodb_connection_string";
async function seedDatabase() {
const client = new MongoClient(MONGODB_URI);
try {
await client.connect();
const db = client.db("bongflavours");
// Hash password
const hashedPassword = await bcrypt.hash("password", 10);
// Insert admin user
await db.collection("users").insertOne({
name: "Admin User",
email: "admin@bongflavours.com",
phone: "9876543210",
password: hashedPassword,
role: "admin",
createdAt: new Date(),
updatedAt: new Date(),
});
// Insert sample customer
await db.collection("users").insertOne({
name: "Test Customer",
email: "customer@example.com",
phone: "9876543211",
password: hashedPassword,
role: "customer",
address: "123 Main Street",
city: "Kolkata",
zipCode: "700001",
createdAt: new Date(),
updatedAt: new Date(),
});
console.log("Database seeded successfully!");
} catch (error) {
console.error("Seeding failed:", error);
} finally {
await client.close();
}
}
seedDatabase();Run the seeding script:
node scripts/seed.jsMONGODB_URI=mongodb://localhost:27017/bongflavoursMONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/bongflavours?retryWrites=true&w=majority- Enable 2-Factor Authentication on your Gmail account
- Generate App Password:
- Go to Google Account settings
- Security β 2-Step Verification β App passwords
- Generate password for "Mail"
- Update Environment Variables:
SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USER=your_email@gmail.com SMTP_PASS=your_16_character_app_password
- Create MongoDB Atlas Account at mongodb.com
- Create a New Cluster
- Configure Network Access:
- Add your IP address (or 0.0.0.0/0 for development)
- Create Database User:
- Username/password for database access
- Get Connection String:
- Replace
<password>with your database user password - Update
MONGODB_URIin.env.local
- Replace
Generate a secure JWT secret:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"Add to .env.local:
JWT_SECRET=your_generated_secret_herebong-flavours/
βββ src/
β βββ app/
β β βββ api/ # API routes
β β β βββ auth/ # Authentication endpoints
β β β βββ orders/ # Order management
β β β βββ menu/ # Menu system
β β βββ app/ # Protected application routes
β β β βββ menu/ # Menu browsing
β β β βββ checkout/ # Order checkout
β β β βββ profile/ # User profile
β β βββ admin/ # Admin dashboard
β β βββ login/ # Authentication pages
β β βββ signup/
β βββ components/ # Reusable UI components
β βββ contexts/ # React contexts (Auth, Cart)
β βββ lib/ # Utility libraries
β β βββ mongodb.ts # Database connection
β β βββ auth.ts # Authentication utilities
β β βββ invoice.ts # PDF generation
β β βββ mailer.ts # Email utilities
β βββ models/ # MongoDB models
β βββ data/ # Static data (menu items)
βββ public/ # Static assets
βββ package.json
The application supports both cookie-based and Bearer token authentication for maximum browser compatibility:
- Cookie Authentication: Traditional httpOnly cookies (primary)
- Bearer Token Authentication: localStorage-based tokens (fallback for VS Code Simple Browser)
- User logs in via
/api/auth/login-v2 - JWT token stored in both httpOnly cookie and localStorage
- API requests check Authorization header first, then cookie
- Profile updates work seamlessly across all browser environments
- Order Creation: Triggers automatic PDF generation
- PDF Generation: Professional invoice created using Puppeteer
- Dual Delivery: Email sent to both customer and admin
- Error Handling: Robust error handling with detailed logging
- Customer email includes order details and PDF attachment
- Admin email includes complete order information for processing
- Professional HTML formatting with Bengali restaurant branding
-
Register/Login:
Email: customer@example.com Password: password -
Browse Menu: Navigate to
/app/menu -
Add Items to Cart: Select dishes and quantities
-
Proceed to Checkout: Fill in delivery information
-
Place Order: Complete the order process
-
Verify Email Delivery: Check both customer and admin emails for PDF bills
- Login Flow: Test with VS Code Simple Browser and regular browsers
- Profile Updates: Modify user profile information
- Order History: View past orders in profile dashboard
- Admin Access: Login as admin to manage orders
The system automatically generates professional PDF bills with:
- Company branding and logo
- Complete order details
- Customer and delivery information
- Itemized pricing and totals
- Order number and timestamps
- View all orders with filtering and pagination
- Update order status (pending β confirmed β preparing β ready β delivered)
- Customer information management
- Revenue tracking and analytics
- View customer accounts
- Order history per customer
- Communication tools
# Production MongoDB
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/bongflavours_prod
# Secure JWT Secret
JWT_SECRET=production_secure_secret_32_characters_minimum
# Production Email Configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=production_email@bongflavours.com
SMTP_PASS=production_app_password
ADMIN_EMAIL=admin@bongflavours.com
# Production URL
NEXT_PUBLIC_APP_URL=https://your-domain.comnpm run build
npm start-
Authentication Not Working:
- Verify JWT_SECRET is set
- Check MongoDB connection
- Clear browser localStorage and cookies
-
PDF Generation Fails:
- Ensure Chrome/Chromium is installed
- Check Puppeteer configuration
- Verify sufficient system memory
-
Emails Not Sending:
- Verify SMTP credentials
- Check Gmail app password configuration
- Ensure network connectivity
-
Database Connection Issues:
- Verify MongoDB URI format
- Check network access in MongoDB Atlas
- Ensure database user permissions
Enable detailed logging by setting:
NODE_ENV=development- Chrome/Chromium: Full functionality
- Firefox: Full functionality
- Safari: Full functionality
- VS Code Simple Browser: Full functionality with Bearer token authentication
- Mobile browsers: Responsive design optimized
- ES7+ React/Redux/React-Native snippets
- Tailwind CSS IntelliSense
- MongoDB for VS Code
- Thunder Client (API testing)
Use the included Postman collection or Thunder Client to test API endpoints:
- Authentication endpoints
- Order creation and management
- Profile updates
- Admin functionality
- Next.js App Router: Optimized routing and caching
- MongoDB Indexing: Efficient database queries
- Image Optimization: Next.js automatic image optimization
- Lazy Loading: Components loaded on demand
- PDF Caching: Generated PDFs cached for performance
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License.
Bong Flavours is a tribute to authentic Bengali cuisine, bringing the rich flavors and traditions of Bengal to your table through modern e-commerce technology.
For technical support or questions, please contact the development team or create an issue in the repository.
- Dual Authentication System: Separate login for customers and restaurant admin
- JWT-based Security: Secure token-based authentication with HTTP-only cookies
- Role-based Access Control: Different interfaces for customers and admin users
- Profile Management: Customer dashboard with order history and profile editing
- Smart Menu System: Public browsing menu and authenticated ordering menu
- Shopping Cart: Persistent cart with real-time quantity updates
- Checkout Process: Complete order flow with customer information validation
- Order Management: Full order lifecycle from placement to delivery
- Invoice Generation: Automated order confirmations and receipts
- Order Management: View, update, and track all customer orders
- Menu Management: Add, edit, and manage restaurant menu items
- Customer Management: View customer profiles and order history
- Analytics: Order statistics and business insights
- Categorized Menu: Organized by food categories (Shorbot, Rice, Curry, etc.)
- Vegetarian Filtering: Clear VEG/NON-VEG labeling and filtering
- Search Functionality: Text-based menu item search
- Detailed Item Info: Prices, descriptions, and availability status
- Responsive Design: Mobile-first responsive layout
- Smooth Animations: Framer Motion powered transitions
- Loading States: Skeleton loading and progress indicators
- Error Handling: Comprehensive error states and user feedback
- Next.js 15.5.0: React framework with App Router
- TypeScript: Type-safe development
- Tailwind CSS: Utility-first CSS framework
- Framer Motion: Animation library
- React Context API: State management for cart and authentication
- MongoDB Atlas: Cloud database with Mongoose ODM
- JWT Authentication: Secure token-based auth
- bcryptjs: Password hashing and security
- Nodemailer: Email notifications
- Zod: Runtime type validation
- ESLint: Code linting and quality
- Puppeteer: PDF processing
- Sharp: Image optimization
- Socket.io: Real-time communication (future feature)
Before setting up the project, ensure you have:
- Node.js (v18 or higher)
- npm (v9 or higher)
- MongoDB Atlas account (free tier works)
- Git for version control
- Code editor (VS Code recommended)
git clone https://github.com/DebdootManna/bong-flavours.git
cd bong-flavoursnpm installCopy the environment template and configure your settings:
cp .env.example .env.localEdit .env.local with your actual values:
# Database Configuration
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/bong-flavours?retryWrites=true&w=majority
# Authentication
JWT_SECRET=your-super-secret-jwt-key-minimum-32-characters-long
NEXTAUTH_SECRET=your-nextauth-secret-key
NEXTAUTH_URL=http://localhost:3000
# Email Configuration (Gmail example)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
# Site Configuration
NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_RESTAURANT_EMAIL=mannadebdoot007@gmail.com
NEXT_PUBLIC_RESTAURANT_PHONE=8238018577
# Admin Credentials
ADMIN_EMAIL=admin@bongflavours.com
ADMIN_PASSWORD=admin123The project includes automated scripts to seed your MongoDB database with menu items and demo users.
npm run seed:menunpm run seed:usersnpm run seed:allnpm run devYour application will be available at http://localhost:3000
-
Create MongoDB Atlas Account
- Go to MongoDB Atlas
- Sign up for a free account
- Create a new project
-
Create a Cluster
- Click "Create Cluster"
- Choose "M0 Sandbox" (free tier)
- Select your preferred cloud provider and region
- Name your cluster (e.g., "bong-flavours-cluster")
-
Configure Database Access
- Go to "Database Access" in the left sidebar
- Click "Add New Database User"
- Create a user with "Read and write to any database" permissions
- Note down the username and password
-
Configure Network Access
- Go to "Network Access" in the left sidebar
- Click "Add IP Address"
- For development, add "0.0.0.0/0" (allows access from anywhere)
- For production, add only your server's IP addresses
-
Get Connection String
- Go to "Clusters" and click "Connect"
- Choose "Connect your application"
- Copy the connection string
- Replace
<username>,<password>, and<dbname>with your values
If you prefer running MongoDB locally:
# Install MongoDB
brew tap mongodb/brew
brew install mongodb-community
# Start MongoDB service
brew services start mongodb/brew/mongodb-community
# Create database directory
sudo mkdir -p /data/db
sudo chown -R `id -un` /data/db# Import MongoDB public GPG key
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
# Add MongoDB repository
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
# Install MongoDB
sudo apt-get update
sudo apt-get install -y mongodb-org
# Start MongoDB service
sudo systemctl start mongod
sudo systemctl enable mongod- Download MongoDB Community Server from MongoDB Download Center
- Run the installer with default settings
- MongoDB will be installed as a Windows service
For local MongoDB, use this connection string in your .env.local:
MONGODB_URI=mongodb://localhost:27017/bong-flavoursThe application automatically creates these collections:
- users - Customer and admin accounts
- menuitems - Restaurant menu items
- orders - Customer orders
- sessions - User sessions (if using NextAuth)
The scripts/seedMenu.js script will:
- Read menu data from
data/menu.json - Clear existing menu items
- Insert 100+ Bengali food items
- Create database indexes for performance
- Display seeding statistics
Run the script:
npm run seed:menuExpected output:
π Loaded 158 menu items from data/menu.json
π Connecting to MongoDB...
ποΈ Clearing existing menu items...
π Inserting menu items...
β
Successfully seeded 158 menu items
π Creating database indexes...
π Seeding Statistics:
Total items: 158
Vegetarian: 89
Non-vegetarian: 69
Categories: 8
Categories: Shorbot, Rice, Fish, Chicken, Mutton, Veg, Prawn, Egg
π Menu seeding completed successfully!
The scripts/seedUsers.js script will:
- Create admin and customer demo accounts
- Hash all passwords securely
- Create database indexes
- Display account credentials
Run the script:
npm run seed:usersExpected output:
π₯ Starting user seeding process...
π Preparing to create 6 demo accounts
π Connecting to MongoDB...
π Hashing passwords...
π Inserting demo users...
β
Successfully created 6 demo accounts
π Demo Accounts Summary:
==================================================
π¨βπΌ ADMIN ACCOUNT:
------------------------------
Name: Restaurant Admin
Email: admin@bongflavours.com
Phone: 9876543210
Password: admin123
Role: admin
π₯ CUSTOMER ACCOUNTS:
------------------------------
1. Raj Kumar
Email: raj.kumar@example.com
Phone: 9876543211
Password: customer123
Address: 123 Salt Lake, Kolkata 700064
2. Priya Sharma
Email: priya.sharma@example.com
Phone: 9876543212
Password: customer123
Address: 456 New Town, Kolkata 700156
[... more customer accounts ...]
π User seeding completed successfully!
To set up everything at once:
npm run seed:allThis will run both menu and user seeding scripts sequentially.
You can verify your database setup by:
-
Check collections in MongoDB Atlas:
- Log into MongoDB Atlas
- Navigate to your cluster
- Click "Browse Collections"
- Verify
usersandmenuitemscollections exist
-
Test login with demo accounts:
- Start your dev server:
npm run dev - Navigate to
http://localhost:3000/login - Use admin credentials:
admin@bongflavours.com/admin123 - Or customer credentials:
raj.kumar@example.com/customer123
- Start your dev server:
-
Check menu display:
- Navigate to
http://localhost:3000/menu - Verify menu items are displaying correctly
- Test vegetarian filter functionality
- Navigate to
Connection Issues:
# Test database connection
node scripts/test-connection.jsClear and Reseed:
# If you need to start fresh
npm run seed:allManual Database Inspection:
# Install MongoDB Compass (GUI tool)
# Connect using your MongoDB URI
# Browse collections and documentsCommon Issues:
-
Authentication Failed:
- Verify username/password in connection string
- Check MongoDB Atlas database user permissions
-
Network Timeout:
- Verify IP address is whitelisted in MongoDB Atlas
- Check firewall settings
-
Database Not Found:
- MongoDB will automatically create the database on first write
- Ensure the database name in URI matches your configuration
-
Duplicate Key Errors:
- User emails must be unique
- Clear existing users before reseeding:
db.users.deleteMany({})
After running the seeding scripts, you'll have these demo accounts:
- Email: admin@bongflavours.com
- Password: admin123
- Access: Full admin dashboard, order management, menu management
-
Email: raj.kumar@example.com
-
Password: customer123
-
Email: priya.sharma@example.com
-
Password: customer123
-
Email: amit.das@example.com
-
Password: customer123
(And more customer accounts - see seeding output for complete list)
bong-flavours/
βββ src/
β βββ app/ # Next.js App Router
β β βββ api/ # API routes
β β β βββ auth/ # Authentication endpoints
β β β βββ menu/ # Menu data endpoints
β β β βββ orders/ # Order management
β β βββ app/ # Authenticated pages
β β β βββ menu/ # Customer menu with cart
β β β βββ checkout/ # Order checkout process
β β β βββ profile/ # Customer dashboard
β β β βββ admin/ # Admin dashboard
β β βββ login/ # Authentication pages
β β βββ menu/ # Public menu (browse-only)
β β βββ globals.css # Global styles
β βββ components/ # Reusable React components
β β βββ Header.tsx # Navigation component
β β βββ Footer.tsx # Footer component
β β βββ [other components]
β βββ contexts/ # React Context providers
β β βββ AuthContext.tsx # Authentication state
β β βββ CartContext.tsx # Shopping cart state
β βββ models/ # MongoDB/Mongoose models
β β βββ User.ts # User schema
β β βββ Order.ts # Order schema
β β βββ MenuItem.ts # Menu item schema
β βββ lib/ # Utility functions
βββ data/
β βββ menu.json # Restaurant menu data
βββ scripts/ # Database seeding scripts
β βββ seedMenu.js # Menu data seeding
β βββ seedUsers.js # User account seeding
β βββ test-connection.js # Database connection test
βββ public/ # Static assets
βββ [config files] # Next.js, TypeScript, Tailwind configs
POST /api/auth/login- User loginPOST /api/auth/register- User registrationGET /api/auth/me- Get current userPOST /api/auth/logout- User logout
GET /api/menu- Get all menu itemsGET /api/menu/[id]- Get specific menu item
POST /api/orders- Create new orderGET /api/orders- Get user orders (or all orders for admin)GET /api/orders/[id]- Get specific orderPUT /api/orders/[id]- Update order status (admin only)
GET /api/admin/orders- Get all orders (admin only)GET /api/admin/users- Get all users (admin only)PUT /api/admin/orders/[id]- Update order (admin only)
- Browse Menu - Visit
/menuto browse available items - Register/Login - Create account or login at
/login - Order Items - Navigate to
/app/menuto add items to cart - Checkout - Complete order at
/app/checkout - Track Orders - View order history at
/app/profile
- Admin Login - Login with admin credentials
- Dashboard - Access admin dashboard at
/app/admin - Manage Orders - View and update order statuses
- Menu Management - Add/edit menu items
- Customer Management - View customer accounts and orders
# Development
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
# Database Management
npm run seed:menu # Seed menu items
npm run seed:users # Seed demo users
npm run seed:all # Seed everything
# Utilities
npm run extract:pdf # Extract menu from PDF
npm run build:menu # Generate static menu HTML-
Connect Repository
- Import your GitHub repository to Vercel
- Configure build settings (Next.js preset)
-
Environment Variables
- Add all environment variables from
.env.local - Use production MongoDB URI
- Set up production email service
- Add all environment variables from
-
Deploy
- Vercel will automatically deploy on push to main branch
- Run database seeding scripts after first deployment
-
Build Application
npm run build
-
Set Environment Variables
- Configure production environment variables
- Use production database and email services
-
Start Production Server
npm start
- Passwords: All passwords are hashed with bcryptjs (12 salt rounds)
- JWT Tokens: Secure HTTP-only cookies with appropriate expiration
- Environment Variables: Never commit sensitive data to version control
- Database: Use MongoDB Atlas network restrictions in production
- CORS: Configure appropriate CORS policies for production
- Rate Limiting: Implement rate limiting for API endpoints in production
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
-
MongoDB Connection Failed
- Verify MONGODB_URI in
.env.local - Check MongoDB Atlas network access
- Ensure database user has correct permissions
- Verify MONGODB_URI in
-
Menu Items Not Loading
- Run menu seeding:
npm run seed:menu - Check API endpoint:
http://localhost:3000/api/menu - Verify MongoDB collection has data
- Run menu seeding:
-
Authentication Issues
- Check JWT_SECRET in environment variables
- Clear browser cookies and local storage
- Verify user accounts exist in database
-
Cart Not Persisting
- Check browser local storage permissions
- Verify CartContext is properly configured
- Test in incognito mode to rule out cache issues
-
Email Notifications Not Working
- Verify SMTP credentials in
.env.local - Check email provider settings (Gmail app passwords)
- Test with mail testing service like Mailtrap
- Verify SMTP credentials in
- GitHub Issues: Report bugs and request features
- Documentation: Check inline code comments
- Logs: Check browser console and server logs for errors
For support and questions:
- Email: mannadebdoot007@gmail.com
- GitHub: DebdootManna
- Issues: GitHub Issues
Made with β€οΈ for Bengali food lovers by Debdoot Manna