A Finance API é uma aplicação completa para controle de transações financeiras, desenvolvida com .NET 8 e Blazor WebAssembly, estruturada com Clean Architecture para promover organização, reutilização e clareza entre suas camadas de domínio, aplicação, infraestrutura, API e interface web.
- Cadastro e gerenciamento de categorias
- Registro de receitas e despesas
- Autenticação via JWT
- Interface web com Blazor integrada
- Documentação automática via Swagger
- Testes automatizados
- Backend: .NET 8, ASP.NET Core, Entity Framework Core
- Frontend: Blazor WebAssembly
- Arquitetura: Clean Architecture (Domain, Application, Infrastructure, API, Web)
- Banco de dados: SQL Server LocalDB (via EF Core Migrations)
- Ferramentas: AutoMapper, Swagger/OpenAPI
- Testes: XUnit
Finance/
├── Finance.sln
│
├── Finance.Api/ # Camada de apresentação (API)
│ ├── Controllers/
│ │ ├── AuthController.cs
│ │ ├── CategoriesController.cs
│ │ └── TransactionController.cs
│ ├── Properties/
│ │ ├── launchSettings.json
│ │ └── serviceDependencies.json
│ ├── Extensions/
│ │ ├── ActionResultExtension.cs
│ │ └── BuilderExtension.cs
│ ├── ApiConfiguration.cs
│ ├── appsettings.json
│ ├── Program.cs
│ └── Finance.API.csproj
│
├── Finance.Application/ # Camada de aplicação (handlers e claim do JWT)
│ ├── Extensions/
│ │ └── ClaimsPrincipalExtension.cs
│ ├── Handlers/
│ │ ├── CategoryHandler.cs
│ │ ├── TransactionHandler.cs
│ │ └── UserHandler.cs
│ └── Finance.Application.csproj
│
├── Finance.Contracts/ # Camada de compartilhamento (interfaces, requests, responses)
│ ├── Requests/
│ │ ├── Auth/
│ │ │ ├── LoginRequest.cs
│ │ │ ├── RegisterRequest.cs
│ │ ├── └── UpdateUserProfileRequest.cs
│ │ ├── Categories/
│ │ │ ├── CreateCategoryRequest.cs
│ │ │ ├── DeleteCategoryRequest.cs
│ │ │ ├── GetAllCategoriesRequest.cs
│ │ │ ├── GetCategoryByIdRequest.cs
│ │ ├── └── UpdateCategoryRequest.cs
│ │ ├── Transacations/
│ │ │ ├── CreateTransactionRequest.cs
│ │ │ ├── DeleteTransactionRequest.cs
│ │ │ ├── GetTransactionByIdRequest.cs
│ │ │ ├── GetTransactionReportRequest.cs
│ │ │ ├── GetTransactionByPeriodRequest.cs
│ │ ├── └── UpdateTransactionRequest.cs
│ │ ├── PagedRequest.cs
│ │ └── Request.cs
│ ├── Responses/
│ │ ├── Auth/
│ │ ├── └── UserProfileResponse.cs
│ │ ├── Categories/
│ │ ├── └── CategorySummaryResponse.cs
│ │ ├── Transacations/
│ │ ├── └── TransactionReportResponse.cs
│ │ ├── PagedResponse.cs
│ │ └── Response.cs
│ ├── Interfaces/
│ │ ├── Handlers/
│ │ │ ├── IAppPreferencesHandler.cs
│ │ │ ├── ICategoryHandler.cs
│ │ │ ├── ITransactionHandler.cs
│ │ ├── └── IUserHandler.cs
│ │ ├── Repositories/
│ │ │ ├── ICategoryRepository.cs
│ │ │ ├── ITransactionRepository.cs
│ ├── └── └── IUserRepository.cs
│ └── Finance.Contracts.csproj
│
├── Finance.Domain/ # Camada de domínio (entidades e contratos)
│ ├── Common/
│ │ └── DateTimeExtension.cs
│ ├── Enums/
│ │ └── ETransactionType.cs
│ ├── Models/
│ │ │ ├── DTOs/
│ │ │ │ ├── CategoryDto.cs
│ │ │ └── └── TransactionDto.cs
│ │ ├── Category.cs
│ │ ├── Transaction.cs
│ │ └── User.cs
│ └── Finance.Domain.csproj
│
├── Finance.Infrastructure/ # Camada de infraestrutura (banco de dados e repositórios)
│ ├── Data/
│ │ ├── Mappings/
│ │ │ ├── CategoryMapping.cs
│ │ │ ├── TransactionMapping.cs
│ │ └── └── UserMapping.cs
│ └── FinanceDbContext.cs
│ ├── Migrations/
│ │ ├── InitialCreate.cs
│ │ └── FinanceDbContextModelSnapshot.cs
│ ├── Repositories/
│ │ ├── CategoryRepository.cs
│ │ ├── TransactionRepository.cs
│ │ └── UserRepository.cs
│ └── Finance.Infrastructure.csproj
│
├── Finance.Web/ # Camada Web (Frontend Blazor Pages)
│ ├── Authentication/
│ │ └── CustomAuthenticationStateProvider.cs
│ ├── Handlers/
│ │ ├── AppPreferencesHandler.cs
│ │ ├── AppThemeHandler.cs
│ │ ├── AuthHandler.cs
│ │ ├── AuthMessageHandler.cs
│ │ ├── CategoryHandler.cs
│ │ └── TransactionHandler.cs
│ ├── Layout/
│ │ ├── LoginLayout.razor
│ │ └── MainLayout.razor
│ ├── Pages/
│ │ ├── Categories/
│ │ │ ├── CreateCategory.razor
│ │ │ ├── EditCategory.razor
│ │ │ └── GetAllCategories.razor
│ │ │ └── GetAllCategories.razor.cs
│ │ ├── Transactions/
│ │ │ ├── CreateTransaction.razor
│ │ │ ├── EditTransaction.razor
│ │ │ └── GetAllTransactions.razor
│ │ │ └── GetAllTransactions.razor.cs
│ │ ├── About.razor
│ │ ├── Home.razor
│ │ ├── Login.razor
│ │ ├── RedirectToLogin.razor
│ │ ├── Register.razor
│ │ ├── Reports.razor
│ │ └── Settings.razor
│ ├── Shared/
│ │ ├── CategoryForm.razor
│ │ └── TransactionForm.razor
│ ├── wwwroot/
│ │ └── css/
│ │ └── app.css
│ ├── WebConfiguration.cs
│ ├── Program.cs
│ ├── App.razor
│ ├── _Imports.razor
└── └── Finance.Web.csproj
git clone https://github.com/alysonsz/Finance-API.git
cd Finance-API
dotnet restore
dotnet ef database update --project Finance.Infrastructure --startup-project Finance.Api
Escolha conforme seu sistema operacional:
-
🪟 Windows
Execute o arquivostart.bat
(clique duas vezes ou rode no terminal):start.bat
-
🐧 Linux / macOS / WSL
Dê permissão e execute o script:chmod +x start.sh ./start.sh
Isso iniciará automaticamente a API e o front-end Blazor WebAssembly.
- API: https://localhost:7279/swagger
- Frontend (Blazor): aberto automaticamente ao executar o projeto
- Alyson Souza Carregosa • Back-end Developer
Este projeto está disponível sob a licença MIT.