This project is a minimal api application using clean architecture and CQRS pattern, that allows get pokemons from PokeApi and save in a database.
The WebUI renders a grid with the pokemons using infinite scroll. The user can click on a pokemon to see more details.
Clean architecture is used to separate the application into layers. The layers are as follows: application, domain, and infrastructure. The application layer contains use-cases and all core implementations. The domain layer contains the business logic and models. The infrastructure layer contains the database context and migrations.
The implementation between the Api and the rest of the application is built with CQRS (Command and Query Responsibility Segregation), a pattern that separates read and update operations for a data store.
- C#
- NET 8
- Entity Framework Core with InMemory Database
- MediatR
- AutoMapper
- Docker Compose
- Swagger
- Firestore
- Angular 17
- NET 8
- Docker
- EF CLI - dotnet tool install --global dotnet-ef
- Clone this repository
- Run the command
docker-compose up
in the root folder - Go to Infrastructure folder and run the command
dotnet ef database update
to create the database - Open the browser and go to
http://localhost:port/swagger/index.html
to see the swagger documentation - Use the endpoints to get pokemons from PokeApi and save in a database
- Execute Seed endpoint to get pokemons from PokeApi and save in a database
- See client.http file in the root folder
- Run the command
dotnet test
in the root folder
- Implement cache to improve performance - get all pokemons
- Implement pagination
- Implement unit tests
- Implement integration tests
- Implement docker
- Implement swagger
- Implement logging with serilog
- Implement error handling