{"id":20322840,"url":"https://github.com/patricks-js/simplified-payment-api","last_synced_at":"2026-04-05T21:05:31.789Z","repository":{"id":273970647,"uuid":"921478679","full_name":"patricks-js/simplified-payment-api","owner":"patricks-js","description":"A modular and scalable API for financial transactions and transaction statistics. Built with TypeScript for performance and reliability.","archived":false,"fork":false,"pushed_at":"2025-01-24T03:39:58.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T04:23:25.684Z","etag":null,"topics":["design-patterns","mongodb","nestjs","postgresql","redis","restful-api","solid","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/patricks-js.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}},"created_at":"2025-01-24T02:47:46.000Z","updated_at":"2025-01-24T03:40:01.000Z","dependencies_parsed_at":"2025-01-24T04:23:53.871Z","dependency_job_id":"611df4ae-e733-42b7-b1d2-c92f65f0cc1f","html_url":"https://github.com/patricks-js/simplified-payment-api","commit_stats":null,"previous_names":["patricks-js/simplified-payment-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patricks-js%2Fsimplified-payment-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patricks-js%2Fsimplified-payment-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patricks-js%2Fsimplified-payment-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patricks-js%2Fsimplified-payment-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patricks-js","download_url":"https://codeload.github.com/patricks-js/simplified-payment-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241827165,"owners_count":20026601,"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":["design-patterns","mongodb","nestjs","postgresql","redis","restful-api","solid","typescript"],"created_at":"2024-11-14T19:25:16.532Z","updated_at":"2025-12-30T22:49:43.298Z","avatar_url":"https://github.com/patricks-js.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Simplified Payment API\n\nEste é um desafio de backend que consiste em desenvolver uma API RESTful para gerenciamento de movimentação financeira de usuários. A aplicação permite que os usuários depositem dinheiro em suas carteiras e realizem transferências entre si de forma segura e eficiente.\n\n## 📌 Tecnologias Utilizadas\n\n- **[NestJS](https://nestjs.com/)** - Framework TypeScript para desenvolvimento de APIs escaláveis.\n- **[TypeORM](https://typeorm.io/)** - ORM para interação com bancos de dados relacionais.\n- **[PostgreSQL](https://www.postgresql.org/)** - Banco de dados utilizado na aplicação.\n- **[Docker](https://www.docker.com/)** - Containerização do ambiente.\n- **[Swagger (OpenAPI)](https://swagger.io/)** - Documentação da API.\n- **[Vitest](https://vitest.dev/)** - Testes automatizados.\n\n---\n\n## ⚙️ Funcionalidades\n\n- **Cadastro de Usuários**: Permite que usuários comuns e lojistas se cadastrem.\n- **Depósito em Carteira**: Usuários podem adicionar saldo às suas carteiras.\n- **Transferência de Valores**: Usuários comuns podem transferir dinheiro para outros usuários ou lojistas.\n- **Consulta de Estatísticas**: Permite visualizar transferências recentes.\n- **Integração com Serviços Externos**:\n  - Validação de transações via serviço autorizador.\n  - Notificação de transferências via serviço externo.\n\n---\n\n## 🚀 Como Executar o Projeto\n\n### Pré-requisitos\n\nAntes de começar, certifique-se de ter os seguintes itens instalados:\n\n- **[Node.js](https://nodejs.org/)** (v20+)\n- **[Docker e Docker Compose](https://www.docker.com/)**\n\n### Configuração\n\n1. **Clone o repositório**:\n\n   ```bash\n   git clone https://github.com/patricks-js/simplified-payment-api.git\n   cd simplified-payment-api\n   ```\n\n2. **Configure as variáveis de ambiente**:\n\n   Crie um arquivo `.env` na raiz do projeto e adicione:\n\n   ```bash\n   DATABASE_URL=postgres://user:password@localhost:5432/simplified_payment\n   AUTH_SERVICE_URL=https://util.devi.tools/api/v2/authorize\n   NOTIFICATION_SERVICE_URL=https://util.devi.tools/api/v1/notify\n   ```\n\n3. **Suba os containers do banco de dados**:\n\n   ```bash\n   docker-compose up -d\n   ```\n\n4. **Instale as dependências**:\n\n   ```bash\n   pnpm install\n   ```\n\n5. **Execute as migrações do banco de dados**:\n\n   ```bash\n   pnpm db:migrate\n   ```\n\n6. **Inicie a aplicação**:\n\n   ```bash\n   pnpm start:dev\n   ```\n\n7. **Acesse a documentação da API** via Swagger:\n\n   - `http://localhost:3000/api/docs`\n\n---\n\n## 📖 Endpoints Principais\n\n### Cadastro de Usuário\n\n**POST `/auth/register`**\n\n- Registra um usuário no sistema.\n- Tipos de usuários: **common** (pode transferir e receber) e **merchant** (somente recebe).\n\n📍 **Exemplo de request**:\n\n```json\n{\n  \"name\": \"João da Silva\",\n  \"document\": \"12345678900\",\n  \"email\": \"joao@exemplo.com\",\n  \"password\": \"senhaSegura123\",\n  \"type\": \"common\"\n}\n```\n\n---\n\n### Depósito em Carteira\n\n**POST `/wallets/deposit`**\n\n- Adiciona saldo à carteira do usuário.\n\n📍 **Exemplo de request**:\n\n```json\n{\n  \"userId\": 4,\n  \"amount\": 150.0\n}\n```\n\n---\n\n### Transferência de Valores\n\n**POST `/transactions/perform`**\n\n- Realiza transferência de dinheiro entre usuários.\n\n📍 **Exemplo de request**:\n\n```json\n{\n  \"amount\": 100.0,\n  \"senderId\": 4,\n  \"receiverId\": 15\n}\n```\n\n✅ **Fluxo da Transferência**:\n\n1. Validação dos dados.\n2. Verificação de saldo.\n3. Consulta ao serviço autorizador externo.\n4. Transação financeira segura.\n5. Notificação ao recebedor.\n\n---\n\n### Consulta de Saldo\n\n**GET `/users/balance`**\n\n📍 **Exemplo de resposta**:\n\n```json\n{\n  \"userId\": 4,\n  \"balance\": 350.0\n}\n```\n\n---\n\n### Estatísticas de Transferências\n\n**GET `/estatistica`**\n\n📍 **Exemplo de resposta**:\n\n```json\n{\n  \"count\": 10,\n  \"sum\": 1000.0,\n  \"avg\": 100.0,\n  \"min\": 50.0,\n  \"max\": 200.0\n}\n```\n\n---\n\n## ✅ Testes e Qualidade de Código\n\nO projeto inclui testes unitários e de integração para garantir a qualidade do código.\n\n### Executar testes\n\n```bash\nnpm run test\n```\n\n### Executar testes com cobertura\n\n```bash\nnpm run test:cov\n```\n\n---\n\n## 📜 Licença\n\nDistribuído sob a licença MIT. Veja o arquivo [LICENSE](./LICENSE) para mais informações.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatricks-js%2Fsimplified-payment-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatricks-js%2Fsimplified-payment-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatricks-js%2Fsimplified-payment-api/lists"}