https://github.com/alysonsz/finance-api
Problem Situation: Difficulty in managing personal finances without a clear and simple view of income and expenses. This project provides a robust REST API, built with .NET and Clean Architecture, for tracking categorized financial transactions, enabling better financial control and insights.
https://github.com/alysonsz/finance-api
api blazor blazor-application blazor-client blazor-server blazor-webassembly csharp csharp-code database entityframework finance finance-application sqlserver webapi webapi-core webapiclient
Last synced: 3 months ago
JSON representation
Problem Situation: Difficulty in managing personal finances without a clear and simple view of income and expenses. This project provides a robust REST API, built with .NET and Clean Architecture, for tracking categorized financial transactions, enabling better financial control and insights.
- Host: GitHub
- URL: https://github.com/alysonsz/finance-api
- Owner: alysonsz
- Created: 2024-05-30T14:58:11.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-03T20:42:27.000Z (6 months ago)
- Last Synced: 2025-07-03T21:34:36.381Z (6 months ago)
- Topics: api, blazor, blazor-application, blazor-client, blazor-server, blazor-webassembly, csharp, csharp-code, database, entityframework, finance, finance-application, sqlserver, webapi, webapi-core, webapiclient
- Language: C#
- Homepage:
- Size: 1.16 MB
- Stars: 6
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Finance API
### π DescriΓ§Γ£o
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.
---
### π Funcionalidades
- 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
---
### π οΈ Tecnologias
- 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
---
### π Estrutura de DiretΓ³rios do Projeto
```
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
```
---
### β
Como executar o projeto
#### 1. Clone o repositΓ³rio
```bash
git clone https://github.com/alysonsz/Finance-API.git
cd Finance-API
```
#### 2. Restaure os pacotes
```bash
dotnet restore
```
#### 3. Crie o banco de dados
```bash
dotnet ef database update --project Finance.Infrastructure --startup-project Finance.Api
```
#### 4. Execute a API + Front-end juntos
**Escolha conforme seu sistema operacional:**
- πͺ **Windows**
Execute o arquivo `start.bat` (clique duas vezes ou rode no terminal):
```bash
start.bat
```
- π§ **Linux / macOS / WSL**
DΓͺ permissΓ£o e execute o script:
```bash
chmod +x start.sh
./start.sh
```
> Isso iniciarΓ‘ automaticamente a API e o front-end Blazor WebAssembly.
---
### π Endpoints ΓΊteis
- API: [https://localhost:7279/swagger](https://localhost:7279/swagger)
- Frontend (Blazor): aberto automaticamente ao executar o projeto
---
### π¨βπ» Autor
- Alyson Souza Carregosa β’ Back-end Developer
---
### π LicenΓ§a
Este projeto estΓ‘ disponΓvel sob a licenΓ§a MIT.