ChefKit is a modern full-stack Next.js application that brings restaurant-quality meal kits to your doorstep. Built with Next.js 16 App Router, featuring authentication, protected routes, and a polished responsive UI.
A meal kit marketplace where users can browse curated meal kits, view detailed recipes, and manage their own meal kit offerings. The application features social authentication (Google OAuth), protected pages for content management, and a beautiful artify-inspired design pattern.
- Navbar - Logo, 5 routes, login/register buttons, sticky positioning, fully responsive
- After login: Shows dropdown with user info, Add Meal Kit, Manage Meal Kits
- Hero Section - Auto-rotating slider with 3 slides (6s transitions), headline, subtitle, CTA button
- Featured Meal Kits - Grid of 6 meal kit cards with hover effects
- Why Choose ChefKit - Benefits section with icons
- How It Works - 4-step process cards
- Meet Our Chefs - Chef profiles with avatars
- Footer - Links, social icons, copyright, consistent spacing
- Meal Kits List (/meal-kits) - Search bar, cuisine filter, sorting, grid of 6+ cards
- Meal Kit Details (/meal-kits/[id]) - Large image, full description, ingredients, chef info, back button
- Login/Register - Google OAuth + credentials authentication
- Add Meal Kit (/add-meal-kit) - Form with title, descriptions, price, prep time, servings, difficulty, cuisine, dietary tags, chef name, image URL, ingredients
- Manage Meal Kits (/manage-meal-kits) - Table/grid view with View and Delete actions
- Next.js 16 (App Router with JavaScript/JSX)
- React 19 - Hooks (useState, useEffect, useSession)
- Tailwind CSS 4 - Modern CSS with @import syntax
- DaisyUI - Component library for consistent UI
- NextAuth.js v4 - Authentication (Google OAuth + Credentials)
- React Hot Toast - Toast notifications
- Lucide React - Icon library
- Next/Image - Optimized image loading
- Express.js 4 - REST API server
- MongoDB Atlas - Cloud database
- MongoDB Driver 6 - Database operations
- CORS - Cross-origin resource sharing
- Node.js 18+ installed
- MongoDB Atlas account (or local MongoDB)
- Google OAuth credentials
- Clone the repository:
git clone https://github.com/Nafiz001/chefkit-client-side.git
cd chefkit-client-side- Install dependencies:
npm install- Create
.env.localfile in the root directory:
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-secret-key-here
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
NEXT_PUBLIC_API_URL=http://localhost:5000- Run development server:
npm run dev- Open http://localhost:3000 in your browser
- Clone the server repository:
git clone https://github.com/Nafiz001/chefkit-server-side.git
cd chefkit-server-side- Install dependencies:
npm install- Create
.envfile in the root directory:
PORT=5000
DB_USER=your-mongodb-username
DB_PASS=your-mongodb-password- Seed the database (optional):
node seed.js- Run development server:
npm run devServer will run on http://localhost:5000
| Route | Description |
|---|---|
/ |
Landing page with hero, features, meal kits, testimonials |
/meal-kits |
Browse all meal kits with search/filter/sort |
/meal-kits/[id] |
Detailed view of specific meal kit |
/about |
About ChefKit page |
/login |
Login page (Google OAuth + credentials) |
/register |
Registration page |
| Route | Description |
|---|---|
/add-meal-kit |
Form to add new meal kit (redirects to /login if not authenticated) |
/manage-meal-kits |
Manage user's meal kits with delete functionality |
| Endpoint | Method | Description |
|---|---|---|
/api/auth/[...nextauth] |
Various | NextAuth authentication endpoints |
- β Consistent spacing using Tailwind utilities (py-16, py-20, gap-8)
- β Clean layouts with proper section containers
- β Fully responsive (mobile, tablet, desktop breakpoints)
- β Clear hierarchy (text-4xl, text-2xl, text-lg)
- β Readable fonts (system font stack)
- β Consistent color palette (orange-600, red-600, neutral tones)
- β Uniform cards with hover/focus states (hover:shadow-xl, transition-all)
- β Responsive grids (grid-cols-1 md:grid-cols-2 lg:grid-cols-3)
- β Clean forms with validation and loading states
- β Hover/focus effects on all interactive elements
- β Visual consistency across all pages
- β Smooth transitions and animations
- Push code to GitHub
- Import repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy!
Live Demo: https://chefkit-client-side.vercel.app
- Push server code to GitHub
- Import repository to Vercel
- Add environment variables (DB_USER, DB_PASS)
- Configure Network Access in MongoDB Atlas (allow 0.0.0.0/0)
- Deploy!
Server URL: https://chefkit-server-side.vercel.app
POST /users- Create new user or check if existsGET /users- Get all usersGET /users/:email- Get user by email
GET /meal-kits- Get all meal kits (supports ?cuisine=, ?search=, ?sort=)GET /meal-kits/:id- Get specific meal kitPOST /meal-kits- Create new meal kit (requires authentication)PUT /meal-kits/:id- Update meal kitDELETE /meal-kits/:id- Delete meal kitGET /my-meal-kits/:email- Get user's meal kits
- Google OAuth 2.0 - One-click login with Google account
- Credentials Provider - Email/password authentication
- Session Management - JWT-based sessions with NextAuth
- Protected Routes - Middleware redirects unauthenticated users to /login
chefkit-client-side/
βββ src/
β βββ app/
β β βββ about/page.jsx
β β βββ add-meal-kit/page.jsx
β β βββ api/auth/[...nextauth]/route.js
β β βββ login/page.jsx
β β βββ manage-meal-kits/page.jsx
β β βββ meal-kits/
β β β βββ page.jsx
β β β βββ [id]/page.jsx
β β βββ register/page.jsx
β β βββ globals.css
β β βββ layout.js
β β βββ page.jsx
β β βββ providers.jsx
β βββ components/
β β βββ Footer.jsx
β β βββ MealKitCard.jsx
β β βββ Navbar.jsx
β βββ lib/
β β βββ api.js
β β βββ auth.js
β βββ proxy.js
βββ .env.local
βββ next.config.mjs
βββ package.json
βββ tailwind.config.js
- All meal kit cards have uniform styling with hover effects
- Form validation with inline error messages
- Toast notifications for user feedback
- Responsive navbar with dropdown menu after login
- Image optimization using Next.js Image component
- SEO-friendly with proper meta tags
Nafiz
- GitHub: @Nafiz001
This project is open source and available under the MIT License.
Built with β€οΈ for ChefKit - Making Restaurant-Quality Cooking Accessible to Everyone