{"id":15035685,"url":"https://github.com/alysonsz/finance-api","last_synced_at":"2025-09-07T04:33:22.945Z","repository":{"id":242677491,"uuid":"808187037","full_name":"alysonsz/Finance-API","owner":"alysonsz","description":"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.","archived":false,"fork":false,"pushed_at":"2025-07-03T20:42:27.000Z","size":1212,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-03T21:34:36.381Z","etag":null,"topics":["api","blazor","blazor-application","blazor-client","blazor-server","blazor-webassembly","csharp","csharp-code","database","entityframework","finance","finance-application","sqlserver","webapi","webapi-core","webapiclient"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alysonsz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-30T14:58:11.000Z","updated_at":"2025-07-03T20:42:30.000Z","dependencies_parsed_at":"2024-06-04T11:46:13.447Z","dependency_job_id":"e76d10cd-ad37-4f8d-9492-c4c8bca13d3b","html_url":"https://github.com/alysonsz/Finance-API","commit_stats":null,"previous_names":["alysonsz/finance-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alysonsz/Finance-API","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alysonsz%2FFinance-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alysonsz%2FFinance-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alysonsz%2FFinance-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alysonsz%2FFinance-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alysonsz","download_url":"https://codeload.github.com/alysonsz/Finance-API/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alysonsz%2FFinance-API/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271803609,"owners_count":24824471,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-24T02:00:11.135Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","blazor","blazor-application","blazor-client","blazor-server","blazor-webassembly","csharp","csharp-code","database","entityframework","finance","finance-application","sqlserver","webapi","webapi-core","webapiclient"],"created_at":"2024-09-24T20:29:11.819Z","updated_at":"2025-08-24T06:06:17.200Z","avatar_url":"https://github.com/alysonsz.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Finance API\n\n### 📌 Descrição\n\nA **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.\n\n---\n\n### 🚀 Funcionalidades\n\n- Cadastro e gerenciamento de categorias\n- Registro de receitas e despesas\n- Autenticação via JWT\n- Interface web com Blazor integrada\n- Documentação automática via Swagger\n- Testes automatizados\n\n---\n\n### 🛠️ Tecnologias\n\n- Backend: .NET 8, ASP.NET Core, Entity Framework Core  \n- Frontend: Blazor WebAssembly  \n- Arquitetura: Clean Architecture (Domain, Application, Infrastructure, API, Web)  \n- Banco de dados: SQL Server LocalDB (via EF Core Migrations)  \n- Ferramentas: AutoMapper, Swagger/OpenAPI  \n- Testes: XUnit\n\n---\n\n### 📁 Estrutura de Diretórios do Projeto\n\n```\nFinance/\n├── Finance.sln\n│\n├── Finance.Api/                        # Camada de apresentação (API)\n│   ├── Controllers/\n│   │   ├── AuthController.cs\n│   │   ├── CategoriesController.cs\n│   │   └── TransactionController.cs\n│   ├── Properties/\n│   │   ├── launchSettings.json\n│   │   └── serviceDependencies.json\n│   ├── Extensions/\n│   │   ├── ActionResultExtension.cs\n│   │   └── BuilderExtension.cs\n│   ├── ApiConfiguration.cs\n│   ├── appsettings.json\n│   ├── Program.cs\n│   └── Finance.API.csproj\n│\n├── Finance.Application/                # Camada de aplicação (handlers e claim do JWT)\n│   ├── Extensions/\n│   │   └── ClaimsPrincipalExtension.cs\n│   ├── Handlers/\n│   │   ├── CategoryHandler.cs\n│   │   ├── TransactionHandler.cs\n│   │   └── UserHandler.cs\n│   └── Finance.Application.csproj\n│\n├── Finance.Contracts/                     # Camada de compartilhamento (interfaces, requests, responses)\n│   ├── Requests/\n│   │   ├── Auth/\n│   │   │   ├── LoginRequest.cs\n│   │   │   ├── RegisterRequest.cs\n│   │   ├── └── UpdateUserProfileRequest.cs\n│   │   ├── Categories/\n│   │   │   ├── CreateCategoryRequest.cs\n│   │   │   ├── DeleteCategoryRequest.cs\n│   │   │   ├── GetAllCategoriesRequest.cs\n│   │   │   ├── GetCategoryByIdRequest.cs\n│   │   ├── └── UpdateCategoryRequest.cs\n│   │   ├── Transacations/\n│   │   │   ├── CreateTransactionRequest.cs\n│   │   │   ├── DeleteTransactionRequest.cs\n│   │   │   ├── GetTransactionByIdRequest.cs\n│   │   │   ├── GetTransactionReportRequest.cs\n│   │   │   ├── GetTransactionByPeriodRequest.cs\n│   │   ├── └── UpdateTransactionRequest.cs\n│   │   ├── PagedRequest.cs\n│   │   └── Request.cs\n│   ├── Responses/\n│   │   ├── Auth/\n│   │   ├── └── UserProfileResponse.cs\n│   │   ├── Categories/\n│   │   ├── └── CategorySummaryResponse.cs\n│   │   ├── Transacations/\n│   │   ├── └── TransactionReportResponse.cs\n│   │   ├── PagedResponse.cs\n│   │   └── Response.cs\n│   ├── Interfaces/\n│   │   ├── Handlers/\n│   │   │   ├── IAppPreferencesHandler.cs\n│   │   │   ├── ICategoryHandler.cs\n│   │   │   ├── ITransactionHandler.cs\n│   │   ├── └── IUserHandler.cs\n│   │   ├── Repositories/\n│   │   │   ├── ICategoryRepository.cs\n│   │   │   ├── ITransactionRepository.cs\n│   ├── └── └── IUserRepository.cs\n│   └── Finance.Contracts.csproj\n│\n├── Finance.Domain/                     # Camada de domínio (entidades e contratos)\n│   ├── Common/\n│   │   └── DateTimeExtension.cs\n│   ├── Enums/\n│   │   └── ETransactionType.cs\n│   ├── Models/\n│   │   │   ├── DTOs/\n│   │   │   │   ├── CategoryDto.cs\n│   │   │   └── └── TransactionDto.cs\n│   │   ├── Category.cs\n│   │   ├── Transaction.cs\n│   │   └── User.cs\n│   └── Finance.Domain.csproj\n│\n├── Finance.Infrastructure/             # Camada de infraestrutura (banco de dados e repositórios)\n│   ├── Data/\n│   │   ├──  Mappings/\n│   │   │    ├── CategoryMapping.cs\n│   │   │    ├── TransactionMapping.cs\n│   │   └──  └── UserMapping.cs\n│   └── FinanceDbContext.cs\n│   ├── Migrations/\n│   │   ├── InitialCreate.cs\n│   │   └── FinanceDbContextModelSnapshot.cs\n│   ├── Repositories/\n│   │   ├── CategoryRepository.cs\n│   │   ├── TransactionRepository.cs\n│   │   └── UserRepository.cs\n│   └── Finance.Infrastructure.csproj\n│\n├── Finance.Web/                         # Camada Web (Frontend Blazor Pages)\n│   ├── Authentication/\n│   │   └── CustomAuthenticationStateProvider.cs\n│   ├── Handlers/\n│   │   ├── AppPreferencesHandler.cs\n│   │   ├── AppThemeHandler.cs\n│   │   ├── AuthHandler.cs\n│   │   ├── AuthMessageHandler.cs\n│   │   ├── CategoryHandler.cs\n│   │   └── TransactionHandler.cs\n│   ├── Layout/\n│   │   ├── LoginLayout.razor\n│   │   └── MainLayout.razor\n│   ├── Pages/\n│   │   ├── Categories/\n│   │   │   ├── CreateCategory.razor\n│   │   │   ├── EditCategory.razor\n│   │   │   └── GetAllCategories.razor\n│   │   │        └── GetAllCategories.razor.cs\n│   │   ├── Transactions/\n│   │   │   ├── CreateTransaction.razor\n│   │   │   ├── EditTransaction.razor\n│   │   │   └── GetAllTransactions.razor\n│   │   │        └── GetAllTransactions.razor.cs\n│   │   ├── About.razor\n│   │   ├── Home.razor\n│   │   ├── Login.razor\n│   │   ├── RedirectToLogin.razor\n│   │   ├── Register.razor\n│   │   ├── Reports.razor\n│   │   └── Settings.razor\n│   ├── Shared/\n│   │   ├── CategoryForm.razor\n│   │   └── TransactionForm.razor\n│   ├── wwwroot/\n│   │   └── css/\n│   │       └── app.css\n│   ├── WebConfiguration.cs\n│   ├── Program.cs\n│   ├── App.razor\n│   ├── _Imports.razor\n└── └── Finance.Web.csproj\n```\n\n---\n\n### ✅ Como executar o projeto\n\n#### 1. Clone o repositório\n\n```bash\ngit clone https://github.com/alysonsz/Finance-API.git\ncd Finance-API\n```\n\n#### 2. Restaure os pacotes\n\n```bash\ndotnet restore\n```\n\n#### 3. Crie o banco de dados\n\n```bash\ndotnet ef database update --project Finance.Infrastructure --startup-project Finance.Api\n```\n\n#### 4. Execute a API + Front-end juntos\n\n**Escolha conforme seu sistema operacional:**\n\n- 🪟 **Windows**  \n  Execute o arquivo `start.bat` (clique duas vezes ou rode no terminal):\n\n  ```bash\n  start.bat\n  ```\n\n- 🐧 **Linux / macOS / WSL**  \n  Dê permissão e execute o script:\n\n  ```bash\n  chmod +x start.sh\n  ./start.sh\n  ```\n\n\u003e Isso iniciará automaticamente a API e o front-end Blazor WebAssembly.\n\n---\n\n### 🔗 Endpoints úteis\n\n- API: [https://localhost:7279/swagger](https://localhost:7279/swagger)\n- Frontend (Blazor): aberto automaticamente ao executar o projeto\n\n---\n\n### 👨‍💻 Autor\n\n- Alyson Souza Carregosa • Back-end Developer\n\n---\n\n### 📝 Licença\n\nEste projeto está disponível sob a licença MIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falysonsz%2Ffinance-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falysonsz%2Ffinance-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falysonsz%2Ffinance-api/lists"}