ShopEase – An E-Commerce Product Management System
Frontend: https://shop-ease-umber.vercel.app/ Backend API: https://shopease-jfjg.onrender.com
ShopEase is a modern, cloud-based e-commerce platform for small and medium-sized businesses. It simplifies product management, inventory tracking, order processing, and customer engagement through an intuitive web interface.
The system ensures real-time product visibility, reduces manual errors in inventory management, and helps businesses optimize their online sales operations with advanced search, filtering, and sorting capabilities.
- User (Customer) - Shopping access for browsing and purchasing products
- Prevent stockouts & overstocking
- Centralize all product & order data
- Provide accurate real-time product information
- Improve customer shopping experience
- Reduce manual product tracking
- Provide web-accessible product catalog
- Improve order management
- Deliver actionable insights
- Manage products (create/update/delete)
- Manage categories (create/update/delete)
- Manage orders (view/update/delete)
- Manage reviews (view/delete)
- Full CRUD on all resources
- Access to dashboard analytics
- View products
- Search, filter, and sort products
- Add products to cart
- Place orders
- Write and edit reviews
- View order history
- Cannot delete products, categories, or other users' data
Features:
- JWT-based login/signup
- Google OAuth integration ("Continue with Google")
- Role-based access control (Admin/User)
- Session expiration and refresh
- Password hashing with bcrypt
User Flows:
- Login → Home/Dashboard
- Admin can manage all resources
- Logout clears session tokens
Admin Features:
- Create new product
- Update product details
- Delete product
- Assign product to category
- Set product stock levels
User Features:
- View all products
- Search products by name/description
- Filter by category and price range
- Sort by price, name, newest
- View detailed product information
Product Fields:
id, name, description, price, category, image, stock, rating, createdAt
Features:
- Real-time product search
- Category-based filtering
- Price range filtering
- Multi-criteria sorting
- Pagination for performance
Capabilities:
- Instant search results via backend API
- Case-insensitive matching
- Partial text matching
- Combined filters
Features:
- Add/remove products from cart
- Update product quantities
- Real-time cart total calculation
- Persistent cart storage
- Cart item validation
Cart Operations:
- Add to cart with quantity
- Update quantities
- Remove items
- Clear cart
- View cart summary
Admin Features:
- View all orders
- Filter orders by status
- Update order status (Pending, Processing, Shipped, Delivered)
- Delete orders
- View order details
User Features:
- Place new orders
- View order history
- Track order status
- View order details
Order Fields:
id, userId, products[], totalAmount, status, shippingAddress, createdAt
Features:
- Create product reviews with ratings (1-5 stars)
- Edit own reviews
- Delete reviews (admin/owner)
- View all reviews with pagination
- Average rating calculation
Review Fields:
id, productId, userId, rating, comment, createdAt
Admin Features:
- Create categories
- Update category details
- Delete categories
- View all categories
User Features:
- View category list
- Filter products by category
Category Fields:
id, name, description, icon
- API response time < 300ms
- Page load time < 2s
- bcrypt password hashing
- JWT token expiry
- Role-based middleware
- Validation for input fields
- Horizontally scalable (React + Node + MongoDB)
- Mongoose ODM ensures easy schema management
- Proper error handling
- Consistent database transactions
| Layer | Technologies |
|---|---|
| Frontend | React.js, CSS3, React Router, Axios |
| Backend | Node.js, Express.js |
| Database | MongoDB Atlas + Mongoose ODM |
| Auth | JWT, Google OAuth 2.0 |
| Hosting | Vercel (Frontend), Render (Backend), MongoDB Atlas (DB) |
┌─────────────────┐
│ React.js │ ← Frontend (Vite + CSS3)
│ + Vite │
└────────┬────────┘
│ HTTP/REST API
↓
┌─────────────────┐
│ Express.js │ ← Backend API (JWT + Google OAuth)
│ + Node.js │
└────────┬────────┘
│ Mongoose ODM
↓
┌─────────────────┐
│ MongoDB Atlas │ ← Database
└─────────────────┘
- React 19 - UI library
- Vite - Build tool
- React Router v7 - Navigation
- Axios - HTTP client
- CSS3 - Styling
- Google Identity Services - OAuth
- Node.js - Runtime
- Express.js - Web framework
- Mongoose - MongoDB ODM
- JWT - Authentication
- bcryptjs - Password hashing
- Google Auth Library - OAuth verification
POST /api/auth/signupPOST /api/auth/loginPOST /api/auth/google
GET /api/products→ All usersPOST /api/products→ AdminGET /api/products/:id→ All usersPUT /api/products/:id→ AdminDELETE /api/products/:id→ Admin
GET /api/categoriesPOST /api/categories→ AdminPUT /api/categories/:id→ AdminDELETE /api/categories/:id→ Admin
GET /api/orders→ User & AdminPOST /api/orders→ UserGET /api/orders/:id→ User & AdminPUT /api/orders/:id→ AdminDELETE /api/orders/:id→ Admin
GET /api/reviewsPOST /api/reviews→ UserPUT /api/reviews/:id→ User (owner)DELETE /api/reviews/:id→ User (owner) & Admin
GET /api/cart→ UserPOST /api/cart→ UserPUT /api/cart/:id→ UserDELETE /api/cart/:id→ User
model User {
id ObjectId @id @default(auto)
name String
email String @unique
password String
googleId String?
role String @default("user") // "admin" | "user"
createdAt DateTime @default(now())
}
model Product {
id ObjectId @id @default(auto)
name String
description String
price Number
category String
image String
stock Number
rating Number
createdAt DateTime @default(now())
}
model Order {
id ObjectId @id @default(auto)
userId ObjectId @ref(User)
products Array // [{ productId, quantity, price }]
totalAmount Number
status String // "Pending" | "Processing" | "Shipped" | "Delivered"
shippingAddress String
createdAt DateTime @default(now())
}
model Review {
id ObjectId @id @default(auto)
productId ObjectId @ref(Product)
userId ObjectId @ref(User)
rating Number // 1-5
comment String
createdAt DateTime @default(now())
}
model Category {
id ObjectId @id @default(auto)
name String
description String
icon String
}- Login Page
- Signup Page
- Home Page
- Products Page
- Product Details Page
- Cart Page
- Orders Page
- Reviews Page
- Admin Products Page (Admin only)
- Profile Page
- Clean, modern e-commerce design
- CSS3 custom styling
- Mobile & tablet responsive
- Intuitive navigation
| Week | Milestone | Tasks |
|---|---|---|
| Week 1 | Backend Setup | Auth, Products API, Orders API, Mongoose setup |
| Week 2 | Frontend Setup | Login, Product pages, Cart functionality |
| Week 3 | Core Features | Orders, Reviews, Admin panel, Google OAuth |
| Week 4 | Testing & Deployment | Bug fixes, optimization, deployment |
- Payment gateway integration (Stripe/PayPal)
- Email notifications for orders
- Product recommendations
- Wishlist functionality
- Advanced analytics dashboard
- Multi-language support
- Export reports (CSV, PDF)
- Node.js v16 or higher
- MongoDB Atlas account
- npm or yarn
- Git
git clone <your-repo-url>
cd "Capstone Sem 3"cd shopease-backend
# Install dependencies
npm install
# Create .env file
cp .env.example .env
# Update MONGODB_URI and JWT_SECRET in .env
# Seed database
npm run seed
# Start backend server
npm startBackend runs on http://localhost:3001
cd shopease-frontend
# Install dependencies
npm install
# Create .env file
cp .env.example .env
# Update VITE_API_URL in .env
# Start frontend server
npm run devFrontend runs on http://localhost:5173
Open browser and navigate to http://localhost:5173
Demo Credentials:
- Admin:
admin@shopease.com/password123 - User:
user@shopease.com/password123
Capstone Sem 3/
├── shopease-backend/
│ ├── controllers/
│ │ ├── authController.js
│ │ ├── productController.js
│ │ ├── orderController.js
│ │ ├── reviewController.js
│ │ ├── categoryController.js
│ │ └── cartController.js
│ ├── models/
│ │ ├── User.js
│ │ ├── Product.js
│ │ ├── Order.js
│ │ ├── Review.js
│ │ ├── Category.js
│ │ └── Cart.js
│ ├── routes/
│ │ ├── authRoutes.js
│ │ ├── productRoutes.js
│ │ ├── orderRoutes.js
│ │ ├── reviewRoutes.js
│ │ ├── categoryRoutes.js
│ │ └── cartRoutes.js
│ ├── scripts/
│ │ └── seedData.js
│ ├── .env
│ ├── package.json
│ └── server.js
│
└── shopease-frontend/
├── src/
│ ├── components/
│ │ ├── HomePage.jsx
│ │ ├── Products.jsx
│ │ ├── ProductDetails.jsx
│ │ ├── AdminProducts.jsx
│ │ ├── Orders.jsx
│ │ ├── Reviews.jsx
│ │ ├── Cart.jsx
│ │ ├── Login.jsx
│ │ ├── Signup.jsx
│ │ ├── GoogleAuth.jsx
│ │ └── Navbar.jsx
│ ├── css/
│ ├── App.jsx
│ └── main.jsx
├── .env
└── package.json
Render:
- Push code to GitHub
- Create Web Service on Render
- Configure build:
npm install - Set start command:
npm start - Add environment variables
- Deploy
Vercel:
- Import GitHub repository
- Framework: Vite
- Build command:
npm run build - Output:
dist - Add
VITE_API_URLenvironment variable - Deploy
MongoDB Atlas:
- Create account at mongodb.com/cloud/atlas
- Create new cluster
- Copy connection string
- Use in
MONGODB_URI
- Test authentication (login/signup)
- Test Google OAuth integration
- Test product CRUD operations
- Test search, filter, sort functionality
- Test cart operations
- Test order placement
- Test review system
- Test role-based permissions
Use Postman/Thunder Client:
- Import API collection
- Set base URL
- Test endpoints
- Verify responses
Database Connection Failed:
# Check MongoDB is running
# Verify MONGODB_URI in .env
# Test connectionPort Already in Use:
# Change PORT in .envCannot Connect to API:
- Check backend is running
- Verify
VITE_API_URLin .env - Check browser console for errors
CORS Error:
- Update CORS config in backend
- Add frontend URL to allowed origins
This PRD provides a professional-grade, startup-quality blueprint for ShopEase - a comprehensive e-commerce platform. The system is designed with clean architecture, clear role separation, and scalable technology choices suitable for real-world deployment.
Key Differentiators:
- ✅ Professional PRD structure
- ✅ Clear role-based permissions (Admin/User)
- ✅ Scalable tech stack
- ✅ Production-ready deployment strategy
- ✅ Comprehensive API design
- ✅ Future enhancement roadmap
This is a semester project. For contributions:
- Fork the repository
- Create feature branch
- Commit changes
- Push to branch
- Open pull request
For issues or questions:
- Check documentation in
DEPLOYMENT.md - Review troubleshooting sections
- Check error logs
- Create GitHub issue
MIT License - Feel free to use for learning purposes
Semester 3 Capstone Project
- Project: ShopEase
- Course: Full-Stack Development
- Duration: 4 weeks
- React team for amazing library
- MongoDB team for excellent database
- Express.js community
- All open-source contributors
⭐ If you find this project useful, please give it a star!
Made with ❤️ for Semester 3 Capstone Project