{"id":14996213,"url":"https://github.com/keidsondesigner/algamoney-api","last_synced_at":"2025-12-24T16:48:52.276Z","repository":{"id":246979033,"uuid":"823950606","full_name":"keidsondesigner/algamoney-api","owner":"keidsondesigner","description":"Projeto de uma API para gerenciar contas do dia-a-dia com autenticação de acesso.","archived":false,"fork":false,"pushed_at":"2025-02-10T01:43:21.000Z","size":96,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-10T02:29:16.937Z","etag":null,"topics":["auth0","flyway","java-17","postgres","postgresql","restful-api","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","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/keidsondesigner.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}},"created_at":"2024-07-04T04:34:55.000Z","updated_at":"2025-02-10T01:43:24.000Z","dependencies_parsed_at":"2025-02-10T02:26:29.938Z","dependency_job_id":"bbabd838-de1b-44ce-9039-94e0e7c53187","html_url":"https://github.com/keidsondesigner/algamoney-api","commit_stats":{"total_commits":61,"total_committers":1,"mean_commits":61.0,"dds":0.0,"last_synced_commit":"01c8d2280b70a8130010b4b9b5d62dc5d6b42988"},"previous_names":["keidsondesigner/algamoney-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keidsondesigner%2Falgamoney-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keidsondesigner%2Falgamoney-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keidsondesigner%2Falgamoney-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keidsondesigner%2Falgamoney-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keidsondesigner","download_url":"https://codeload.github.com/keidsondesigner/algamoney-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243131023,"owners_count":20241176,"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","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":["auth0","flyway","java-17","postgres","postgresql","restful-api","spring-boot"],"created_at":"2024-09-24T16:33:27.880Z","updated_at":"2025-12-24T16:48:52.234Z","avatar_url":"https://github.com/keidsondesigner.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API Algamoney\n\n\u003cimg src=\"https://i.imgur.com/aTaviZA.png\" title=\"source: imgur.com\" /\u003e\n\n\u003cimg src=\"https://i.imgur.com/2GFpt6N.png\" title=\"source: imgur.com\" /\u003e\n\n\u003cimg src=\"https://i.imgur.com/OmoApDs.png\" title=\"source: imgur.com\" /\u003e\n\n\u003cimg src=\"https://i.imgur.com/9rTrKXK.png\" title=\"source: imgur.com\" /\u003e\n\n\u003cimg src=\"https://i.imgur.com/CwztDm8.png\" title=\"source: imgur.com\" /\u003e\n\n## Diagrama de Classes (Domínio da API)\n\n```mermaid\nclassDiagram\n  class CategoriaModel {\n    -Long codigo\n    -String nome\n  }\n\n  class LancamentoModel {\n    -Long codigo\n    -String descricao\n    -LocalDate dataVencimento\n    -LocalDate dataPagamento\n    -BigDecimal valor\n    -String observacao\n    -TipoLancamentoEnum tipo\n    -CategoriaModel categoria\n    -PessoaModel pessoa\n  }\n\n  class PessoaModel {\n    -Long codigo\n    -String nome\n    -Boolean ativo\n    -EnderecoModel endereco\n  }\n\n  class EnderecoModel {\n    -String logradouro\n    -String numero\n    -String complemento\n    -String bairro\n    -String cep\n    -String cidade\n    -String estado\n  }\n\n  class UsuarioModel {\n    -Long codigo\n    -String nome\n    -String email\n    -String senha\n    -Set\u003cPermissaoModel\u003e permissoes\n  }\n\n  class PermissaoModel {\n    -Long codigo\n    -String descricao\n  }\n\n  class TipoLancamentoEnum {\n    \u003c\u003cenumeration\u003e\u003e\n    RECEITA\n    DESPESA\n  }\n\n  LancamentoModel \"N\" --\u003e \"1\" CategoriaModel\n  LancamentoModel \"N\" --\u003e \"1\" PessoaModel\n  PessoaModel \"1\" *-- \"1\" EnderecoModel\n  UsuarioModel \"N\" *-- \"N\" PermissaoModel\n  LancamentoModel --\u003e TipoLancamentoEnum\n```\n\n## Visão Geral\nA API **Algamoney** é um serviço RESTful desenvolvido em **Spring Boot** para gerenciar lançamentos financeiros, categorias, pessoas e autenticação de usuários.\n\n###\nAntes de consumir a API no seu frontend, adicione o path no arquivo [CorsConfig.java no método allowedOrigins()](src/main/java/com/keidson/algamoney_api/cors/CorsConfig.java)\n\n## Dependências\n- Java 17\n- Maven 3.8.1+\n- PostgreSQL 13+\n\n## Como Rodar o Projeto\n\n1. **Clone o repositório:**\n   ```sh\n   git clone \u003chttps://github.com/keidsondesigner/algamoney-api.git\u003e\n   cd algamoney-api\n   ```\n\n2. **Configure o banco de dados:**\n   - Atualize as configurações do banco de dados PostgreSQL em [application.properties](src\\main\\resources\\application.properties)\n     ```properties\n     SPRING_DATASOURCE_URL=jdbc:postgresql://\u003cHOST\u003e:\u003cPORT\u003e/\u003cDATABASE\u003e\n     SPRING_DATASOURCE_USERNAME=\u003cUSERNAME\u003e\n     SPRING_DATASOURCE_PASSWORD=\u003cPASSWORD\u003e\n     ```\n\n3. **Rodando o Projeto via Docker**\n\n   3.1 **Certifique-se de ter o Docker instalado na sua máquina.**\n\n   3.2 **Construa a imagem Docker:**\n      ```sh\n      docker build -t algamoney-api .\n      ```\n\n   3.3 **Rode o contêiner:**\n      ```sh\n      docker run -p 8080:8080 algamoney-api\n      ```\n\n   Isso irá iniciar o contêiner com a aplicação rodando no Java 17, sem a necessidade de ter o Java instalado na sua máquina local. A aplicação estará disponível em `http://localhost:8080`.\n\n4. **Compile e rode o projeto localmente:**\n   - Dependências:\n   - Java 17\n   - Maven 3.8.1+\n   - PostgreSQL 13+\n   ```sh\n   ./mvnw clean install\n   ./mvnw spring-boot:run\n   ```\n\n5. **Acesse a aplicação:**\n   - Após subir o serviodor, a aplicação estará disponível em `http://localhost:8080`.\n\n\n## Autenticação\n\nA API utiliza autenticação via **JWT**. Para acessar os endpoints protegidos, é necessário incluir um token **Bearer** no cabeçalho das requisições.\n\n**Login com User Admin:**\n```json\n{\n  \"email\": \"admin@algamoney.com\",\n  \"senha\": \"admin\"\n}\n```\n\n\n### 1. Registrar Usuário\n**Endpoint:** `POST /auth/register`\n\n**Request Body:**\n```json\n{\n  \"nome\": \"teste\",\n  \"email\": \"teste@gmail.com\",\n  \"senha\": \"teste\"\n}\n```\n\n### 2. Login\n**Endpoint:** `POST /auth/login`\n\n**Request Body:**\n```json\n{\n  \"email\": \"admin@algamoney.com\",\n  \"senha\": \"admin\"\n}\n```\n\n**Response:**\n```json\n{\n  \"token\": \"eyJhbGciOiJIUzI1NiIs...\"\n}\n```\n\n## Categorias\n\n### 3. Criar Nova Categoria\n**Endpoint:** `POST /categorias`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n**Request Body:**\n```json\n{\n  \"nome\": \"Alimentação\"\n}\n```\n\n### 4. Buscar Todas as Categorias\n**Endpoint:** `GET /categorias`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n### 5. Buscar Categoria por ID\n**Endpoint:** `GET /categorias/{id}`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n---\n\n## Pessoas\n\n### 6. Criar Nova Pessoa\n**Endpoint:** `POST /pessoas`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n**Request Body:**\n```json\n{\n  \"nome\": \"João Silva\",\n  \"endereco\": {\n    \"logradouro\": \"Rua X\",\n    \"numero\": \"123\",\n    \"bairro\": \"Centro\",\n    \"cidade\": \"São Paulo\",\n    \"estado\": \"SP\"\n  },\n  \"ativo\": true\n}\n```\n\n### 7. Buscar Todas as Pessoas\n**Endpoint:** `GET /pessoas`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n### 8. Buscar Pessoa por ID\n**Endpoint:** `GET /pessoas/{id}`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n### 9. Atualizar Pessoa\n**Endpoint:** `PUT /pessoas/{id}`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n**Request Body:**\n```json\n{\n  \"nome\": \"João Silva Editado\",\n  \"ativo\": true\n}\n```\n\n### 10. Excluir Pessoa\n**Endpoint:** `DELETE /pessoas/{id}`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n---\n\n## Lançamentos\n\n### 11. Criar Novo Lançamento\n**Endpoint:** `POST /lancamentos`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n**Request Body:**\n```json\n{\n  \"pessoa\": { \"codigo\": 7 },\n  \"categoria\": { \"codigo\": 5 },\n  \"descricao\": \"Salário\",\n  \"dataVencimento\": \"2024-07-23\",\n  \"valor\": 3000.00,\n  \"tipo\": \"RECEITA\"\n}\n```\n\n### 12. Buscar Todos os Lançamentos\n**Endpoint:** `GET /lancamentos`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n### 13. Buscar Lançamento por ID\n**Endpoint:** `GET /lancamentos/{id}`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n### 14. Excluir Lançamento\n**Endpoint:** `DELETE /lancamentos/{id}`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n---\n\n## Filtros e Paginação\n\n### 15. Buscar Lançamentos Paginados\n**Endpoint:** `GET /lancamentos/paginados?page=1\u0026size=5`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n### 16. Filtrar Lançamento por Descrição\n**Endpoint:** `GET /lancamentos/filtrar?descricao=Aluguel`\n\n**Headers:**\n- Authorization: Bearer {token}\n\n### 17. Filtrar Lançamento por Data de Vencimento\n**Endpoint:** `GET /lancamentos/filtrar?dataVencimentoDe=2024-09-10\u0026dataVencimentoAte=2024-09-15`\n\n**Headers:**\n- Authorization: Bearer {token}\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeidsondesigner%2Falgamoney-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeidsondesigner%2Falgamoney-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeidsondesigner%2Falgamoney-api/lists"}