{"id":30697587,"url":"https://github.com/henriquesebastiao/dotum","last_synced_at":"2026-04-28T21:34:15.444Z","repository":{"id":304530607,"uuid":"1018743894","full_name":"henriquesebastiao/dotum","owner":"henriquesebastiao","description":"Dotum, sistema de contas a pagar e contas a receber","archived":false,"fork":false,"pushed_at":"2025-08-02T15:06:00.000Z","size":306,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-13T17:30:44.000Z","etag":null,"topics":["api","api-rest","docker","fastapi","postgresql","pytest","sql","sqlalchemy","swagger"],"latest_commit_sha":null,"homepage":"https://dotum.henriquesebastiao.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/henriquesebastiao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2025-07-13T00:08:18.000Z","updated_at":"2025-08-02T15:06:03.000Z","dependencies_parsed_at":"2025-07-13T18:38:50.422Z","dependency_job_id":"9771eea5-80a7-4901-8642-e46368ab9ea2","html_url":"https://github.com/henriquesebastiao/dotum","commit_stats":null,"previous_names":["henriquesebastiao/dotum"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/henriquesebastiao/dotum","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriquesebastiao%2Fdotum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriquesebastiao%2Fdotum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriquesebastiao%2Fdotum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriquesebastiao%2Fdotum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/henriquesebastiao","download_url":"https://codeload.github.com/henriquesebastiao/dotum/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriquesebastiao%2Fdotum/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32400866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","api-rest","docker","fastapi","postgresql","pytest","sql","sqlalchemy","swagger"],"created_at":"2025-09-02T09:19:07.852Z","updated_at":"2026-04-28T21:34:15.427Z","avatar_url":"https://github.com/henriquesebastiao.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotum - Sistema de contas a pagar e contas a receber\n\n[![CI](https://github.com/henriquesebastiao/dotum/actions/workflows/test.yml/badge.svg)](https://github.com/henriquesebastiao/dotum/actions/workflows/test.yml)\n[![coverage](https://coverage-badge.samuelcolvin.workers.dev/henriquesebastiao/dotum.svg)](https://coverage-badge.samuelcolvin.workers.dev/redirect/henriquesebastiao/dotum)\n[![Static Badge](https://img.shields.io/badge/status-stable-%232FBF50)](https://github.com/henriquesebastiao/dotum/)\n[![Website](https://img.shields.io/website?url=https%3A%2F%2Fdotum.henriquesebastiao.com%2F)](https://dotum.henriquesebastiao.com/)\n[![GitHub Release](https://img.shields.io/github/v/release/henriquesebastiao/dotum?color=blue)](https://github.com/henriquesebastiao/dotum/releases)\n[![GitHub License](https://img.shields.io/github/license/henriquesebastiao/dotum?color=blue)](https://github.com/henriquesebastiao/dotum/blob/main/LICENSE)\n\nEste projeto é uma solução para um desafio de programação back-end, cujo objetivo é desenvolver uma aplicação para o controle de contas a pagar e contas a receber. A proposta foca na construção de uma lógica sólida, estrutura de código bem organizada e cumprimento dos requisitos funcionais.\n\nAcesso do cliente web da aplicação em [dotum-web.henriquesebastiao.com](https://dotum-web.henriquesebastiao.com).\n\nAcesse uma demonstração da API com Swagger em [dotum.henriquesebastiao.com](https://dotum.henriquesebastiao.com).\n\n### Funcionalidades\n\n- Cadastro de contas: permite lançar contas a pagar ou a receber, com valor, descrição e data de vencimento.\n- Listagem de contas: exibe todas as contas registradas, com detalhes como valor, descrição, vencimento e status (pago ou pendente).\n- Total de contas a pagar: soma o valor de todas as contas a pagar pendentes.\n- Total de contas a receber: soma o valor de todas as contas a receber pendentes.\n- Total geral de contas: calcula o total combinando as contas a pagar e a receber.\n- Autenticação de usuários com JWT (JSON Web Token).\n- Criptografiia de senha com Argon2 no banco de dados.\n\n### Tecnologias utilizadas\n\n- Python\n- FastAPI\n- PostgreSQL\n- Docker\n- SQLAlchemy\n- Pydantic\n- PyTest\n- GitHub Actions\n\n### Como executar o projeto\n\n1. Clone o repositório e entre nele com o seguinte comando:\n\n```shell\ngit clone https://github.com/henriquesebastiao/dotum \u0026\u0026 cd dotum\n```\n\n2. Crie um arquivo `.env` que conterá as variáveis de ambiente exigidas pela aplicação, você pode fazer isso apenas copiando o arquivo de exemplo:\n\n```shell\ncat .env.example \u003e .env\n```\n\n3. Agora execute o docker compose e toda aplicação será construída e iniciada em modo de desenvolvimento 🚀\n\n```shell\ndocker compose up -d\n```\n\nPronto! Você já pode abrir seu navegador e acessar as seguintes URLs:\n\n- Documentação interativa automática com Swagger UI (do backend OpenAPI): http://localhost:9003\n- Redoc, uma versão mais legível da documentação: http://localhost:9003/redoc\n\n### Executando os testes\n\nPara executar os testes com PyTest execute o seguinte comando:\n\n```shell\nmake test\n```\n\n## Exemplos de uso da API\n\nA seguir, alguns exemplos de requisições para consumir os principais endpoints da API do sistema de contas.\n\n### Autenticação (Login)\n\n```http\nPOST /token\nContent-Type: application/x-www-form-urlencoded\n\nusername=joao123\u0026password=senha_segura\n```\n\n#### Resposta\n\n```json\n{\n  \"access_token\": \"seu_token_de_acesso_aqui\",\n  \"token_type\": \"bearer\"\n}\n```\n\n### Cria usuário\n\n```http\nPOST /user/\nContent-Type: application/json\n\n{\n  \"username\": \"joao123\",\n  \"email\": \"joao@example.com\",\n  \"first_name\": \"João\",\n  \"last_name\": \"Silva\",\n  \"password\": \"senha_segura\"\n}\n```\n\n### Cadastrar conta\n\n```http\nPOST /account/\nAuthorization: Bearer seu_token\nContent-Type: application/json\n\n{\n  \"value\": 200.0,\n  \"description\": \"Pagamento de fornecedor\",\n  \"due_date\": \"2025-07-31\",\n  \"account_type\": \"payable\",\n  \"paid\": false\n}\n```\n\n### Listas contas\n\n```http\nGET /account/\nAuthorization: Bearer seu_token\n```\n\n### Atualizar conta\n\n```http\nPATCH /account/{account_id}\nAuthorization: Bearer seu_token\nContent-Type: application/json\n\n{\n  \"paid\": true\n}\n```\n\n### Deletar conta\n\n```http\nDELETE /account/{account_id}\nAuthorization: Bearer seu_token\n```\n\n### Total de contas a pagar\n\n```http\nGET /account/total-accounts-payable\nAuthorization: Bearer seu_token\n```\n\n### Total de contas a receber\n\n```http\nGET /account/total-accounts-receivable\nAuthorization: Bearer seu_token\n```\n\n### Total geral de contas\n\n```http\nGET /account/grand-total-of-accounts\nAuthorization: Bearer seu_token\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriquesebastiao%2Fdotum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhenriquesebastiao%2Fdotum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriquesebastiao%2Fdotum/lists"}