This repository contains the application source code for a modular e-commerce platform implemented as a set of independently deployable Spring Boot microservices. The platform is designed to support a real-world enterprise delivery model where application code, infrastructure provisioning, and GitOps automation are managed across separate repositories.
The application stack includes:
- User registration and lookup
- Product catalog and inventory operations
- Order orchestration and checkout workflows
- Payment transaction processing
- PostgreSQL persistence for each domain service
- Redis-based caching for read-heavy workloads
- Docker support for containerized deployment
- CI/CD automation with GitHub Actions and deployment orchestration via Argo CD
This design is intentional for enterprise-scale delivery and operational maturity:
- Independent service ownership and domain boundaries
- Faster release cycles per business capability
- Clear failure isolation between business domains
- Scalable deployment patterns for cloud-native environments
- Strong GitOps model for environment promotion and drift control
- Separation of application logic from infrastructure and deployment definitions
While the microservice pattern provides operational flexibility, it also introduces additional complexity:
- More moving parts than a monolith
- Increased operational burden for deployment, observability, and tracing
- Cross-service consistency challenges for data and transactions
- More complex local development and testing setups
- Network latency and distributed system failures must be handled explicitly
This project is part of a multi-repository platform model:
- Application source: ja-mics-ap
- Infrastructure repository: infrastructure repo for cloud and platform resources
- GitOps / Argo CD repository: kubernetes-argocd for environment deployment and reconciliation
This separation keeps application code, infrastructure provisioning, and deployment configuration independently governable while still operating as one cohesive platform.
The platform follows a domain-driven microservices architecture with asynchronous and synchronous service interactions between business domains.
Client / API Consumer
|
v
[API Gateway / Entry Layer]
|
+--> user-service
+--> product-service
+--> order-service
+--> payment-service
Service interactions:
- user-service -> PostgreSQL (users)
- product-service -> PostgreSQL (products) + Redis cache
- order-service -> PostgreSQL (orders) + Redis cache
- payment-service -> PostgreSQL (payments)
Shared platform services:
- PostgreSQL / RDS-compatible database
- Redis cache
- Docker runtime
- CI via GitHub Actions
- Deployment via Argo CD / Kubernetes
- user-service: user registration and user lookup APIs
- product-service: product catalog, inventory, and retrieval operations
- order-service: checkout and order lifecycle management
- payment-service: payment transaction processing and settlement workflows
The project includes enterprise-grade automation for validation and quality assurance:
- GitHub Actions PR validation
- SonarQube-based code quality checks
- JaCoCo-based test coverage reporting
- Gitleaks secret scanning
- Docker image validation
- GitOps-driven deployment promotion
Before running the project locally, ensure you have the following installed:
- Java 21+
- Maven 3.9+
- Docker and Docker Compose (optional but recommended)
- PostgreSQL 16+
- Redis
- Git
git clone https://github.com/Emmy-github-webdev/ja-mics-ap.git
cd ja-mics-apmvn -pl user-service,product-service,order-service,payment-service -am clean packagecd user-service
mvn clean install
mvn spring-boot:runOr from the root project:
mvn -pl user-service -am spring-boot:runEach service uses environment variables for database and cache configuration.
Required environment variables:
- DB_HOST
- DB_PORT
- DB_NAME
- DB_USERNAME
- DB_PASSWORD
- REDIS_HOST
- REDIS_PORT
Example:
docker run -e DB_HOST=your-rds-endpoint -e DB_PORT=5432 -e DB_NAME=userdb \
-e DB_USERNAME=postgres -e DB_PASSWORD=postgres \
-e REDIS_HOST=redis-host -e REDIS_PORT=6379 \
-p 8081:8081 user-service:latest- user-service: http://localhost:8081
- product-service: http://localhost:8082
- order-service: http://localhost:8083
- payment-service: http://localhost:8084
curl http://localhost:8081/api/users
curl http://localhost:8082/api/products
curl http://localhost:8083/api/orders
curl http://localhost:8084/api/paymentsThis repository includes supporting operational documentation alongside the codebase:
- README1.md — project overview and delivery notes
- troubleshoot.md — troubleshooting and operational guidance
- postman/ — Postman collections for API validation
For broader platform context, this repository is designed to work with the infrastructure and Argo CD repositories that provision and reconcile environment resources.
Contributions are welcome for improvements in performance, resilience, security, observability, and platform hardening.
Recommended process:
- Fork the repository
- Create a feature branch
- Make your changes with clear commit history
- Run local validation and tests
- Open a pull request against the target branch
- Ensure CI passes and quality gates are satisfied
This project follows a disciplined engineering workflow intended for production-grade collaboration.
This repository should include a formal open-source or internal-use license before production publication or public distribution. For an enterprise source-code release, Apache License 2.0 is the recommended default unless your organization has a different legal policy.
If your team has an approved license already, add the corresponding LICENSE file to the repository root and update this section to match it exactly.
- Java 21
- Spring Boot 3.5.3
- Maven
- PostgreSQL
- Redis
- Flyway database migrations
- Spring Data JPA
- Spring Validation
- Spring Actuator
- Micrometer / Prometheus metrics
- Docker
- GitHub Actions
- SonarQube
- JaCoCo
- Argo CD / Kubernetes for deployment automation
ja-mics-ap/
├── .github/
│ └── workflows/
├── db/
├── order-service/
├── payment-service/
├── postman/
├── product-service/
├── README.md
├── README1.md
├── troubleshoot.md
├── user-service/
└── ...
This repository is maintained as part of a larger enterprise delivery platform, where the application source repository is connected to infrastructure provisioning and Kubernetes deployment automation repositories.
Repository:
Built for scalable delivery, deployment governance, and enterprise-grade platform operations.