{"id":26926365,"url":"https://github.com/alysonsz/eventflow-api","last_synced_at":"2026-01-20T15:01:15.559Z","repository":{"id":285459210,"uuid":"956772971","full_name":"alysonsz/EventFlow-API","owner":"alysonsz","description":"Problem Situation: Event management for tech communities is often manual and decentralized. EventFlow API solves this by providing a robust backend to centralize and automate the entire event lifecycle.","archived":false,"fork":false,"pushed_at":"2026-01-19T18:15:39.000Z","size":1057,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-19T19:23:50.935Z","etag":null,"topics":["clean-architecture","csharp","dotnet","entity-framework-core","rest-api","sqlserver","swagger","unit-testing"],"latest_commit_sha":null,"homepage":"https://www.linkedin.com/in/alyson-carregosa/","language":"C#","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/alysonsz.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-03-28T20:50:04.000Z","updated_at":"2026-01-19T18:15:43.000Z","dependencies_parsed_at":"2025-06-11T18:40:37.071Z","dependency_job_id":"8e4a906f-e74c-4fc5-8f74-628d3dcf9c4e","html_url":"https://github.com/alysonsz/EventFlow-API","commit_stats":null,"previous_names":["alysonsz/eventflow-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alysonsz/EventFlow-API","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alysonsz%2FEventFlow-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alysonsz%2FEventFlow-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alysonsz%2FEventFlow-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alysonsz%2FEventFlow-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alysonsz","download_url":"https://codeload.github.com/alysonsz/EventFlow-API/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alysonsz%2FEventFlow-API/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28605916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T14:45:23.139Z","status":"ssl_error","status_checked_at":"2026-01-20T14:44:16.929Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["clean-architecture","csharp","dotnet","entity-framework-core","rest-api","sqlserver","swagger","unit-testing"],"created_at":"2025-04-02T03:31:55.177Z","updated_at":"2026-01-20T15:01:15.550Z","avatar_url":"https://github.com/alysonsz.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EventFlow API — Enterprise Event Management\n\nO **EventFlow API** é uma solução de back-end **robusta, escalável e orientada a produção** para gestão de eventos, desenvolvida em **.NET 8** e estruturada segundo os princípios da **Clean Architecture**.\n\nDiferente de APIs tradicionais voltadas apenas a CRUD, este projeto foca fortemente em **Observabilidade, Performance e Resiliência**, simulando um ambiente real de produção com **tracing distribuído**, **logs estruturados** e **estratégias de cache**.\n\n---\n\n## Arquitetura \u0026 Design\n\nO projeto foi refatorado para suportar **alta carga**, **baixo acoplamento** e **manutenibilidade a longo prazo**.\n\n```mermaid\ngraph TD\n    Client[Cliente / Swagger] --\u003e|HTTP Request| API[EventFlow API]\n    \n    subgraph \"Observability Layer\"\n        API -.-\u003e|Logs| Seq[Seq Dashboard]\n        API -.-\u003e|Traces| Jaeger[Jaeger UI]\n    end\n    \n    subgraph \"Data \u0026 Performance\"\n        API \u003c--\u003e|Cache-Aside| Redis[Redis Cache]\n        API \u003c--\u003e|EF Core| SQL[SQL Server]\n    end\n```\n\n---\n\n## 🌟 Diferenciais Técnicos\n\n### ⚡ Cache Distribuído (Redis)\n- Implementação do padrão **Cache-Aside**\n- Redução significativa de latência em operações de leitura (ex: `GetById`)\n- Estratégias de **invalidação de cache** para garantir consistência dos dados\n\n### 🔍 Observabilidade Completa\n\n- **Tracing Distribuído** *(OpenTelemetry + Jaeger)*  \n  Rastreamento ponta-a-ponta das requisições para identificar gargalos entre **API, Cache e Banco de Dados**.\n\n- **Logs Estruturados** *(Serilog + Seq)*  \n  Centralização de logs para diagnóstico rápido em ambientes containerizados.\n\n### 🛡️ Resiliência\n- Políticas de **Retry** na conexão com o banco de dados\n- Tolerância a falhas transientes\n\n### 🐳 Containerização\n- Ambiente totalmente orquestrado via **Docker Compose**:\n  - API\n  - SQL Server\n  - Redis\n  - Jaeger\n  - Seq\n\n### 🧼 Clean Code\n- Uso de **Primary Constructors**\n- **Extension Methods** para configuração de DI (`AppConfiguration`)\n- Separação estrita de responsabilidades entre camadas\n\n---\n\n## Tech Stack\n\n| Categoria | Tecnologias |\n|---------|------------|\n| **Core** | .NET 8, C# 12 |\n| **Arquitetura** | Clean Architecture, RESTful, Dependency Injection |\n| **Banco de Dados** | SQL Server 2022, Entity Framework Core 8 |\n| **Performance** | Redis (StackExchange.Redis), Microsoft.Extensions.Caching |\n| **Observabilidade** | OpenTelemetry, Jaeger, Serilog, Seq |\n| **Documentação** | Swagger / OpenAPI (com suporte a Auth) |\n| **Qualidade** | xUnit, Moq, FluentAssertions, FluentValidation |\n| **DevOps** | Docker, Docker Compose |\n\n---\n\n## Como Rodar o Projeto\n\nA forma **mais simples e profissional** de executar o EventFlow API é utilizando **Docker**, que sobe toda a infraestrutura necessária automaticamente.\n\n### Pré-requisitos\n\n- [Docker Desktop](https://www.docker.com/products/docker-desktop/) instalado.\n\n### Passo a Passo\n\n```bash\ngit clone https://github.com/alysonsz/eventflow-api.git\ncd eventflow-api\n```\n\n```bash\ndocker-compose up -d --build\n```\n\nAguarde alguns segundos até que todos os containers estejam prontos.\n\n---\n\n## Acesso aos Serviços\n\n| Serviço | URL | Descrição | Credenciais (se houver) |\n|-------|-----|-----------|-------------|\n| **Swagger** | http://localhost:8079/swagger | Documentação e testes da API | - |\n| **Jaeger UI** | http://localhost:16686 | Tracing e análise de performance | - |\n| **Seq Logs** | http://localhost:5341 | Logs estruturados em tempo real | User: `admin` \u003cbr\u003e Pass: `MyStrongPassword123!` |\n\n---\n\n## 🧪 Testando a Performance (Cache)\n\n1. Acesse o **Swagger**\n2. Execute `GET /event/{id}` (primeira chamada → SQL Server)\n3. Execute a mesma requisição novamente\n\n**Resultado:**\n- A segunda resposta ocorre em **milissegundos**, pois vem do **Redis**\n\nVá até o **Jaeger UI** e compare os *spans* das duas requisições.\n\n---\n\n## 📂 Estrutura do Projeto\n\n```\nEventFlow API\n├── 📁 EventFlow.Core           # Domínio (Entidades, Interfaces, DTOs)\n├── 📁 EventFlow.Application    # Regras de Negócio (Services, Validations, Cache Logic)\n├── 📁 EventFlow.Infrastructure # Acesso a Dados (EF Core, Repositories, Migrations)\n├── 📁 EventFlow.Presentation   # API (Controllers, Docker, DI Setup)\n└── 📁 EventFlow.Tests          # Testes Unitários (xUnit)\n```\n\n---\n\n## 🔐 Autenticação\n\nA API utiliza **JWT (JSON Web Token)**.\n\n1. Crie uma conta em: `POST /authentication/register`\n2. Faça login em: `POST /authentication/login`\n3. Copie o token retornado\n4. No Swagger, clique em **Authorize** e informe:\n\n```\nSEU_TOKEN\n```\n\n---\n\n### 👨‍💻 Autor\n\nDesenvolvido por **Alyson Souza Carregosa**  \nFocado em **Engenharia de Software de Alta Performance**, Arquitetura e Sistemas Observáveis.\n\n---\n\n## 📄 Licença\n\nEste projeto está licenciado sob a **MIT License**.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falysonsz%2Feventflow-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falysonsz%2Feventflow-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falysonsz%2Feventflow-api/lists"}