A modern, full-stack e-commerce website built with Next.js 14, featuring role-based access control, real-time cart management, and comprehensive business functionality.
- Product Catalog with search, filtering, and sorting
- Shopping Cart with persistent state management
- Checkout Process with Cash on Delivery (COD)
- Order Management with status tracking
- User Reviews and ratings system
- Multi-role Authentication (Consumer, Business, Admin)
- NextAuth.js with Google OAuth and credentials
- Role-based Access Control (RBAC)
- User Profiles with editable information
- Business Registration with multi-step form
- Document Upload for verification
- Admin Approval Workflow for business accounts
- Bulk Product Access for approved businesses
- Special Business Pricing
- Business Application Management
- Order Monitoring and status updates
- User Management capabilities
- Product Management (CRUD operations)
- Analytics and reporting
- Responsive Design with Tailwind CSS
- Framer Motion animations
- Nature-inspired color scheme
- Modern UI Components with shadcn/ui
- Toast Notifications for user feedback
- Next.js 14 with App Router
- TypeScript for type safety
- Tailwind CSS for styling
- Framer Motion for animations
- shadcn/ui component library
- Zustand for state management
- Next.js API Routes for server-side logic
- Prisma ORM with PostgreSQL
- NextAuth.js for authentication
- Cloudinary for image storage
- bcryptjs for password hashing
- PostgreSQL (Neon/Supabase)
- Prisma as ORM
- Database seeding for initial data
- Node.js 18+
- PostgreSQL database (Neon recommended)
- Cloudinary account
- Google OAuth credentials
Create a .env.local file with:
```env
DATABASE_URL="your-postgresql-connection-string"
NEXTAUTH_URL="http://localhost:3000" NEXTAUTH_SECRET="your-nextauth-secret"
GOOGLE_CLIENT_ID="your-google-client-id" GOOGLE_CLIENT_SECRET="your-google-client-secret"
CLOUDINARY_CLOUD_NAME="your-cloudinary-cloud-name" CLOUDINARY_API_KEY="your-cloudinary-api-key" CLOUDINARY_API_SECRET="your-cloudinary-api-secret" ```
-
Install Dependencies ```bash npm install ```
-
Setup Database ```bash
npx prisma generate
npx prisma db push
curl -X POST http://localhost:3000/api/seed ```
-
Run Development Server ```bash npm run dev ```
-
Access the Application
- Frontend:
http://localhost:3000 - Admin Login:
admin@tmc.com/admin123
``` βββ app/ # Next.js App Router pages β βββ api/ # API routes β βββ auth/ # Authentication pages β βββ admin/ # Admin dashboard β βββ business/ # Business features β βββ products/ # Product catalog β βββ cart/ # Shopping cart β βββ checkout/ # Checkout process β βββ orders/ # Order management βββ components/ # Reusable UI components β βββ ui/ # shadcn/ui components β βββ navigation/ # Navigation components β βββ providers/ # Context providers βββ lib/ # Utility libraries β βββ auth.ts # NextAuth configuration β βββ prisma.ts # Prisma client β βββ store.ts # Zustand stores βββ prisma/ # Database schema βββ middleware.ts # Route protection ```
- Consumer: Regular customers with access to consumer products
- Business: Bulk buyers with access to business products (requires approval)
- Admin: Full system access with management capabilities
/cart/*- Requires authentication/checkout/*- Requires authentication/orders/*- Requires authentication/business/dashboard/*- Requires approved business account/admin/*- Requires admin role
- Consumer Products: 4-piece, 8-piece, 1kg, 2kg packs
- Business Products: 5kg, 10kg, 15kg, 20kg bulk packs
- Cash on Delivery (COD) - Primary payment method
- Free Shipping on all orders
- Pending β Confirmed β Processing β Shipped β Delivered
- Registration: Business users register with company details
- Document Upload: Upload business verification documents
- Admin Review: Admin reviews and approves/rejects applications
- Access Granted: Approved businesses get access to bulk products and pricing
- Connect your GitHub repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy automatically on push to main branch
- Use Neon or Supabase for PostgreSQL hosting
- Run migrations:
npx prisma db push - Seed data:
curl -X POST https://your-domain.com/api/seed
```bash npm run dev # Start development server npm run build # Build for production npm run start # Start production server npm run lint # Run ESLint npm run db:push # Push database schema npm run db:studio # Open Prisma Studio npm run db:generate # Generate Prisma client ```
```bash
npx prisma studio
npx prisma db push --force-reset
npx prisma migrate dev ```
POST /api/auth/register- User registrationPOST /api/auth/[...nextauth]- NextAuth endpoints
GET /api/products- Get products with filteringPOST /api/products- Create product (admin only)
GET /api/cart- Get user's cartPOST /api/cart- Add item to cartPUT /api/cart/[id]- Update cart itemDELETE /api/cart/[id]- Remove cart item
GET /api/orders- Get user's ordersPOST /api/orders- Create new order
GET /api/business/applications- Get business applications (admin)POST /api/business/applications/[id]/approve- Approve businessPOST /api/business/applications/[id]/reject- Reject business
POST /api/upload- Upload files to Cloudinary
- Modify
tailwind.config.tsfor theme customization - Update color scheme in
app/globals.css - Customize components in
components/ui/
- Extend Prisma schema in
prisma/schema.prisma - Add new API routes in
app/api/ - Implement custom hooks in
lib/
- Database Connection: Verify DATABASE_URL format
- Authentication: Check NEXTAUTH_SECRET and OAuth credentials
- File Upload: Verify Cloudinary configuration
- Build Errors: Run
npx prisma generatebefore building
- Use
npx prisma studioto inspect database - Check browser console for client-side errors
- Monitor API responses in Network tab
- Use TypeScript for better error catching
This project is licensed under the MIT License.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
For support and questions:
- Create an issue on GitHub
- Check the documentation
- Review the troubleshooting section
TMC - Premium Marinated Chicken - Delivering quality and freshness with modern technology.