{"id":46614202,"url":"https://github.com/eventmesh-lab/events-service","last_synced_at":"2026-03-07T19:31:27.408Z","repository":{"id":323810618,"uuid":"1094655220","full_name":"eventmesh-lab/events-service","owner":"eventmesh-lab","description":"events-service es un microservicio desarrollado en .NET que implementa la arquitectura hexagonal (Ports \u0026 Adapters) para gestionar eventos.s. Incluye una suite completa de pruebas automatizadas (unitarias e integración) y documentación detallada sobre arquitectura, guía de desarrollo, estrategia TDD y lenguaje ubicuo del dominio.","archived":false,"fork":false,"pushed_at":"2026-01-15T17:24:24.000Z","size":195,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-15T19:42:51.356Z","etag":null,"topics":["csharp","hexagonal-architecture","microservice","xunit-tests"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":false,"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/eventmesh-lab.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-11-12T02:05:40.000Z","updated_at":"2026-01-11T08:10:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/eventmesh-lab/events-service","commit_stats":null,"previous_names":["eventmesh-lab/events-service","eventmesh-lab/events-service-legacy"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/eventmesh-lab/events-service","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventmesh-lab%2Fevents-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventmesh-lab%2Fevents-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventmesh-lab%2Fevents-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventmesh-lab%2Fevents-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eventmesh-lab","download_url":"https://codeload.github.com/eventmesh-lab/events-service/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventmesh-lab%2Fevents-service/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30227788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T19:01:10.287Z","status":"ssl_error","status_checked_at":"2026-03-07T18:59:58.103Z","response_time":53,"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":["csharp","hexagonal-architecture","microservice","xunit-tests"],"created_at":"2026-03-07T19:31:26.698Z","updated_at":"2026-03-07T19:31:27.388Z","avatar_url":"https://github.com/eventmesh-lab.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# events-service\n\nEste repositorio contiene un microservicio .NET organizado con la intención de seguir la arquitectura hexagonal (Ports \u0026 Adapters). El README original era una plantilla; este archivo describe lo que realmente hay en este repo y, en particular, documenta el contenido de la carpeta `docs/`.\n\nEstructura principal (resumen):\n\n- `events-service.sln` — solución .NET que agrupa los proyectos.\n- `Dockerfile`, `docker-compose.yml` — artefactos para contenedores/local orchestration.\n- `src/` — código fuente:\n  - `events-service.Domain/` — entidades, value objects y lógica de dominio.\n  - `events-service.Application/` — casos de uso, servicios de aplicación y comandos.\n  - `events-service.Infrastructure/` — repositorios, adaptadores y dependencias externas.\n  - `events-service.Api/` — API HTTP (entrada) y Program/Startup.\n- `tests/` — pruebas automatizadas:\n  - `events-service.Domain.Tests/` — pruebas unitarias de dominio.\n  - `events-service.Application.Tests/` — pruebas de los casos de uso/servicios.\n  - `events-service.Infrastructure.IntegrationTests/` — pruebas de integración (repositorios, adapters).\n- `docs/` — documentación del proyecto (ver sección dedicada abajo).\n\nDocs (carpeta `docs/`) — contenido clave\n\nLa carpeta `docs/` contiene la documentación más importante del repositorio. Archivos relevantes:\n\n- `ARCHITECTURE.md` — descripción de la arquitectura (capas, dependencias entre proyectos, decisiones arquitectónicas y diagramas o referencias cuando aplican).\n- `DEVELOPMENT_GUIDE.md` — guía para desarrolladores: cómo configurar el entorno local, convención de ramas, formato de commits, flujo de trabajo y cómo añadir nuevas features o adaptadores.\n- `TDD_TEST_PLAN.md` — plan y criterios para pruebas basadas en TDD; qué pruebas existen y la estrategia de pruebas (unitarias vs integración).\n- `UBIQUITOUS_LANGUAGE.md` — glosario y términos del dominio (vocabulario compartido entre negocio y equipo técnico).\n\nRecomendación: revise `docs/` antes de desarrollar; ahí está la intención del diseño y las reglas del repositorio.\n\nCómo compilar, ejecutar y probar (comandos básicos)\n\nLos comandos siguientes asumen que tienes el SDK de .NET instalado (recomendado: .NET 8 o la versión que figura en los `.csproj`). Ejecuta estos comandos desde la raíz del repositorio usando tu shell (el proyecto está en Windows, pero los comandos son los estándar de dotnet):\n\n```bash\n# Restaurar paquetes\ndotnet restore\n\n# Compilar la solución\ndotnet build ./events-service.sln\n\n# Ejecutar la API localmente (carpeta con Program.cs)\ndotnet run --project ./src/events-service.Api/events-service.Api.csproj\n\n# Ejecutar todos los tests\ndotnet test ./tests/events-service.Domain.Tests/events-service.Domain.Tests.csproj\ndotnet test ./tests/events-service.Application.Tests/events-service.Application.Tests.csproj\n# Tests de integración (si correspondiera)\ndotnet test ./tests/events-service.Infrastructure.IntegrationTests/events-service.Infrastructure.IntegrationTests.csproj\n```\n\nOtras notas útiles\n\n- La solución `events-service.sln` agrupa los proyectos; puedes abrirla en Visual Studio o VS Code (con extensiones C#).\n- Para ejecutar en contenedor localmente, consulta `docker-compose.yml` y `Dockerfile`.\n- El código sigue la separación de responsabilidades: `Domain` no debe depender de `Infrastructure`.\n- Si vas a modificar diseño o contratos (por ejemplo, modelos públicos de la API), actualiza también la documentación en `docs/` y el `UBIQUITOUS_LANGUAGE.md`.\n\nContribuciones y seguimiento\n\n- Si encuentras errores en la documentación, mejora `docs/*.md` y crea un PR claro que describa el cambio.\n- Si vas a añadir una feature o cambiar la arquitectura, abre un issue primero y referencia los documentos en `docs/`.\n\n**Limpieza y reinicio de Docker (no destructivo)**\n\nSigue estos pasos desde la carpeta del servicio (por ejemplo, `Services/events-service`) para dejar el entorno como si fuese la primera vez, sin comandos globalmente destructivos.\n\n1) Actualizar el repositorio y limpiar archivos no rastreados:\n```bash\ngit fetch --all\ngit reset --hard origin/$(git rev-parse --abbrev-ref HEAD)\ngit clean -fdx\n```\n\n2) Parar y eliminar recursos de `docker-compose` (ejecutar desde la carpeta con `docker-compose.yml`):\n```bash\n# Compose V2\ndocker compose down --rmi all --volumes --remove-orphans\n\n# Alternativa legacy\ndocker-compose down --rmi all --volumes --remove-orphans\n```\n\n3) Limpiar recursos de Docker (prune, no forzar eliminación masiva global):\n```bash\ndocker image prune -a -f\ndocker volume prune -f\ndocker network prune -f\ndocker builder prune -a -f\n```\n\n4) Forzar pull de imágenes y levantar/reconstruir desde la carpeta con `docker-compose.yml`:\n```bash\ndocker compose pull\ndocker compose up --build --force-recreate --pull always --renew-anon-volumes -d\n\n# Con docker-compose (legacy)\ndocker-compose pull\ndocker-compose up --build --force-recreate -d\n```\n\nNota: evita ejecutar comandos que eliminen todos los contenedores o imágenes de la máquina (por ejemplo, `docker rm -f $(docker ps -aq)`), ya que son destructivos a nivel global.\n\n**Migración / script de reinicio**\n\nSi prefieres un paso tipo \"migración\" que deje el servicio en un estado limpio y reproducible, hay scripts listos en `scripts/` que automatizan los pasos anteriores (disponibles para Bash y PowerShell).\n\n- `scripts/reset-environment.sh` — script Bash (Linux/macOS/WSL/Git Bash)\n- `scripts/reset-environment.ps1` — script PowerShell (Windows)\n\nEjecuta el script desde la raíz del servicio:\n\n```bash\n# Bash\n./scripts/reset-environment.sh\n\n# PowerShell\n./scripts/reset-environment.ps1\n```\n\nLos scripts realizan las mismas acciones descritas arriba: actualizan el repo, detienen y eliminan recursos de Compose para el servicio, hacen prune seguro y vuelven a bajar/reconstruir las imágenes. Son diseñados para no ejecutar comandos globalmente destructivos.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feventmesh-lab%2Fevents-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feventmesh-lab%2Fevents-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feventmesh-lab%2Fevents-service/lists"}