A premium e-commerce platform for luxury dishes and fine dining essentials, built with Next.js 14, TypeScript, and Tailwind CSS.
- 🏠 Beautiful Homepage - Elegant hero section with featured categories
- 🛍️ Product Catalog - Browse products by categories with search and filtering
- 🛒 Shopping Cart - Add products to cart and manage quantities
- 👤 User Authentication - Secure login and registration system
- 💳 Checkout Process - Streamlined payment and order completion
- 📱 Responsive Design - Mobile-first design that works on all devices
- 📊 Dashboard - Overview of sales, products, and customer statistics
- 🛠️ Product Management - Full CRUD operations for products
- 🏷️ Category Management - Organize products into categories
- 📸 Image Upload - Upload and manage product images
- 💰 Sale Management - Set sale prices and end dates for products
- 📦 Order Management - View and manage customer orders
- 📈 Analytics - Sales and performance insights
- Framework: Next.js 14 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- Database: Prisma with SQLite (easily switchable to PostgreSQL/MySQL)
- Authentication: NextAuth.js
- Icons: Lucide React
- Forms: React Hook Form with Zod validation
- Notifications: React Hot Toast
- Image Upload: Cloudinary integration
- Node.js 18+
- npm or yarn
-
Clone the repository
git clone <repository-url> cd luxury-dishes-ecommerce
-
Install dependencies
npm install
-
Set up environment variables Create a
.env.localfile in the root directory:DATABASE_URL="file:./dev.db" NEXTAUTH_SECRET="your-secret-key-here" NEXTAUTH_URL="http://localhost:3000" CLOUDINARY_CLOUD_NAME="your-cloud-name" CLOUDINARY_API_KEY="your-api-key" CLOUDINARY_API_SECRET="your-api-secret"
-
Set up the database
npx prisma generate npx prisma db push
-
Run the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
luxury-dishes-ecommerce/
├── app/ # Next.js App Router
│ ├── admin/ # Admin pages
│ │ ├── page.tsx # Admin dashboard
│ │ └── products/ # Product management
│ ├── api/ # API routes
│ │ └── products/ # Product API endpoints
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ └── page.tsx # Homepage
├── components/ # Reusable components
│ ├── Header.tsx # Navigation header
│ └── Footer.tsx # Site footer
├── lib/ # Utility libraries
│ └── prisma.ts # Prisma client
├── prisma/ # Database schema
│ └── schema.prisma # Prisma schema
└── public/ # Static assets
The application uses the following main entities:
- User: Customer accounts and authentication
- Product: Product information, pricing, and inventory
- Category: Product categorization
- Order: Customer orders and order items
- OrderItem: Individual items within orders
GET /api/products- Get all products with filteringPOST /api/products- Create a new productGET /api/products/[id]- Get a specific productPUT /api/products/[id]- Update a productDELETE /api/products/[id]- Delete a product
To access the admin panel:
- Navigate to
/admin - Use the default admin credentials (you'll need to create an admin user first)
- Push your code to GitHub
- Connect your repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy
The application can be deployed to any platform that supports Next.js:
- Netlify
- Railway
- DigitalOcean App Platform
- AWS Amplify
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some 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.
For support, email support@luxurydishes.com or create an issue in the repository.