{"id":27390171,"url":"https://github.com/alexisrodriguezcs/ecommerce-infra","last_synced_at":"2026-05-03T05:45:40.094Z","repository":{"id":287606966,"uuid":"964901017","full_name":"AlexisRodriguezCS/ecommerce-infra","owner":"AlexisRodriguezCS","description":"Infrastructure setup with Docker, CI/CD, ELK logging, Postman, and documentation.","archived":false,"fork":false,"pushed_at":"2025-04-12T18:55:12.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T19:38:59.212Z","etag":null,"topics":["ci-cd","devops","docker","documentation","elk-stack","microservices","postman"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlexisRodriguezCS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-04-12T01:56:34.000Z","updated_at":"2025-04-12T18:55:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"66330cbb-cec8-43c4-9e1f-65e7498a292c","html_url":"https://github.com/AlexisRodriguezCS/ecommerce-infra","commit_stats":null,"previous_names":["alexisrodriguezcs/ecommerce-infra"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisRodriguezCS%2Fecommerce-infra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisRodriguezCS%2Fecommerce-infra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisRodriguezCS%2Fecommerce-infra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisRodriguezCS%2Fecommerce-infra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexisRodriguezCS","download_url":"https://codeload.github.com/AlexisRodriguezCS/ecommerce-infra/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248769769,"owners_count":21158863,"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":["ci-cd","devops","docker","documentation","elk-stack","microservices","postman"],"created_at":"2025-04-13T19:39:13.096Z","updated_at":"2026-05-03T05:45:40.088Z","avatar_url":"https://github.com/AlexisRodriguezCS.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏗️ Infrastructure – E-commerce Backend\n\nThis repository contains the foundational infrastructure and shared tooling for a production-grade **microservices-based e-commerce backend** built with Java Spring Boot. It follows best practices in architecture, DevOps, and observability to enable scalability and maintainability.\n\n\u003e ⚠️ **Note:** This project is under active development and evolving to meet real-world engineering standards.\n\n---\n\n## 📦 What's Included\n\n### 🔧 Development \u0026 Deployment Tooling\n\n- **Docker Compose**: Local development environment for all services\n- **PostgreSQL / Redis /RabbitMQ**: Core infrastructure services\n- **Spring Cloud Config Server**: Centralized and externalized configuration\n- **Service Discovery (Eureka)**: Dynamic service registry\n- **API Gateway**: Powered by Spring Cloud Gateway with JWT validation and rate limiting\n- **Secret Management**: `.env` templating and Vault integration\n\n### 🚀 CI/CD Tooling\n\n- Pre-built **GitHub Actions** workflows for:\n  - Build and test pipelines\n  - Docker image publishing\n  - Integration testing with Testcontainers\n  - Code linting and formatting\n\n### 📊 Observability Stack\n\n- **ELK Stack**: Centralized logging using Elasticsearch, Logstash, and Kibana\n- **Custom log configurations** in each microservice for consistency and traceability\n\n---\n\n## 📂 Project Structure\n\n| Repository                                                                                              | Description                              |\n|---------------------------------------------------------------------------------------------------------|------------------------------------------|\n| [`ecommerce-auth-service`](https://github.com/AlexisRodriguezCS/ecommerce-auth-service)                 | JWT-based authentication and RBAC        |\n| [`ecommerce-user-service`](https://github.com/AlexisRodriguezCS/ecommerce-user-service)                 | User profile management and account details        |\n| [`ecommerce-product-service`](https://github.com/AlexisRodriguezCS/ecommerce-product-service)           | Product catalog management               |\n| [`ecommerce-inventory-service`](https://github.com/AlexisRodriguezCS/ecommerce-inventory-service)       | Inventory tracking and stock updates     |\n| [`ecommerce-order-service`](https://github.com/AlexisRodriguezCS/ecommerce-order-service)               | Order creation and processing            |\n| [`ecommerce-payment-service`](https://github.com/AlexisRodriguezCS/ecommerce-payment-service)           | Payment orchestration and workflows      |\n| [`ecommerce-notification-service`](https://github.com/AlexisRodriguezCS/ecommerce-notification-service) | Email and SMS notifications              |\n| [`ecommerce-api-gateway`](https://github.com/AlexisRodriguezCS/ecommerce-api-gateway)                   | Gateway layer with auth and throttling   |\n| [`ecommerce-discovery-server`](https://github.com/AlexisRodriguezCS/ecommerce-discovery-server)         | Eureka Discovery Server                  |\n| [`ecommerce-config-server`](https://github.com/AlexisRodriguezCS/ecommerce-config-server)               | Spring Cloud Config Server               |\n| [`ecommerce-config-repo`](https://github.com/AlexisRodriguezCS/ecommerce-config-repo)                   | Centralized config files and secrets     |\n| **This Repo**                                                                                           | Infrastructure: Docker, ELK, CI/CD, docs |\n\n---\n\n## 📫 Postman Collections\n\nPostman request collections and test suites are available in `/postman`. You can import these into Postman to test microservices during development.\n\n---\n\n## 🧪 Testing Strategy\n\nEach microservice is built with a layered testing strategy:\n\n- ✅ **Unit tests** for business logic\n- ✅ **Integration tests** using **Testcontainers** for real dependencies (DB, MQ, etc.)\n- 🔄 **End-to-end smoke tests** using Postman \u0026 Newman (WIP)\n\n---\n\n## 🗂️ Documentation\n\nAll system documentation is maintained under `/docs`, including:\n\n- 🧱 System Architecture (UML Diagrams)\n- 🧪 Local Dev Setup Guide\n- 🚀 CI/CD Pipeline Reference\n- 🔐 Secret \u0026 Config Strategy\n\n---\n\n## 🛣️ Roadmap\n\n- [ ] Docker Compose for full dev environment\n- [ ] CI/CD GitHub Actions templates\n- [ ] ELK logging infrastructure\n- [ ] Rate limiting via Redis token buckets\n- [ ] Vault-based secret management\n\n---\n\n## 🔐 Secrets Management\n\nThis project uses a secure, real-world approach to secrets management for both local development and production environments.\n\n### 💻 Local Development\n\nSecrets are managed using:\n\n- **`.env` files** — used by infrastructure like PostgreSQL and Redis\n- **HashiCorp Vault** (dev mode via Docker) — used by application services (e.g., `auth-service`, `user-service`)\n- **Docker Compose** — coordinates everything and runs the Vault bootstrap process\n- **GitHub Actions** uses **Encrypted Secrets** to securely pass credentials during CI/CD workflows.\n\u003e ✅ **Note:** Infrastructure (e.g., databases) read credentials from `.env`, while services read their secrets from Vault. Also, `.env` and `vault/secrets/*.json` are excluded from version control via `.gitignore` to prevent accidental leakage.\n\n### ⚙️ Vault Secret Initialization\n\nThe Vault container runs a custom `vault-init.sh` script to initialize secrets for each service.\n\nExample `vault/secrets/auth-service/dev.json.example`\n```json\n{\n  \"AUTH_DB\" : \"your_db_here\",\n  \"AUTH_DB_USERNAME\": \"your_username_here\",\n  \"AUTH_DB_PASSWORD\": \"your_password_here\"\n}\n```\n\n### 📘 **How to use it:**\n\n1. Copy and fill in your values into:\n```bash\nvault/secrets/auth-service/dev.json.example\n```\n\n2. Ensure your `.env` file includes the corresponding values for the Vault:\n```env\nVAULT_DEV_ROOT_TOKEN_ID=root\nVAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200\nVAULT_ADDR=http://127.0.0.1:8200\n```\n\n3. Run using makefile:\n```bash\nmake up\n```\n\n\n### ☁️ Production (Planned)\n\n---\n\n## 🙌 Contributions\n\nThis is a personal project designed with production-quality engineering practices. Contributions are welcome if aligned with the overall vision and architecture.\n\n---\n\n## 📬 Contact\n\nMaintained by [Alexis Rodriguez](https://github.com/AlexisRodriguezCS)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexisrodriguezcs%2Fecommerce-infra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexisrodriguezcs%2Fecommerce-infra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexisrodriguezcs%2Fecommerce-infra/lists"}