{"id":31747658,"url":"https://github.com/anmol283/e-commerceministore","last_synced_at":"2025-10-09T13:44:13.148Z","repository":{"id":312991720,"uuid":"1049579346","full_name":"Anmol283/E-commerceMiniStore","owner":"Anmol283","description":"🛒 E-Commerce Mini Store | Spring Boot \u0026 Java backend ⚡ JWT Auth 🔐 | MySQL 💾 | REST APIs for Products, Cart \u0026 Orders 📦","archived":false,"fork":false,"pushed_at":"2025-10-03T13:36:03.000Z","size":249,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-03T15:34:22.701Z","etag":null,"topics":["ecommerce-website","java21","jwt-token","springboot","springsecurity-jwt"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Anmol283.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-03T07:29:30.000Z","updated_at":"2025-10-03T13:36:07.000Z","dependencies_parsed_at":"2025-09-03T09:24:24.788Z","dependency_job_id":"8a36be24-a3c8-4b88-82c4-96a68d467ccd","html_url":"https://github.com/Anmol283/E-commerceMiniStore","commit_stats":null,"previous_names":["anmol283/e-commerceministore"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Anmol283/E-commerceMiniStore","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anmol283%2FE-commerceMiniStore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anmol283%2FE-commerceMiniStore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anmol283%2FE-commerceMiniStore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anmol283%2FE-commerceMiniStore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Anmol283","download_url":"https://codeload.github.com/Anmol283/E-commerceMiniStore/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anmol283%2FE-commerceMiniStore/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001461,"owners_count":26083102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ecommerce-website","java21","jwt-token","springboot","springsecurity-jwt"],"created_at":"2025-10-09T13:44:07.710Z","updated_at":"2025-10-09T13:44:13.142Z","avatar_url":"https://github.com/Anmol283.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e🛒🛍️ E-commerce Mini Store\u003c/h1\u003e\n\u003c/br\u003e\n\u003cdiv align=\"center\"\u003e \u003cimg src=\"https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExbm11OHEzeHZueHZscjBjc3Fia3o0YWcxdGV2Nzl5ZWU4YWUzY2JuNSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/Hu475i12tHBg94FIeD/giphy.gif\" alt=\"Shopping GIF\" width=\"300\" height=\"300\"\u003e\u003c/div\u003e\n\u003c/br\u003e\n\u003cdiv align=\"center\"\u003e \u003ci\u003e Secure shopping, smooth coding.\u003c/i\u003e \u003c/div\u003e\n\n---\n\n## ✨ Overview\n\nE-Commerce Mini Store is a full-stack web application leveraging Spring Boot, Java, JWT, and MySQL, designed with a scalable microservices architecture. It provides a complete platform for product management, cart handling, order checkout, and user authentication with roles (CUSTOMER and MANAGER).\n\n---\n\n\n## 🌟 Features\n\n- **👤 User Authentication**\n  - Register and login functionality\n  - Role-based access (CUSTOMER and MANAGER) \n  - JWT-based stateless authentication\n\n- **🛍️ Product Mangement**\n  - Managers can add, update, and delete products\n  - Customers and Managers can view all available products\n\n- **🛒 Cart System**\n  - Add, update, and remove items from cart  \n  - Customers can checkout orders \n\n---\n\n## 🛠️ Tech Stack\n| Category          | Technologies                                                                                                                                                                                                                                                                                                                                                      |\n| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **Backend**       | \u003cimg src=\"https://img.shields.io/badge/Spring%20Boot-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white\" alt=\"Spring Boot\" /\u003e \u003cimg src=\"https://img.shields.io/badge/Java-007396?style=for-the-badge\u0026logo=java\u0026logoColor=white\" alt=\"Java\" /\u003e                                                                                                                 |\n| **Database**      | \u003cimg src=\"https://img.shields.io/badge/MySQL-4479A1?style=for-the-badge\u0026logo=mysql\u0026logoColor=white\" alt=\"MySQL\" /\u003e                                                                                                                                                                                                                                                |\n| **Security**      | \u003cimg src=\"https://img.shields.io/badge/JWT-000000?style=for-the-badge\u0026logo=jwt\u0026logoColor=white\" alt=\"JWT\" /\u003e \u003cimg src=\"https://img.shields.io/badge/Spring%20Security-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white\" alt=\"Spring Security\" /\u003e                                                                                                            |\n| **Frontend**      | \u003cimg src=\"https://img.shields.io/badge/Thymeleaf-005F0F?style=for-the-badge\u0026logo=thymeleaf\u0026logoColor=white\" alt=\"Thymeleaf\" /\u003e \u003cimg src=\"https://img.shields.io/badge/HTML5-E34F26?style=for-the-badge\u0026logo=html5\u0026logoColor=white\" alt=\"HTML5\" /\u003e \u003cimg src=\"https://img.shields.io/badge/CSS3-1572B6?style=for-the-badge\u0026logo=css3\u0026logoColor=white\" alt=\"CSS3\" /\u003e |\n| **Microservices** | \u003cimg src=\"https://img.shields.io/badge/Spring%20Cloud%20Gateway-00BCD4?style=for-the-badge\u0026logo=spring\u0026logoColor=white\" alt=\"Gateway\" /\u003e \u003cimg src=\"https://img.shields.io/badge/Resilience4j-F57C00?style=for-the-badge\u0026logo=java\u0026logoColor=white\" alt=\"Circuit Breaker\" /\u003e                                                                                       |\n---\n\n## 📁 Directory Structure\n\n```\n.idea/\n    ├── .gitignore\n    ├── compiler.xml\n    ├── encodings.xml\n    ├── jarRepositories.xml\n    ├── misc.xml\n    └── vcs.xml\napi-gateway/\n    ├── .mvn/\n        └── wrapper/\n            └── maven-wrapper.properties\n    ├── src/\n        ├── main/\n            ├── java/\n                └── com/\n                    └── example/\n                        └── api_gateway/\n                            ├── config/\n                                ├── CircuitBreakerConfig.java\n                                └── GatewayConfig.java\n                            ├── fallback/\n                                └── FallbackController.java\n                            └── ApiGatewayApplication.java\n            └── resources/\n                └── application.properties\n        └── test/\n            └── java/\n                └── com/\n                    └── example/\n                        └── api_gateway/\n                            └── ApiGatewayApplicationTests.java\n    ├── .gitattributes\n    ├── .gitignore\n    ├── mvnw\n    ├── mvnw.cmd\n    └── pom.xml\nE-commerceMiniStore/\n    ├── .mvn/\n        └── wrapper/\n            └── maven-wrapper.properties\n    ├── src/\n        ├── main/\n            ├── java/\n                └── com/\n                    └── example/\n                        └── E_commerceMiniStore/\n                            ├── config/\n                                └── PasswordConfig.java\n                            ├── controller/\n                                ├── AuthController.java\n                                ├── CartItemController.java\n                                ├── OrderController.java\n                                ├── ProductController.java\n                                └── ViewController.java\n                            ├── entity/\n                                ├── CartItem.java\n                                ├── Order.java\n                                ├── Product.java\n                                ├── Role.java\n                                └── User.java\n                            ├── repository/\n                                ├── CartItemRepository.java\n                                ├── OrderRepository.java\n                                ├── ProductRepository.java\n                                └── UserRepository.java\n                            ├── security/\n                                ├── JwtAuthenticationFilter.java\n                                ├── JwtService.java\n                                └── SecurityConfig.java\n                            ├── service/\n                                ├── CartItemService.java\n                                ├── OrderService.java\n                                ├── ProductService.java\n                                └── UserService.java\n                            └── ECommerceMiniStoreApplication.java\n            └── resources/\n                ├── META-INF/\n                    └── additional-spring-configuration-metadata.json\n                ├── static/\n                    ├── Login.html\n                    ├── navbar.js\n                    ├── QR.jpeg\n                    └── Register.html\n                ├── templates/\n                    ├── cart.html\n                    ├── dashboard.html\n                    ├── inventory.html\n                    ├── login.html\n                    ├── payment.html\n                    ├── products.html\n                    └── register.html\n                └── application.properties\n        └── test/\n            └── java/\n                └── com/\n                    └── example/\n                        └── E_commerceMiniStore/\n                            └── ECommerceMiniStoreApplicationTests.java\n    ├── .gitattributes\n    ├── .gitignore\n    ├── mvnw\n    ├── mvnw.cmd\n    └── pom.xml\nservice-discovery/\n    ├── .mvn/\n        └── wrapper/\n            └── maven-wrapper.properties\n    ├── src/\n        ├── main/\n            ├── java/\n                └── ServiceDiscoveryApplication.java\n            └── resources/\n                └── application.properties\n        └── test/\n            └── java/\n                └── com/\n                    └── example/\n                        └── service_discovery/\n                            └── ServiceDiscoveryApplicationTests.java\n    ├── .gitattributes\n    ├── .gitignore\n    ├── mvnw\n    ├── mvnw.cmd\n    └── pom.xml\nLICENSE\nREADME.md\n```\n---\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Java 21\n- Maven\n- MySQL\n- Postman (for API testing)\n\n### Installation\n\n1. **Clone the Repository**:\n   ```bash\n   git clone https://github.com/Anmol283/E-commerceMiniStore\n   cd E-Commerce-MiniStore\n   ```\n\n2. **Configure Database**:\n   Update `application.properties` with your `MySQL` credentials:\n   ```bash\n   spring.datasource.url=jdbc:mysql://localhost:3306/ecommerce_db\n   spring.datasource.username=root\n   spring.datasource.password=your_password\n   spring.jpa.hibernate.ddl-auto=update\n   jwt.secret=YourSecretKey\n   jwt.expirationMs=3600000\n   ```\n\n4. **Build and run the application**:\n   ```\n   mvn clean install\n   mvn spring-boot:run\n   ```\n---\n## 🧭 API USAGE FOR TESTING IN POSTMAN\n\n### Auth\n- POST `/api/auth/register` – Register new user\n- POST `/api/auth/login` – Login and get JWT\n\n### Products\n- GET `/api/products` – Get all products (any role)\n- POST `/api/products` – Add product (MANAGER only)\n- PUT `/api/products/{id}` – Update product (MANAGER only)\n- DELETE `/api/products/{id}` – Delete product (MANAGER only)\n\n### Cart\n- GET `/api/cart?userId={id}` – Get cart items (CUSTOMER only)\n- POST `/api/cart/add` – Add item to cart (CUSTOMER only)\n- PUT `/api/cart/{id}` – Update cart item (CUSTOMER only)\n- DELETE `/api/cart/{id}` – Remove cart item (CUSTOMER only)\n\n### Orders\n- GET `/api/orders/my?userId={id}` – Get user orders (CUSTOMER only)\n- POST `/api/orders/checkout?userId={id}` – Checkout cart (CUSTOMER only)\n---\n\n## 🔒 Security Features\n\n- JWT-based stateless authentication\n- Role-based access `(CUSTOMER and MANAGER)`\n- Password hashing with BCrypt\n- Protected API routes using Spring Security\n\n---\n## 🌐 API Gateway\n\n- **Routing:** All requests go through the API Gateway before reaching microservices\n- **Load Balancing:** Can distribute traffic between service instances\n- **Fallbacks:** Resilience4j circuit breakers ensure safe fallback responses if a service is down\n  \n---\n\n## ⚡ Resilience \u0026 Fault Tolerance\n\n- **Resilience4j Circuit Breaker:** Protects services from cascading failures\n- **Fallback Mechanisms:** If a microservice fails, the gateway provides default/fallback responses\n- **Timeouts \u0026 Retry Policies:** Ensures API responsiveness even during service downtime\n\n---\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a new branch (`git checkout -b feature-branch`)\n3. Make your changes and commit (`git commit -m \"Add feature\"`)\n4. Push to the branch (`git push origin feature-branch`)\n5. Create a Pull Request\n\n---\n\n## 📜 License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n---\n\n⭐ **Star this repository if you find it useful!** ⭐\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanmol283%2Fe-commerceministore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanmol283%2Fe-commerceministore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanmol283%2Fe-commerceministore/lists"}