A full-stack, mobile-responsive e-commerce web application built with React, Bootstrap, Express, MongoDB, and Passport.js.
https://github.com/KunalVChoudhary/EasyBuy- Features
- Tech Stack
- Authentication
- Getting Started
- Folder Structure
- API & Routes
- To-Do / Upcoming Features
- Screenshots / Preview
- License
-
User Authentication
- Google OAuth and traditional email/password (session-based)
-
Product Browsing
- Responsive product listing with search and filter
- Detailed product pages
-
Cart Management
- Add/remove items, adjust quantity
-
Wishlist
- Add/remove items (quantity control reserved for cart)
-
Reviews
- Backend routes implemented (frontend integration planned)
-
Mobile Responsive
- Framework: React 18
- UI: Bootstrap v5, SASS
- State Management: Redux Toolkit
- Router: react-router-dom v7
- Utilities: react-slider, react-toastify
- Build Tool: Vite +
@vitejs/plugin-react - Linting: ESLint +
@eslint/js,eslint-plugin-react-hooks
- Runtime: Node.js + Express
- Database: MongoDB (Mongoose)
- Authentication: Passport.js (Google & Local strategy)
- Session Store: express-session + connect-mongo
- Security / Utilities: bcrypt, cors, dotenv, cookie-parser
- Dev Tools: nodemon, concurrently
- Strategies: Google OAuth2.0 & Local (username + password)
- Session-Based: Uses cookies & express-session
- Session Store: Persists sessions in MongoDB
- Node.js v16+ and npm
- MongoDB instance (local or Atlas)
-
Clone the repo
git clone https://github.com/KunalVChoudhary/EasyBuy.git cd EasyBuy -
Install dependencies
npm install # installs root-level concurrently cd frontend && npm install cd ../backend && npm install
-
Configure environment
-
Copy
.env.exampleto.envin/backend- Set
PORT,MONGO_URL,SESSION_SECRET,GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET,GOOGLE_CALLBACK_URL,SESSION_SECRET,COOKIE_SECRETandCLIENT_URL
- Set
-
Copy
.env.exampleto.envin/frontend- Set the base
VITE_API_URLto point to your backend
- Set the base
-
-
Run in development
npm start
This uses
concurrentlyto start both client and server.
EasyBuy/
├── frontend/ # React frontend (Vite)
│ ├── public/
│ │ └── images/
│ ├── src/
│ │ ├── components/
│ │ ├── redux/
│ │ ├── App.css
│ │ ├── App.jsx
│ │ ├── index.css
│ │ └── Main.jsx
│ ├── .env.example
│ ├── eslint.config.js
│ ├── index.html
│ ├── vite.config.js
│ ├── package-lock.json
│ └── package.json
├── backend/ # Express backend
│ ├── data/
│ ├── models/
│ ├── routes/
│ ├── strategies/
│ ├── package-lock.json
│ ├── package.json
│ └── server.js
├── package-lock.json
└── package.json # uses concurrently to run both
| Method | Route | Description |
|---|---|---|
| POST | /auth/signup |
Local signup |
| POST | /auth/login |
Local login |
| GET | /auth/google |
Google OAuth redirect |
| GET | /auth/google/callback |
Google OAuth callback |
| GET | /signout |
Log Out |
| GET | /products |
List all products (with filter) |
| GET | /products/:id |
Get product details |
| GET | /cart |
Get items in cart |
| POST | /cart |
Add item to cart |
| PATCH | /cart/:itemId |
Update cart item quantity |
| DELETE | /cart/:itemId |
Remove item from cart |
| GET | /wishlist |
Get items in wishlist |
| POST | /wishlist |
Add item to wishlist |
| DELETE | /wishlist/:itemId |
Remove item from wishlist |
| GET | /reviews |
Get product reviews (backend only) |
| POST | /reviews |
Create a review (backend only) |
| PATCH | /reviews |
Update a review (backend only) |
| DELETE | /reviews |
Delete a review (backend only) |
- Frontend integration of Reviews
- Payment Gateway integration
- User order history & checkout flow
- Admin dashboard for product management
- Unit & integration tests
Distributed under the MIT License. See LICENSE for more information.
Kunal Vijay Choudhary Final-year CSE Student & Full-Stack Developer
- GitHub: @KunalVChoudhary
- Email: imkunalvchoudhary@gmail.com
- LinkedIn: kunal-vijayshree-choudhary
Thank U!

