An advanced E-commerce Multi-Vendor Web Application built with Spring Boot for the backend and React + TypeScript for the frontend. The platform supports multiple vendors, secure authentication, and seamless payment integration for both Indian and international users.
- Spring Boot
- MySQL
- Spring Security (Authentication & Authorization)
- Java Mail Sender
- JWT (JSON Web Token)
- React (TypeScript)
- Redux Toolkit
- Material UI (MUI)
- Tailwind CSS
- React Chart
- Formik + Yup (Form Handling & Validation)
- React Router DOM
- Axios
- Razorpay (for Indian customers)
- Stripe (for International customers)
- Chatbot for Queries
Ask about order history, cart details, and product info. - Product Management
Browse, filter, sort, and view detailed product information. Includes pagination. - Cart Management
Add, update, or remove items from the cart. - Checkout Process
Apply discount coupons, manage shipping addresses, and complete payment via Razorpay or Stripe. - Order History
View past orders and cancel orders. - User Account Management
Manage profile details and account settings. - Review & Rating
Submit reviews for purchased products. - Wishlist
Add or remove products from the wishlist.
- Dashboard
Earning graphs for today, last 7 days, and last 12 months. - Reports
Total sales, earnings, refunds, and cancellations. - Product Management
Create and manage products. - Order Management
View and manage customer orders. - Payment & Transactions
Track payments and view transaction history. - Account Management
Manage and update seller profile.
- Dashboard
Overview of platform activity. - Seller Management
Approve or suspend sellers. - Coupon Management
Create, edit, and delete discount coupons. - Home Page Management
Update home page content dynamically. - Deal Management
Create and manage promotional deals.
ecommerce-multivendor/
├── backend/ # Spring Boot backend
│ ├── src/main/java/com/ecommerce
│ ├── src/main/resources
└── frontend/ # React + TypeScript frontend
├── src/components
├── src/pages
- Java 17+
- Node.js 18+
- MySQL
- Maven
server.port=5454
#db specific properties
#spring.datasource.url=jdbc:mysql://sql12.freemysqlhosting.net:3306/sql12732253
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.username=sql12732253
#spring.datasource.password=qVJTshEk4b
spring.datasource.url=jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:ecommerce_multi_vendor}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=${DB_USERNAME:root}
spring.datasource.password=${DB_PASSWORD:$7090Ashok}
#ORM s/w specific properties
#spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
razorpay.api.key=provide your razorpay api key
razorpay.api.secret=provide your razorpay api secret
stripe.api.key=stripe api key
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=provide your gmail
spring.mail.password=provide your gmail app password
#if needed search on youtube how to generate app password in gmail
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.devtools.livereload.enabled=true
#ai
gemini.api.key=provide your gemini api key
# Navigate to frontend folder
cd frontend
# Install dependencies
npm install
# Start the development server
npm run dev
- JWT-based authentication.
- Role-based access control for Admin, Seller, and Customer.
- Razorpay: For Indian customers.
- Stripe: For international customers.
POST /api/auth/register
→ Register new userPOST /api/auth/login
→ Login and get JWT token
GET /api/products
→ Fetch all productsPOST /api/products
→ Add new product (Seller only)
(Full API documentation can be provided in a separate file)
- AI-powered chatbot
- Push notifications for order updates
- Advanced analytics for sellers and admin
(Add screenshots of UI here)
Gaurav Sharma
Software Engineer | Full-Stack Developer
Portfolio | LinkedIn