{"id":24987492,"url":"https://github.com/ivan-montes/hex-cqrs-es-proof","last_synced_at":"2026-04-10T13:31:52.357Z","repository":{"id":240871338,"uuid":"803148681","full_name":"Ivan-Montes/hex-cqrs-es-proof","owner":"Ivan-Montes","description":"REST API with Hexagonal Architecture, CQRS, Event Sourcing and Kafka","archived":false,"fork":false,"pushed_at":"2024-08-29T05:42:12.000Z","size":154,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-20T11:44:32.281Z","etag":null,"topics":["cqrs","docker","docker-compose","event-sourcing","hexagonal-architecture","java","kafka","kafka-ui","maven","sonarqube","spring","swagger"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ivan-Montes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2024-05-20T06:55:46.000Z","updated_at":"2024-08-30T11:12:42.000Z","dependencies_parsed_at":"2024-05-29T07:30:22.853Z","dependency_job_id":"429801d6-c377-4eb0-ae55-f1d195ed7726","html_url":"https://github.com/Ivan-Montes/hex-cqrs-es-proof","commit_stats":null,"previous_names":["ivan-montes/hex-cqrs-es-proof"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Ivan-Montes/hex-cqrs-es-proof","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Montes%2Fhex-cqrs-es-proof","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Montes%2Fhex-cqrs-es-proof/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Montes%2Fhex-cqrs-es-proof/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Montes%2Fhex-cqrs-es-proof/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ivan-Montes","download_url":"https://codeload.github.com/Ivan-Montes/hex-cqrs-es-proof/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Montes%2Fhex-cqrs-es-proof/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31645274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"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":["cqrs","docker","docker-compose","event-sourcing","hexagonal-architecture","java","kafka","kafka-ui","maven","sonarqube","spring","swagger"],"created_at":"2025-02-04T11:47:48.075Z","updated_at":"2026-04-10T13:31:52.334Z","avatar_url":"https://github.com/Ivan-Montes.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hex-cqrs-es-proof\n\nREST API with Hexagonal Architecture, CQRS, Event Sourcing and Kafka\n\n\n**Components**\n- REST API with [OpenApi Swagger](https://swagger.io/) [8081]\n- [Kafka](https://kafka.apache.org/) [9092] + [9093] \n- [Kafka-UI](https://docs.kafka-ui.provectus.io/) [8080]\n\n\n## Table of contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [It's not a bug, it's a feature](#features)\n- [Maintainers](#maintainers)\n- [License](#license)\n\n\n## Installation\n\n1. First of all clone or download the project.\n\n1. Inside the main folder, you could find two docker-compose yaml files.\n\n1. From there use the command line to start the project in dev or production mode\n\n```\n    **Developer mode**  \n    docker-compose -f docker-compose-dev.yml up -d\n\n    **Production mode**\n    docker-compose -f docker-compose-prod.yml up -d\n```\n      \nThe dev environment is ready for using with your IDE. The microservice attempts to communicate with Kafka using the local host. In production, it uses the archive Dockerfile to build an image of the project, so you wont need the IDE.\n   \n4. You could stop the project with any of these orders\n\n```\n    **Developer mode**\n    docker-compose -f docker-compose-dev.yml down --rmi local -v\n      \n    **Production mode**\n    docker-compose -f docker-compose-prod.yml down --rmi local -v  \n```\n   \n## Usage\n\nFirst of all, please visit the REST API documentation. Replace ${port} for the suitable microservice port:\n\n    http://localhost:${port}/swagger-ui/index.html\n    \n[Kafka-UI](https://docs.kafka-ui.provectus.io/) allow you to check your [Kafka](https://kafka.apache.org/) server using a practical dashboard, so visit this url:\n\n    http://localhost:8080\n    \n\n## Features\n\n#### :white_check_mark: Include two docker-compose yaml files for easy change of environment\n\n#### :white_check_mark: Hexagonal Architecture following Clean Architecture principle\n\n#### :white_check_mark: CQRS pattern with independent databases for Read or RW actions\n\n#### :white_check_mark: Event Sourcing for persisting as an ordered sequence of events\n\n\n## Maintainers\n\nJust me, [Iván](https://github.com/Ivan-Montes) :sweat_smile:\n\n\n## License\n\n[GPLv3 license](https://choosealicense.com/licenses/gpl-3.0/)\n\n\n---\n\n\n[![Java](https://badgen.net/static/JavaSE/17/orange)](https://www.java.com/es/)\n[![Maven](https://badgen.net/badge/icon/maven?icon=maven\u0026label\u0026color=red)](https://https://maven.apache.org/)\n[![Spring](https://img.shields.io/badge/spring-blue?logo=Spring\u0026logoColor=white)](https://spring.io)\n[![GitHub](https://badgen.net/badge/icon/github?icon=github\u0026label)](https://github.com)\n[![Eclipse](https://badgen.net/badge/icon/eclipse?icon=eclipse\u0026label)](https://https://eclipse.org/)\n[![SonarQube](https://badgen.net/badge/icon/sonarqube?icon=sonarqube\u0026label\u0026color=purple)](https://www.sonarsource.com/products/sonarqube/downloads/)\n[![Docker](https://badgen.net/badge/icon/docker?icon=docker\u0026label)](https://www.docker.com/)\n[![Kafka](https://badgen.net/static/Apache/Kafka/cyan)](https://kafka.apache.org/)\n[![GPLv3 license](https://badgen.net/static/License/GPLv3/blue)](https://choosealicense.com/licenses/gpl-3.0/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivan-montes%2Fhex-cqrs-es-proof","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivan-montes%2Fhex-cqrs-es-proof","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivan-montes%2Fhex-cqrs-es-proof/lists"}