Uma plataforma de experiência gastronômica construída como um monolito modular, utilizando os conceitos do Clean Architecture. Este projeto foi desenvolvido para demonstrar conhecimentos em boas práticas (SOLID, DDD, Clean Code), injeção de dependências, Entity Framework Core, MediatR, testes unitários e muito mais – tudo de forma modular e escalável, mas com a simplicidade de um monolito.
- Visão Geral
- Funcionalidades
- Arquitetura e Tecnologias
- Estrutura do Projeto
- Pré-requisitos
- Instalação e Configuração
- Executando a Aplicação
- Testes
- Contribuindo
- Licença
- Contato
O GastroX Monolith é uma aplicação web que conecta entusiastas da gastronomia a experiências e reservas em restaurantes. Este projeto foi desenvolvido para servir como portfólio e demonstrar um domínio completo de tecnologias .NET com um design modular, sem os custos e complexidades de uma arquitetura de microserviços.
- API RESTful: Endpoints para cadastro de restaurantes, gerenciamento de menus, reservas e avaliações.
- Autenticação JWT: Controle de acesso para usuários e administradores.
- Camadas bem definidas: Separação entre Domain, Application, Infrastructure e Presentation, seguindo os princípios do Clean Architecture.
- Testes Unitários: Cobertura de testes para as regras de negócio e casos de uso.
- Injeção de Dependência: Utilização do container nativo do .NET para gerenciar dependências.
- Entity Framework Core: Acesso a dados com migrações automatizadas e uso de SQL Server (ou outra provider configurável).
- Monolito Modular: Estrutura que organiza o código em módulos independentes, facilitando a manutenção e a escalabilidade futura.
- Clean Architecture: Separação clara das camadas de domínio, aplicação, infraestrutura e apresentação.
- ASP.NET Core Web API: Projeto de entrada para expor os endpoints.
- Entity Framework Core: ORM para acesso a dados.
- MediatR: Implementação do padrão Mediator para comandos e queries.
- .NET 8 ou superior: Plataforma de desenvolvimento.
- Swagger: Documentação interativa dos endpoints da API.
A solução está organizada da seguinte forma:
/GastroXMonolith
├── /src
│ ├── /Presentation # Projeto ASP.NET Core Web API (Entry point)
│ ├── /Application # Casos de uso, comandos, queries, handlers (MediatR)
│ ├── /Domain # Entidades, interfaces e regras de negócio
│ └── /Infrastructure # Implementação de acesso a dados, repositórios, etc.
└── /tests # Projetos de testes unitários para Application e Domain
- .NET 8 SDK
- SQL Server Express ou LocalDB
- Ferramentas de linha de comando (Terminal, PowerShell ou similar)
-
Clone o repositório:
git clone https://github.com/lucasoaresdev/GastroXMonolith.git cd GastroXMonolith
-
Configure a solução:
- Abra a solução
GastroXMonolith.sln
no Visual Studio ou na sua IDE preferida. - Verifique se as referências entre os projetos estão corretas.
- Abra a solução
-
Configuração do Banco de Dados:
No arquivo
appsettings.json
do projeto Presentation, configure a string de conexão. -
Instale as dependências:
dotnet restore
-
Aplicando Migrações:
dotnet ef migrations add InitialCreate --startup-project ../Presentation --output-dir Persistence/Migrations dotnet ef database update --startup-project ../Presentation
-
Rodando a API:
dotnet run
Acesse o Swagger em
https://localhost:5001/swagger
-
Para executar os testes, utilize o comando:
dotnet test
Contribuições são bem-vindas! Siga os passos do README para contribuir.
Este projeto está licenciado sob a MIT License.
- Email: lucasoaresdev@gmail.com
- GitHub: lucasoaresdev