{"id":48769444,"url":"https://github.com/ar-ecommerce-platform/config-server","last_synced_at":"2026-04-13T09:32:56.127Z","repository":{"id":313729892,"uuid":"1039885868","full_name":"ar-ecommerce-platform/config-server","owner":"ar-ecommerce-platform","description":"Centralized configuration service","archived":false,"fork":false,"pushed_at":"2025-10-16T00:26:29.000Z","size":106,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-17T02:15:16.451Z","etag":null,"topics":["centralized-configuration","config-server","git-backed-config","microservices","spring-boot","spring-cloud-config"],"latest_commit_sha":null,"homepage":"","language":"Java","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/ar-ecommerce-platform.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-18T06:13:21.000Z","updated_at":"2025-09-28T03:01:23.000Z","dependencies_parsed_at":"2025-09-22T07:15:10.901Z","dependency_job_id":"10fd6035-8cca-4575-9411-3b223435ffb9","html_url":"https://github.com/ar-ecommerce-platform/config-server","commit_stats":null,"previous_names":["ar-ecommerce-platform/config-server"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ar-ecommerce-platform/config-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ar-ecommerce-platform%2Fconfig-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ar-ecommerce-platform%2Fconfig-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ar-ecommerce-platform%2Fconfig-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ar-ecommerce-platform%2Fconfig-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ar-ecommerce-platform","download_url":"https://codeload.github.com/ar-ecommerce-platform/config-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ar-ecommerce-platform%2Fconfig-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31746294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["centralized-configuration","config-server","git-backed-config","microservices","spring-boot","spring-cloud-config"],"created_at":"2026-04-13T09:32:55.456Z","updated_at":"2026-04-13T09:32:56.119Z","avatar_url":"https://github.com/ar-ecommerce-platform.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🛠️ Config Server – E-commerce Backend\n\n[![CI Status](https://github.com/ar-ecommerce-platform/config-server/actions/workflows/ci-config-server.yml/badge.svg)](https://github.com/ar-ecommerce-platform/config-server/actions/workflows/ci-config-server.yml)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ar-ecommerce-platform_config-server\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=ar-ecommerce-platform_config-server)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=ar-ecommerce-platform_config-server\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=ar-ecommerce-platform_config-server)\n[![Snyk](https://snyk.io/test/github/ar-ecommerce-platform/config-server/badge.svg)](https://snyk.io/test/github/ar-ecommerce-platform/config-server)\n\n\nCentralized configuration service for all microservices in the E-commerce backend. Fetches and distributes configuration properties from a remote Git repository.\n\n---\n\n## 🔧 Tech Stack\n\n- **Java**\n- **Spring Boot**\n- **Spring Cloud Config Server**\n- **Git (Remote Config Repo)**\n- **Docker**\n\n---\n\n## 🚀 Features\n\n- 📦 Centralized and externalized configuration for all microservices\n- 📂 Supports multiple environments (`dev`, `prod`, etc.)\n- 🔄 Dynamic reload (Spring Cloud Bus support on client-side)\n- 🔐 Separation of sensitive values from application code\n- 🌐 Git-backed storage for version-controlled configuration\n\n---\n\n## 🧱 Architecture Overview\n\nThe Config Server reads configuration files from a centralized Git repository and exposes them to all microservices at runtime. This allows consistent configuration management across environments.\n\n📁 Config Repository: https://github.com/ar-ecommerce-platform/config-repo\n\n🔗 Config access URL pattern:  \n`http://localhost:8888/{application}/{profile}`\n\nAll services are configured to use this server via:\n```yaml\nspring:\n  config:\n    import: configserver:http://localhost:8888\n```\n\n---\n\n## 🧾 Example: Microservice application.yml\nTo connect your service to the Config Server, add the following to your application.yml:\n\n```yaml\nspring:\n  application:\n    name: inventory-service-dev   # This must match the config file name in the config repo\nconfig:\n  import: configserver:http://localhost:8888    # Tells Spring to fetch config from the Config Server\n```\n📝 Make sure your Config Server is running and points to the correct Git repo!\n\n---\n\n## 📁 Directory Structure\n\n```\nconfig-server/\n├── src/\n│   ├── main/\n│   │   ├── java/com/ecommerce/ecommerce_config_server/\n│   │   │   └── EcommerceConfigServerApplication.java      # Main Spring Boot app\n│   │   └── resources/\n│   │       ├── application.yml                            # Optional default Spring Boot properties\n│   │       └── bootstrap.yml                              # Config Server bootstrap properties\n│   ├── smoke/\n│   │   └── java/com/ecommerce/ecommerce_config_server/\n│   │       └── ConfigServerSmokeTest.java                # Smoke test for Config Server\n│   └── test/\n│       ├── java/com/ecommerce/ecommerce_config_server/\n│       │   └── EcommerceConfigServerApplicationTests.java  # Unit \u0026 context load tests\n│       └── resources/\n│           ├── application-test.yml                       # Test profile config (Spring Boot 3 format)\n│           └── config-repo/\n│               └── application.yml                        # Local test repo content served by Config Server\n├── build.gradle\n├── Dockerfile\n├── .github/\n│   └── workflows/\n│       └── ci-config-server.yml                           # CI workflow for Config Server\n```\n\n---\n\n## ⚙️ Configuration\n\nThe server pulls all config files from a remote Git repository using the following setup:\n\n```yaml\nspring:\n  cloud:\n    config:\n      server:\n        git:\n          uri: https://github.com/ar-ecommerce-platform/config-repo\n```\n\n---\n\n\n## 🧪 Testing Strategy\n\nThe `config-server` is validated with **smoke tests** to ensure reliable startup and connectivity.\n\n### ✅ What We're Testing\n- **Service Boot \u0026 Health** – Verifies the config server starts up and reports healthy status.\n- **Git Integration** – Confirms that configs are pulled correctly from the remote Git repository.\n- **Profile-Specific Resolution** – Checks that services receive the correct environment configs (e.g., `dev`, `prod`).\n- **Fallback Behavior** – Ensures graceful responses for unknown profiles or services using global defaults.\n\n### 🧠 Why This Matters\nIn production, configuration servers are a critical part of system startup. If they fail, services may boot with incorrect or missing properties. These tests simulate realistic interactions and edge cases to guarantee stability under normal and degraded conditions.\n\n### ⚙️ How It's Done\n- Uses **Testcontainers** to spin up a real Docker container of the config server.\n- Sends real HTTP requests (via RestAssured) to endpoints like `/auth-service/dev`.\n- Validates:\n  - That correct YAML files are resolved and merged.\n  - That the `/actuator/health` endpoint reports `UP` (smoke test).\n  - That default and global fallbacks are applied as expected.\n---\n\n## 🔗 Main Project Page\n\nFor the main E-commerce backend platform repository and all related projects, visit:\n\nhttps://github.com/ar-ecommerce-platform","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Far-ecommerce-platform%2Fconfig-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Far-ecommerce-platform%2Fconfig-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Far-ecommerce-platform%2Fconfig-server/lists"}