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-APIdotnet restoredotnet ef database update --project Finance.Infrastructure --startup-project Finance.ApiEscolha 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.