{"id":31570312,"url":"https://github.com/erdemerbaba/general-purpose-inclusive-devops-ecosystem","last_synced_at":"2026-03-10T14:06:07.970Z","repository":{"id":311199383,"uuid":"1038003487","full_name":"erdemerbaba/general-purpose-inclusive-devops-ecosystem","owner":"erdemerbaba","description":"Inclusive devops ecosystem is general purpose environment for maintain both fullstack and devops projects.","archived":false,"fork":false,"pushed_at":"2025-09-30T04:11:04.000Z","size":60202,"stargazers_count":9,"open_issues_count":12,"forks_count":6,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-10-09T04:26:42.902Z","etag":null,"topics":["ansible","configurable","devops","docker","elasticsearch","flagger","fullstack","java","jenkins","kafka","keda","kubernetes","mongodb","prometheus","react","redis","sonarcube","swagger","system","terraform"],"latest_commit_sha":null,"homepage":"http://eratechnology.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erdemerbaba.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"buy_me_a_coffee":"erdemerbaba"}},"created_at":"2025-08-14T13:15:27.000Z","updated_at":"2025-10-08T13:59:55.000Z","dependencies_parsed_at":"2025-09-11T17:25:30.493Z","dependency_job_id":null,"html_url":"https://github.com/erdemerbaba/general-purpose-inclusive-devops-ecosystem","commit_stats":null,"previous_names":["erdemerbaba/inclusive_management_devops_system","erdemerbaba/general-purpose-inclusive-devops-ecosystem"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/erdemerbaba/general-purpose-inclusive-devops-ecosystem","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdemerbaba%2Fgeneral-purpose-inclusive-devops-ecosystem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdemerbaba%2Fgeneral-purpose-inclusive-devops-ecosystem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdemerbaba%2Fgeneral-purpose-inclusive-devops-ecosystem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdemerbaba%2Fgeneral-purpose-inclusive-devops-ecosystem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erdemerbaba","download_url":"https://codeload.github.com/erdemerbaba/general-purpose-inclusive-devops-ecosystem/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdemerbaba%2Fgeneral-purpose-inclusive-devops-ecosystem/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30336122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T12:41:07.687Z","status":"ssl_error","status_checked_at":"2026-03-10T12:41:06.728Z","response_time":106,"last_error":"SSL_read: 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":["ansible","configurable","devops","docker","elasticsearch","flagger","fullstack","java","jenkins","kafka","keda","kubernetes","mongodb","prometheus","react","redis","sonarcube","swagger","system","terraform"],"created_at":"2025-10-05T12:20:33.967Z","updated_at":"2026-03-10T14:06:07.962Z","avatar_url":"https://github.com/erdemerbaba.png","language":"JavaScript","funding_links":["https://buymeacoffee.com/erdemerbaba","https://www.buymeacoffee.com/erdemerbaba/"],"categories":[],"sub_categories":[],"readme":"# General Purpose Inclusive DevOps Ecosystem\n\nInclusive Devops Ecosystem is general purpose environment for maintain both fullstack and devops projects. This ecosystem offer configureable management web application with provides a devops environment that can be calibrated and used for other projects such as maintaining, monitoring,infastructure practices of this web application.\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"1209\" height=\"652\" alt=\"gepidethumbnailwideful\" src=\"https://github.com/user-attachments/assets/50ffcd4f-a5a3-4f70-b98b-49298cf3c995\" /\u003e\n\u003c/p\u003e\n\n# Index\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cul\u003e\n        \u003cli\u003e1. Ecosystem Summary\u003c/li\u003e\n        \u003cli\u003e2. Architecture Overview\u003c/li\u003e\n        \u003cli\u003e3. Technology Stacks\u003c/li\u003e\n        \u003cli\u003e4. Project Structure\u003c/li\u003e\n        \u003cli\u003e5. Information of Services\u003c/li\u003e\n        \u003cli\u003e6. Local Setup\u003c/li\u003e\n        \u003cli\u003e- 6.1.  With Container\u003c/li\u003e\n        \u003cli\u003e- 6.2.  With Manual\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cul\u003e\n        \u003cli\u003e 7. Get packages\u003c/li\u003e\n        \u003cli\u003e- 7.1.  With Container\u003c/li\u003e\n        \u003cli\u003e- 7.2.  With Manual\u003c/li\u003e\n        \u003cli\u003e8. Deployment Operation\u003c/li\u003e\n        \u003cli\u003e- 8.1.  With Kubernetes\u003c/li\u003e\n        \u003cli\u003e- 8.2.  With Container\u003c/li\u003e\n        \u003cli\u003e- 8.3.  With Manual\u003c/li\u003e\n        \u003cli\u003e- 8.4.  Error Handling\u003c/li\u003e\n     \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cul\u003e\n        \u003cli\u003e9. Database Parameters\u003c/li\u003e\n        \u003cli\u003e10. Contributing\u003c/li\u003e\n        \u003cli\u003e11. License\u003c/li\u003e\n        \u003cli\u003e12. Support\u003c/li\u003e\n        \u003cli\u003e13. Donate\u003c/li\u003e\n     \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n# 1 Ecosystem Summary\n\nConfigurable web application for a calibratable devops enironment. Devops Ecosystem is general purpose environment for maintain both fullstack and devops projects. This ecosystem offer configureable management web application with provides a devops environment that can be calibrated and used for other projects such as maintaining, monitoring,infastructure practices of this web application.\n\n# 2 Architecture Overview\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003e2.1 General Sections of Ecosystem\u003c/h3\u003e\n      \u003cul\u003e\n        \u003cli\u003eContinuous Development\u003c/li\u003e\n        \u003cli\u003eContinuous Integration\u003c/li\u003e\n        \u003cli\u003eContinuous Testing\u003c/li\u003e\n        \u003cli\u003eContinuous Deployment\u003c/li\u003e\n        \u003cli\u003eContinuous Delivery\u003c/li\u003e\n        \u003cli\u003eContinuous Monitoring\u003c/li\u003e\n        \u003cli\u003eContinuous Feedback\u003c/li\u003e\n        \u003cli\u003eContinuous Operations\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003e2.2 Sector Summary of Ecosystem\u003c/h3\u003e\n      \u003cul\u003e\n        \u003cli\u003eFrontend\u003c/li\u003e\n        \u003cli\u003eBackend\u003c/li\u003e\n        \u003cli\u003eDataservice\u003c/li\u003e\n        \u003cli\u003eGateway\u003c/li\u003e\n        \u003cli\u003eDocker\u003c/li\u003e\n        \u003cli\u003eKubernetes\u003c/li\u003e\n        \u003cli\u003ePipeline\u003c/li\u003e\n        \u003cli\u003eInfrastructure\u003c/li\u003e\n        \u003cli\u003eMonitoring\u003c/li\u003e\n        \u003cli\u003eLogging\u003c/li\u003e\n        \u003cli\u003eNetwork\u003c/li\u003e\n        \u003cli\u003eSecurity\u003c/li\u003e\n        \u003cli\u003eTraffic Management\u003c/li\u003e\n        \u003cli\u003eScalability\u003c/li\u003e\n        \u003cli\u003eUpgradeability\u003c/li\u003e\n        \u003cli\u003eMigration\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"807\" height=\"657\" alt=\"gepideschema\" src=\"https://github.com/user-attachments/assets/226a80d9-f334-404e-8e20-0afdeb37237a\" /\u003e\n\u003c/p\u003e\n   \n# 3 Technology Stacks\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e3.1 Backend\u003c/h3\u003e\n      \u003cul\u003e\n        \u003cli\u003eFramework: Spring Boot 2.7.0\u003c/li\u003e\n        \u003cli\u003eLanguage: Java 17\u003c/li\u003e\n        \u003cli\u003eSecurity: Spring Security + JWT\u003c/li\u003e\n        \u003cli\u003eValidation: Bean Validation (JSR-303)\u003c/li\u003e\n        \u003cli\u003eLogging: SLF4J + Logback\u003c/li\u003e\n        \u003cli\u003eMonitoring: Spring Boot Actuator + Prometheus\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e3.2 Frontend\u003c/h3\u003e\n      \u003cul\u003e\n        \u003cli\u003eFramework: React 17\u003c/li\u003e\n        \u003cli\u003eLanguage: JavaScript/JSX\u003c/li\u003e\n        \u003cli\u003eStyling: Bootstrap 4.5\u003c/li\u003e\n        \u003cli\u003eHTTP Client: Axios\u003c/li\u003e\n        \u003cli\u003eRouting: React Router DOM\u003c/li\u003e\n        \u003cli\u003eState Management: Context API\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e3.3 dataservice\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eFramework: MongoDB\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e3.4 Container Tools\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eContainerization: Docker-ready\u003c/li\u003e\n        \u003cli\u003eMonitoring: Health checks, metrics\u003c/li\u003e\n        \u003cli\u003eConfiguration: Environment-based configuration\u003c/li\u003e\n        \u003cli\u003eLogging: Structured logging with rotation\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n        \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e3.5 Kubernetes Tools\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eInfastructure: Terraform\u003c/li\u003e\n        \u003cli\u003eConfiguration: Ansible\u003c/li\u003e\n        \u003cli\u003eEnvironment: Istio\u003c/li\u003e\n        \u003cli\u003eMaintenance: Rancher\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e3.6 Automation Tools\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eContinuous Delivery: Jenkins\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n# 4 Project Structure\n\n```\ngeneral_purpose_inclusive_devops_ecosystem/\n├── user-service/                # User management microservice\n│   ├── src/main/java/\n│   │   ├── controller/          # REST controllers\n│   │   ├── service/             # Business logic layer\n│   │   ├── repository/          # Data access layer\n│   │   ├── dto/                 # Data transfer objects\n│   │   ├── document/            # MongoDB entities\n│   │   ├── config/              # Configuration classes\n│   │   └── exception/           # Custom exceptions\n│   └── src/main/resources/\n│       └── application.yml      # Externalized configuration\n├── product-service/             # Product management microservice\n│   ├── src/main/java/\n│   │   ├── controller/          # REST controllers\n│   │   ├── service/             # Business logic layer\n│   │   ├── repository/          # Data access layer\n│   │   ├── dto/                 # Data transfer objects\n│   │   ├── document/            # MongoDB entities\n│   │   ├── config/              # Configuration classes\n│   │   └── exception/           # Custom exceptions\n│   └── src/main/resources/\n│       └── application.yml      # Externalized configuration\n├── asset-service/               # asset management microservice\n│   ├── src/main/java/\n│   │   ├── controller/          # REST controllers\n│   │   ├── service/             # Business logic layer\n│   │   ├── repository/          # Data access layer\n│   │   ├── dto/                 # Data transfer objects\n│   │   ├── document/            # MongoDB entities\n│   │   ├── config/              # Configuration classes\n│   │   └── exception/           # Custom exceptions\n│   └── src/main/resources/\n│       └── application.yml      # Externalized configuration\n├── management-app/              # React frontend application\n│   ├── src/\n│   │   ├── components/          # Reusable UI components\n│   │   ├── services/            # API service layer\n│   │   ├── context/             # React context providers\n│   │   └── pages/               # Page components\n│   └── package.json             # Node.js dependencies\n├── mongo-init.js                # mongodb configurations\n├── eureka-server/               # eureka configurations\n└── gateway/                     # gateway configurations\n```\n\n\u003cp align=\"center\"\u003e\n   \u003cimg width=\"2392\" height=\"858\" alt=\"frontendlayout\" src=\"https://github.com/user-attachments/assets/1b8fdf39-abf3-4fca-a64d-b922e9a61729\" /\u003e\n\u003c/p\u003e\n\n## 4.1 Used Principle, Pattern and Techniques\n\n### 4.1.1 SOLID Principles for maintainable and extensible code\n\n    **Single Responsibility Principle (SRP)**: Controllers handle only HTTP requests/responses\n    **Open/Closed Principle (OCP)**: Service interfaces allow extension without modification\n    **Liskov Substitution Principle (LSP)**: Service implementations are interchangeable\n    **Interface Segregation Principle (ISP)**: Focused service interfaces\n    *Dependency Inversion Principle (DIP)**: Controllers depend on service interfaces\n\n### 4.1.2 12-Factor App methodology for cloud-native applications\n\n    **Codebase**: Single repository for all services\n    **Dependencies**: Maven/Node.js dependency management\n    **Config**: Externalized configuration via environment variables\n    **Backing Services**: MongoDB as backing service\n    **Build, Release, Run**: Maven build process\n    **Processes**: Stateless services\n    **Port Binding**: Configurable ports via environment\n    **Concurrency**: Horizontal scaling support\n    **Disposability**: Graceful shutdown handling\n    **Dev/Prod Parity**: Consistent environments\n    **Logs**: Structured logging with SLF4J\n    **Admin Processes**: Health check endpoints\n\n### 4.1.3 Service-Oriented Architecture (SOAP) principles for loose coupling\n\n    **Service Abstraction**: Clear service boundaries\n    **Loose Coupling**: Services communicate via well-defined interfaces\n    **Service Reusability**: Services can be reused across different contexts\n    **Service Autonomy**: Services operate independently\n\n# 5 Information of Services\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"900\" height=\"300\" alt=\"gepideports\" src=\"https://github.com/user-attachments/assets/a3a8a13b-302d-4d73-b592-036ead937084\" /\u003e\n\u003c/p\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.1 Zookeper\u003c/h3\u003e\n      \u003cul\u003e\n          \u003cli\u003eimage: bitnami/zookeeper:latest\u003c/li\u003e\n          \u003cli\u003econtainer_name: zookeeper\u003c/li\u003e\n          \u003cli\u003eports: \"2181\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.2 kafka\u003c/h3\u003e\n      \u003cul\u003e\n          \u003cli\u003eimage: bitnami/kafka:latest\u003c/li\u003e\n          \u003cli\u003econtainer_name: kafka\u003c/li\u003e\n          \u003cli\u003eports: \"9093,9092\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e 5.3 kafdrop\u003c/h3\u003e\n      \u003cul\u003e\n          \u003cli\u003eimage: obsidiandynamics/kafdrop:latest \u003c/li\u003e\n          \u003cli\u003econtainer_name: kafdrop\u003c/li\u003e\n          \u003cli\u003eports: \"9099\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e 5.4 Mongodb\u003c/h3\u003e\n      \u003cul\u003e\n          \u003cli\u003eimage: mongo:latest \u003c/li\u003e\n          \u003cli\u003econtainer_name: mongodb\u003c/li\u003e\n          \u003cli\u003eports: \"27017\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.5 redis\u003c/h3\u003e\n      \u003cul\u003e\n        \u003cli\u003eimage: redis:latest\u003c/li\u003e\n        \u003cli\u003econtainer_name: redis\u003c/li\u003e\n        \u003cli\u003eports:\"6379\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.6 eureka\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: local\u003c/li\u003e\n        \u003cli\u003econtainer_name: eureka-server\u003c/li\u003e\n        \u003cli\u003eEports: \"8761\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.7 gateway\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: local\u003c/li\u003e\n         \u003cli\u003econtainer_name: gateway\u003c/li\u003e\n         \u003cli\u003eports: \"8080\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.8 user service\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: local\u003c/li\u003e\n        \u003cli\u003econtainer_name: user-service\u003c/li\u003e\n        \u003cli\u003eports: \"8081\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.9 product service\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: local\u003c/li\u003e\n         \u003cli\u003econtainer_name: product-service\u003c/li\u003e\n         \u003cli\u003eports: \"8082\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.10 asset service\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: local\u003c/li\u003e\n         \u003cli\u003econtainer_name: asset-service\u003c/li\u003e\n         \u003cli\u003eports: \"8083\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.11 management app\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: local\u003c/li\u003e\n        \u003cli\u003econtainer_name: management-app\u003c/li\u003e\n        \u003cli\u003eports: \"3000\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.12 sonarqube\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: sonarqube:latest\u003c/li\u003e\n         \u003cli\u003econtainer_name: sonarqube\u003c/li\u003e\n         \u003cli\u003eports: \"9000\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.13 jenkins\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003emage: jenkins/jenkins:lts\u003c/li\u003e\n         \u003cli\u003econtainer_name: jenkins\u003c/li\u003e\n         \u003cli\u003eports: \"8443,8043,50000\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.14 elastic search\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: elasticsearch/elasticsearch:7.17.10\u003c/li\u003e\n        \u003cli\u003econtainer_name: elasticsearch\u003c/li\u003e\n        \u003cli\u003eports: \"9200,9300\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.15 logstash\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: logstash/logstash:7.17.10\u003c/li\u003e\n         \u003cli\u003econtainer_name: logstash\u003c/li\u003e\n         \u003cli\u003eports: \"5044,9600\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.16 filebeat\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003emage: beats/filebeat:7.17.10\u003c/li\u003e\n         \u003cli\u003econtainer_name: filebeat\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.17 kibana\u003c/h3\u003e\n      \u003cul\u003e\n        \u003cli\u003eimage: kibana/kibana:7.17.10\u003c/li\u003e\n        \u003cli\u003econtainer_name: kibana\u003c/li\u003e\n        \u003cli\u003eports: \"5601\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.18 prometheus\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: prom/prometheus:latest\u003c/li\u003e\n         \u003cli\u003econtainer_name: prometheus\u003c/li\u003e\n         \u003cli\u003eports: \"9090\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.19 grafana\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003emage: grafana/grafana:latest\u003c/li\u003e\n         \u003cli\u003econtainer_name: grafana\u003c/li\u003e\n        \u003cli\u003eports: \"3001\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.20 postgre\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: postgres:13\u003c/li\u003e\n        \u003cli\u003econtainer_name: jira_db\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3\u003e5.21 jira\u003c/h3\u003e\n      \u003cul\u003e\n         \u003cli\u003eimage: atlassian/jira-software:latest\u003c/li\u003e\n         \u003cli\u003econtainer_name: jira\u003c/li\u003e\n         \u003cli\u003eports: \"8090\"\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n# 6 Local Setup\n\nUser can run whole project with docker and kubernetes but if want to run manual please read 6.3 instructions.\n\n## 6.1 Prerequisites\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003cul\u003e\n          \u003cli\u003e16 core 2.5 ghz cpu\u003c/li\u003e\n          \u003cli\u003e16 gb ram\u003c/li\u003e\n          \u003cli\u003e50 gb disk space\u003c/li\u003e\n          \u003cli\u003eDocker\u003c/li\u003e\n          \u003cli\u003eminikube\u003c/li\u003e\n          \u003cli\u003eterraform\u003c/li\u003e\n          \u003cli\u003epython pip kubernetes\u003c/li\u003e\n          \u003cli\u003eansible\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003cul\u003e\n          \u003cli\u003e if do not use docker then:\u003c/li\u003e\n          \u003cli\u003e Java 17+\u003c/li\u003e\n          \u003cli\u003e Maven 3.6+\u003c/li\u003e\n          \u003cli\u003e Node.js 14+\u003c/li\u003e\n          \u003cli\u003e MongoDB 4.4+\u003c/li\u003e\n          \u003cli\u003e python 3.12+\u003c/li\u003e\n          \u003cli\u003e also should download related tools that inside of docker compose\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cp align=\"center\"\u003e\n   \u003cimg width=\"900\" height=\"500\" alt=\"image\" src=\"https://github.com/user-attachments/assets/77265eec-adf4-4e1f-a733-fcefacae0197\" /\u003e\n\u003c/p\u003e\n\n## 6.2 Run Services with container\n\n### 6.2.1 install docker\n\n```bash\nhttps://docs.docker.com/desktop/\n```\n\n### 6.2.2 locate to project path\n\n```bash\n cd general-purpose-inclusive-devops-ecosystem/\n```\n\n### 6.2.3 execute docker compose\n\n```bash\n docker compose up -d --build\n```\n\n### 6.2.4 take a tea and wait a while after that check statusses with different terminal\n\n```bash\n docker images\n docker ps\n```\n\n### 6.2.5 you are read to go for check services\n\n```bash\n curl http://localhost:3000\n Website: http://localhost:3000\n```\n\n### 6.2.6 if you want to down all the compose\n\n```bash\n docker compose down\n```\n\n## 6.3 Run Services with old school style (non-container)\n\n### 6.3.1 Configure Environment Variables\n\n```bash\nexport MONGODB_HOST=localhost\nexport MONGODB_PORT=27017\nexport MONGODB_DATABASE=management\nexport JWT_SECRET=your-secret-key\n```\n\n### 6.3.2 Start MongoDB\n\n```bash\n mongod --dbpath\n```\n\n### 6.3.3 Build and Run eureka server\n\n```bash\ncd eureka-server\nmvn clean install\nmvn spring-boot:run\n```\n\n### 6.3.4 Build and Run gateway\n\n```bash\ncd gateway\nmvn clean install\nmvn spring-boot:run\n```\n\n### 6.3.5 Build and Run User Service\n\n```bash\ncd user-service\nmvn clean install\nmvn spring-boot:run\n```\n\n### 6.3.6 Build and Run Product Service\n\n```bash\ncd product-service\nmvn clean install\nmvn spring-boot:run\n```\n\n### 6.3.7 Build and Run asset Service\n\n```bash\ncd asset-service\nmvn clean install\nmvn spring-boot:run\n```\n\n### 6.3.8 Install Dependencies\n\n```bash\ncd management-app\nnpm install\nnpm start\n```\n\n### 6.3.9 Enter Web app\n\n```bash\nWebsite: localhost:3000\n```\n\n# 7 Get Package\n\nUser can run whole project with docker and kubernetes but if want to run manual please read 7.2 instructions.\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"1252\" height=\"706\" alt=\"dockercontainers\" src=\"https://github.com/user-attachments/assets/a28f2b8e-9b58-4425-a68b-1975540eafe5\" /\u003e\n\u003c/p\u003e\n\n## 7.1 Get package with container\n\n### 7.1.1 login docker\n\n```bash\ndocker login\n```\n\n### 7.1.2 build compose\n\n```bash\ndocker compose build\n```\n\n### 7.1.3 push to docker hub\n\n```bash\ndocker compose push\n```\n\n#### 7.1.3.1 if you get package with offline environment\n\n```bash\ndocker compose images --quiet | xargs -n1 docker save -o \u003cname\u003e.tar\n```\n\n## 7.2 Get package with old school style (non-container)\n\n### 7.2.1 Database\n\n```bash\n mongosh\n```\n\n### 7.2.2 Backend\n\n```bash\n mvn package\n```\n\n### 7.2.3 Frontend\n\n```bash\n npm run build\n```\n\n# 8 Deployment Operation\n\nUser can run whole project with docker and kubernetes but if want to run manuel please read 8.3 instructions. Firstly, Enter related machine to deploy process.\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"1345\" height=\"801\" alt=\"gepidekubernetes\" src=\"https://github.com/user-attachments/assets/f55c7bb3-b8e5-4e09-a914-cebc612a00b1\" /\u003e\n\u003c/p\u003e\n\n## 8.1 Deploy with kubernetes\n\n### 8.1.1 Install minikube for kubernetes environment\n\nFor Linux\n\n```bash\ncurl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64\nsudo install minikube-linux-amd64 /usr/local/bin/minikube\n```\n\nFor Mac\n\n```bash\nbrew install minikube\n```\n\nFor Windows\n\n```bash\nchoco install minikube -y\n```\n\n### 8.1.2 Execute minikube for setup kubernetes and create namespace (terraform trigger to create namespace sometimes)\n\n```bash\nminikube start\nkubectl create namespace gepide\nkubectl create namespace keda\nkubectl create namespace flagger\nkubectl create namespace istio-system\n```\n\n### 8.1.3 Install Terraform\n\n```bash\nhttps://developer.hashicorp.com/terraform/install\n```\n\n### 8.1.4 get ready local containers\n\n```bash\ndocker compose up -d\n```\n\n### 8.1.5 transfer local updated images int kubernetes environment\n\n```bash\nfor image in gepide-eureka:latest gepide-gateway:latest gepide-user-service:latest gepide-product-service:latest gepide-asset-service:latest gepide-management-app:latest; do minikube image load $image; done\nor\nminikube image load gepide-eureka-server:latest\nminikube image load gepide-gateway:latest\nminikube image load gepide-user-service:latest\nminikube image load gepide-product-service:latest\nminikube image load gepide-asset-service:latest\nminikube image load gepide-management-app:latest\n```\n\n### 8.1.6 locate file and execute init\n\n```bash\ncd terraform/\nterraform init\n(if you do not want to up all the tools, you can just convert main.tf into main.tf.bak then lite version mainlite.tf activated)\n```\n\n### 8.1.7 plan teraform environment\n\n```bash\nterraform plan\n```\n\n### 8.1.8 apply teraform environment\n\n```bash\nterraform apply -auto-approve\n```\n\n### 8.1.9 now take a time to terraform handle process and you can see the status with paralel terminal\n\n```bash\nkubectl get all -A\n```\n\n### 8.1.10 Install Ansible\n\n```bash\nhttps://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html\n```\n\n### 8.1.11 Install python kubernetes lib\n\n```bash\npip install kubernetes\n```\n\n### 8.1.12 Change what required in spesific tool yml file\n\n```bash\nansible-playbook -i inventory.ini playbook.yml\n```\n\n### 8.1.13 Take a rest and look environment to see configurations done or not\n\n```bash\nkubectl describe pod -n \u003cnamespace\u003e \u003cchoosen pod\u003e\n```\n\n### 8.1.14 To down services execute below command in environment\n\n```bash\nkubectl delete namespace gepide\nor\nterraform destroy\n```\n\n### 8.1.14 To delete kubernetes environment then execute below command\n\n```bash\nminikube delete\n```\n\n## 8.2 Deploy with docker\n\n### 8.2.1 send docker compose to related machine\n\n```bash\nscp docker-compose.yml root:\u003cipadress\u003e:/home/docker-compose.yml\n```\n\n### 8.2.2 enter machine, locate file and execute compose\n\n```bash\ndocker compose up -d --build\n```\n\n#### 8.2.2.1 if environment offline, locate file then enter machine and execute below rpm command\n\n```bash\ndocker load -i all-images.tar\n```\n\n### 8.2.3 stop the services if needed\n\n```bash\ndocker compose down\n```\n\n## 8.3 Deploy with local\n\n### 8.3.1 Database\n\n    mongosh\n\n### 8.3.2 Backend\n\n    java -jar package.jar\n\n### 8.3.3 Frontend\n\n    npm install -g serve\n    serve -s build\n\n## 8.4 Error Handling\n\nexport NODE_OPTIONS=--openssl-legacy-provider\nexport SKIP_PREFLIGHT_CHECK=true\nlsof -i tcp:8080\ntaskkill /F /PID\n\n# 9 Database Parameters\n\n- Employee\n  -- ID\n  -- Name\n  -- Surname\n  -- Profession\n  -- Role\n  -- Level\n  -- Team\n  -- Mentor\n  -- Join Date\n  -- Leave Date\n  -- Location\n  -- Email\n  -- Phone Number\n  -- Birth Date\n  -- Nationality\n  -- Address\n  -- Identity Number\n  -- Educations\n  -- Experience\n  -- Skills\n  -- Certifications\n  -- Honors\n  -- Memberships\n  -- Projects\n  -- Links\n  -- Government Papers\n  -- Additional Notes\n\n- Products\n  -- ID\n  -- Name\n  -- Category\n  -- Description\n  -- Members\n  -- Customer Segment\n  -- Revenue Source\n  -- Cost Source\n  -- Customer Platforms\n  -- Developer Platforms\n  -- Tech Stacks\n  -- Deployments\n  -- Sources\n  -- Historic Dates\n  -- Performance Indicators\n  -- Legal Compliance\n  -- Financial Procedures\n  -- Additional Notes\n\n- Assets\n  -- ID\n  -- Name\n  -- Type\n  -- SerialNumber\n  -- Department\n  -- AssignedTo\n  -- TechnicalSpecs\n  -- PurchaseDate\n  -- Value\n\n# 10 Contributing\n\n1. Follow the established architecture patterns\n2. Maintain SOLID principles\n3. Add comprehensive tests\n4. Update documentation\n5. Follow the coding standards\n\n# 11 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n# 12 Support\n\nFor support and questions:\n\n- Create an issue in the repository\n- Review the documentation\n- Check the health endpoints\n\u003ch5\u003econtact me erdemerbaba@gmail.com\u003c/h5\u003e\n\n# 13 Donate\n\n**Buy me a coffee if you want to donate**\nhttps://www.buymeacoffee.com/erdemerbaba/\n\n---\n\n**Built with ❤️ by Era Technology Co aka Erdem Erbaba**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferdemerbaba%2Fgeneral-purpose-inclusive-devops-ecosystem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferdemerbaba%2Fgeneral-purpose-inclusive-devops-ecosystem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferdemerbaba%2Fgeneral-purpose-inclusive-devops-ecosystem/lists"}