{"id":28531459,"url":"https://github.com/sverrenystad/e-commerce-microservices","last_synced_at":"2025-07-21T08:33:32.772Z","repository":{"id":297718197,"uuid":"989319095","full_name":"SverreNystad/e-commerce-microservices","owner":"SverreNystad","description":"An E-Commerce platform using microservice architecture","archived":false,"fork":false,"pushed_at":"2025-05-31T21:39:24.000Z","size":160,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-19T12:37:47.674Z","etag":null,"topics":["docker-compose","eureka-service-discovery","hibernate","java","kafka","keycloak","load-balancer","microservices","mongodb","monorepo","openfeign","pgadmin4","postgresql","resttemplate","slf4j","springboot","zipkin"],"latest_commit_sha":null,"homepage":"","language":"Java","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/SverreNystad.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}},"created_at":"2025-05-23T21:41:21.000Z","updated_at":"2025-06-05T20:53:24.000Z","dependencies_parsed_at":"2025-06-07T02:48:46.681Z","dependency_job_id":"e6478b04-235e-4414-87ca-11b50bc26399","html_url":"https://github.com/SverreNystad/e-commerce-microservices","commit_stats":null,"previous_names":["sverrenystad/e-commerce-microservices"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SverreNystad/e-commerce-microservices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SverreNystad%2Fe-commerce-microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SverreNystad%2Fe-commerce-microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SverreNystad%2Fe-commerce-microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SverreNystad%2Fe-commerce-microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SverreNystad","download_url":"https://codeload.github.com/SverreNystad/e-commerce-microservices/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SverreNystad%2Fe-commerce-microservices/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266267291,"owners_count":23902334,"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","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":["docker-compose","eureka-service-discovery","hibernate","java","kafka","keycloak","load-balancer","microservices","mongodb","monorepo","openfeign","pgadmin4","postgresql","resttemplate","slf4j","springboot","zipkin"],"created_at":"2025-06-09T15:10:33.459Z","updated_at":"2025-07-21T08:33:32.745Z","avatar_url":"https://github.com/SverreNystad.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# E-Commerce application\nThe goal of this application was to try to create a microservice architecture for a simple e-commerce application. The application is built using a monorepo structure, which allows for easier management of multiple services and shared code.\n\n## Architecture Overview\n\nThe application is structured into several microservices, each responsible for a specific domain within the e-commerce ecosystem. The services include:\n- **Product Service**: Manages product information, including details, pricing, and availability.\n- **Order Service**: Handles customer orders, including order creation, updates, and status tracking.\n- **Customer Service**: Manages customer information, including registration and profile management.\n- **Payment Service**: Processes payments for orders, integrating with external payment gateways.\n- **Notification Service**: Sends notifications to customers via email for order confirmations.\n\n### Technologies Used\n\nThis project utilizes a variety of technologies to create a robust microservices architecture. Below is a breakdown of the key components used in this application.\n\n**Core**\n\n* **Language \u0026 Framework:** Java 21, Spring Boot\n* **Service Mesh:** Spring Cloud Netflix Eureka (discovery), Spring Cloud Gateway (API gateway)\n* **Configuration Management:** Spring Cloud Config Server, to manage application properties across services\n* **Security:** Keycloak for authentication and authorization\n* **API Documentation:** OpenAPI (Swagger) for API documentation\n* **Build Tool:** Gradle \u003c3 for dependency management and build automation\n\n\n**Datastores**\nI used Hibernate for ORM with JPA, and both PostgreSQL and MongoDB as data stores. \n* **Relational:** PostgreSQL (With and without Flyway migrations)\n* **No-SQL:** MongoDB\n\n**Messaging \u0026 Integration**\nNote here that both OpenFeign and RestTemplate are used for REST communication. This was to test different approaches to synchronous service communication.\n* **Apache Kafka**: For asynchronous communication between services\n* **OpenFeign**: For REST client communication between services\n* **RestTemplate**: For synchronous REST calls between services\n\n**Infrastructure \u0026 Deployment**\nAll services are containerized using Docker, and Docker Compose is used to orchestrate the services. The infrastructure is managed using Terraform for Infrastructure as Code (IaC) specifically for Azure. The application is a monorepo.\n\n**Monitoring \u0026 Logging**\n* **Zipkin**: For distributed tracing\n* **Slf4j**: For logging, with Logback as the logging implementation\n\n**Management Tools**\n\n* **pgAdmin**: To manage PostgreSQL databases\n* **MongoDB Express**: To manage MongoDB databases\n\n\n## Prerequisites\n- Ensure that git is installed on your machine. [Download Git](https://git-scm.com/downloads)\n- Docker is used for the backend and database setup. [Download Docker](https://www.docker.com/products/docker-desktop)\n\n\n## Usage\n\nTo run the application, you can use Docker Compose to start all the services.\n\n```bash\ndocker compose up --build -d\n```\n\n## Testing\n\nEach service has its own set of unit and integration tests. You can run the tests using Gradle:\n\n```bash\n./gradlew test\n```\n\n## Documentation\n\n- [Developer Setup](docs/manuals/developer-setup.md)\n- [Terraform (IaC)](docs/manuals/infrastructure_as_code.md)\n\n\n## Acknowledgements\n\nI would like to thank **Bouali Ali** for his excellent course on microservices with Spring Boot and Docker, which served as a foundation for this project. You can find the course [here](https://www.youtube.com/watch?v=jdeSV0GRvwI\u0026t)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsverrenystad%2Fe-commerce-microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsverrenystad%2Fe-commerce-microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsverrenystad%2Fe-commerce-microservices/lists"}