https://github.com/alysonsz/eventflow-api
https://github.com/alysonsz/eventflow-api
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/alysonsz/eventflow-api
- Owner: alysonsz
- Created: 2025-03-28T20:50:04.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2025-03-31T20:40:23.000Z (2 months ago)
- Last Synced: 2025-03-31T21:36:06.197Z (2 months ago)
- Language: C#
- Size: 1000 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# EventFlow API
### 📌 Descrição do Projeto
O **EventFlow API** é um projeto desenvolvido em .NET, voltado para a gestão e organização de eventos, projetado com a finalidade de demonstrar boas práticas na utilização do framework ASP.NET Core, Entity Framework Core e arquitetura MVC (Model-View-Controller).
OBS: Esse projeto foi pensado para implementação no Google Developers Group (GDG) Aracaju.
Esta API proporciona funcionalidades completas para criação, gerenciamento e manipulação de eventos, palestrantes, organizadores e participantes, incluindo relacionamentos complexos, como relacionamentos um-para-muitos e muitos-para-muitos.
---
### 🚀 Objetivos do Projeto
- Demonstrar conhecimento avançado em ASP.NET Core Web API.
- Aplicar práticas recomendadas para uso de Entity Framework Core com diferentes tipos de relacionamentos.
- Seguir princĂpios de design e arquitetura MVC.
- Apresentar um código limpo, organizado e escalável.
- Facilitar futuras implementações como autenticação, testes unitários e logging.---
### 🛠️ Tecnologias Utilizadas
**Backend:**
- .NET 8 (ou versĂŁo mais recente disponĂvel)
- ASP.NET Core Web API
- Entity Framework Core (com migrations)
- SQL Server
- Swagger**Padrões e Conceitos:**
- Arquitetura MVC (Model-View-Controller)
- Fluent API para mapeamento personalizado das entidades**Futuras Implementações:**
- Autenticação JWT
- Validações adicionais com Fluent Validation
- Testes unitários (xUnit)
- Logging detalhado para auditoria e monitoramento
- Docker para containerização---
### đź”— Estrutura das Entidades
O projeto atualmente Ă© composto pelas seguintes entidades principais:
- **Event**: Representa o evento em si, com dados como tĂtulo, descrição, data e local.
- **Organizer**: Responsável pela organização do evento.
- **Speaker**: Palestrantes convidados para o evento.
- **Participant**: Pessoas que participam dos eventos.---
### 📚 Detalhes dos Relacionamentos
- **Organizer → Event** *(One-to-Many)*
- Um organizador pode gerenciar múltiplos eventos.- **Event → Speaker** *(One-to-Many)*
- Um evento pode ter mĂşltiplos palestrantes.
- Um palestrante pode participar de apenas um evento especĂfico (modelo atual simplificado).- **Event ↔ Participant** *(Many-to-Many)*
- Um evento pode ter vários participantes.
- Um participante pode participar de diversos eventos diferentes.---
### 🧩 Organização do Projeto
```
EventFlow_API/
├── Commands/
│ ├── EventCommand.cs
│ ├── OrganizerCommand.cs
│ ├── ParticipantCommand.cs
│ └── SpeakerCommand.cs
├── Controllers/
│ ├── EventController.cs
│ ├── OrganizerController.cs
│ ├── ParticipantController.cs
│ └── SpeakerController.cs
├── Config/
│ └──AppConfiguration.cs
├── Data/
│ ├── Mapping/
│ │ ├── EventMap.cs
│ │ ├── OrganizerMap.cs
│ │ ├── ParticipantMap.cs
│ │ └── SpeakerMap.cs
│ └── EventFlowContext.cs
├── Models/
│ ├── Event.cs
│ ├── Organizer.cs
│ ├── Participant.cs
│ └── Speaker.cs
├── Repository/
│ ├── Interfaces/
│ │ ├── IEventRepository.cs
│ │ ├── IOrganizerRepository.cs
│ │ ├── IParticipantRepository.cs
│ │ └── ISpeakerRepository.cs
│ ├── EventRepository.cs
│ ├── OrganizerRepository.cs
│ ├── ParticipantRepository.cs
│ └── SpeakerRepository.cs
├── Services/
│ ├── Interfaces/
│ │ ├── IEventService.cs
│ │ ├── IOrganizerService.cs
│ │ ├── IParticipantService.cs
│ │ └── ISpeakerService.cs
│ ├── EventService.cs
│ ├── OrganizerService.cs
│ ├── ParticipantService.cs
│ └── SpeakerService.cs
├── Dockerfile
├── EventFlow-API.http
├── appsettings.json
├── Program.cs
└── README.md
```---
### đźš§ PrĂłximos Passos
- Implementar autenticação JWT.
- Criar camada de Services e Repositories.
- Realizar testes unitários abrangentes.
- Implementar logging detalhado.
- Aplicar Docker para containerização da aplicação.---
### 📌 Como Rodar o Projeto
- Clone o repositĂłrio
- Configure a conexĂŁo com o banco de dados em `appsettings.json`
- Execute `dotnet ef database update` para aplicar as migrations.
- Rode o projeto com `dotnet run`
- Acesse o Swagger em: `https://localhost:/swagger`
- Para HTTPS utilize a porta 7221 e para HTTP a porta 5041.---
### 👨‍💻 Autor
- Alyson Souza Carregosa 👨‍💻 Back-end Developer
---
### 📝 Licença
Este projeto está disponĂvel sob a licença MIT.