A full-stack e-commerce web application with a Spring Boot backend and React frontend.
- Backend: Java, Spring Boot, Spring Security, JPA/Hibernate, MySQL
- Frontend: React, Tailwind CSS, Axios
- User authentication (user/admin separation)
- Product catalog with categories and images
- Shopping cart and checkout flow
- Stripe payment integration (full payment processing)
- Order management (user and admin views)
- Admin dashboard (manage products, orders, users)
- Profile management (edit and persist user info)
app/
challengeApp/ # Spring Boot backend
frontend/ # React frontend
- Navigate to
challengeAppdirectory:cd challengeApp - Configure your MySQL database in
src/main/resources/application.properties. - Build and run the backend:
mvn spring-boot:run
- Navigate to
frontenddirectory:cd ../frontend - Install dependencies:
npm install
- Start the development server:
npm run dev
If you add new fields (e.g., phone, address), update your MySQL schema accordingly. Example:
ALTER TABLE users ADD COLUMN phone VARCHAR(255);
ALTER TABLE users ADD COLUMN address VARCHAR(255);
ALTER TABLE users ADD COLUMN city VARCHAR(255);
ALTER TABLE users ADD COLUMN postalCode VARCHAR(255);- Access the frontend at
http://localhost:5173 - Backend runs at
http://localhost:8080 - Default admin/user roles supported
This application uses Stripe for secure payment processing.
- Get your Stripe API keys from Stripe Dashboard
- Configure backend: Update
challengeApp/src/main/resources/application.propertieswith your Stripe secret key - Configure frontend: Update
frontend/src/pages/PaymentPage.jsxwith your Stripe publishable key - See
STRIPE_SETUP.mdfor detailed setup instructions
- Orders over Rs 3000: Stripe card payment required
- Orders Rs 3000 or less: Cash on Delivery option available
- Secure payment processing with Stripe Elements
- Product images are stored in
challengeApp/uploads/products/ - Update CORS settings in backend if deploying to production
- Important: Configure Stripe API keys before testing payments (see
STRIPE_SETUP.md)
Developed as a coding challenge project.