A modern, full-featured e-commerce platform built with the MERN stack (MongoDB, Express, React, Node.js) and Redux for state management.
CheapShop is a complete e-commerce solution that provides a seamless shopping experience for customers and comprehensive management tools for administrators. The platform features a modern, responsive design with secure payment processing, real-time inventory management, and robust user authentication.
- 🛒 Shopping Cart - Full-featured cart with persistent storage
- 🔍 Product Search - Advanced search with pagination and filtering
- ⭐ Reviews & Ratings - Customer reviews and product ratings
- 👤 User Accounts - Registration, login, and profile management
- 📦 Order Tracking - Complete order history and status tracking
- 💳 Secure Payments - PayPal and credit card integration
- 🚚 Shipping Management - Address management and delivery tracking
- 📊 Dashboard - Overview of orders, products, and users
- 🎨 Product Management - Create, update, and delete products
- 👥 User Management - Manage user accounts and permissions
- 📋 Order Management - Process orders and mark as delivered
- 🖼️ Image Upload - Cloudinary integration for product images
- 📈 Analytics - Order details and sales tracking
Frontend: React 18, Redux, React Router, React Bootstrap, Axios, PayPal SDK Backend: Node.js, Express.js, MongoDB, Mongoose, JWT, Bcrypt, Cloudinary Deployment: Vercel (Serverless Functions)
- Node.js (v14.6+)
- MongoDB Atlas account or local MongoDB
- Cloudinary account (for image uploads)
- PayPal developer account (for payments)
-
Clone the repository
git clone https://github.com/amit0117/CheapShop.git cd cheapshop -
Install dependencies
npm install cd frontend && npm install && cd ..
-
Set up environment variables
Create
backend/.envfile with the following:NODE_ENV=development PORT=5001 MONGO_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret_key PAYPAL_CLIENT_ID=your_paypal_client_id CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret FRONTEND_URL=http://localhost:3000
-
Seed the database (optional)
npm run data:import
-
Run the application
npm run dev
- Frontend: http://localhost:3000
- Backend: http://localhost:5001
npm run dev- Run both frontend and backend concurrentlynpm run server- Run backend only (with nodemon)npm run client- Run frontend onlynpm start- Run backend in production modenpm run data:import- Seed database with sample datanpm run data:destroy- Clear all database data
- Browse products on the homepage
- Search for specific items
- View product details and reviews
- Add items to cart
- Proceed to checkout
- Complete payment via PayPal or credit card
- Track your orders in the profile section
- Login with admin credentials
- Access admin dashboard
- Manage products (add, edit, delete)
- View and manage user accounts
- Process orders and mark as delivered
- Upload product images via Cloudinary
The application is configured for deployment on Vercel. See detailed deployment instructions in the Backend README.
Quick Steps:
- Push code to GitHub
- Import project in Vercel
- Configure build settings (already in
vercel.json) - Add environment variables
- Deploy!
For detailed documentation, please refer to:
- Frontend README - React app structure, components, state management, and frontend-specific setup
- Backend README - API endpoints, authentication, database models, and backend configuration
Admin User:
- Email:
admin@example.com - Password: (check seeder data)
Regular User:
- Email:
amit@gmail.com - Password:
amit
- JWT-based authentication
- Password hashing with bcrypt
- Protected API routes
- Role-based access control (Admin/User)
- CORS configuration
- Secure environment variables
cheapshop/
├── api/ # Vercel serverless function
├── backend/ # Express API server
├── frontend/ # React application
└── vercel.json # Deployment configuration
For detailed structure, see Frontend README and Backend README.
Contributions are welcome! Please feel free to submit a Pull Request.
ISC License
Kumar Amit (Amit)
- GitHub: @amit0117
- MongoDB Atlas for database hosting
- Cloudinary for image storage
- PayPal for payment processing
- Vercel for deployment platform
Note: This project uses ES Modules. Make sure you have Node.js v14.6+ or use the --experimental-modules flag.