{"id":30695997,"url":"https://github.com/1manuelc/atm-ts","last_synced_at":"2026-05-14T20:33:26.144Z","repository":{"id":308057533,"uuid":"1031484996","full_name":"1manuelc/atm-ts","owner":"1manuelc","description":"Um sistema de caixa eletrônico desenvolvido em TypeScript com interface de linha de comando e testes BDD usando Cucumber.","archived":false,"fork":false,"pushed_at":"2025-08-08T20:45:22.000Z","size":59,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-02T07:42:19.731Z","etag":null,"topics":["bdd","cucumber","gherkin","prisma-orm","sqlite","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/1manuelc.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":"2025-08-03T20:52:02.000Z","updated_at":"2025-08-09T14:27:49.000Z","dependencies_parsed_at":"2025-08-03T22:43:31.422Z","dependency_job_id":null,"html_url":"https://github.com/1manuelc/atm-ts","commit_stats":null,"previous_names":["1manuelc/atm-ts"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/1manuelc/atm-ts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1manuelc%2Fatm-ts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1manuelc%2Fatm-ts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1manuelc%2Fatm-ts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1manuelc%2Fatm-ts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1manuelc","download_url":"https://codeload.github.com/1manuelc/atm-ts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1manuelc%2Fatm-ts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33042218,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"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":["bdd","cucumber","gherkin","prisma-orm","sqlite","typescript"],"created_at":"2025-09-02T07:32:57.941Z","updated_at":"2026-05-14T20:33:26.139Z","avatar_url":"https://github.com/1manuelc.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ATM TypeScript\n\nUm sistema de caixa eletrônico desenvolvido em TypeScript com interface de linha de comando e testes BDD usando Cucumber.\n\n## 🚀 Funcionalidades\n\n- **Gestão de Contas**: Criar, editar e deletar contas\n- **Operações Bancárias**:\n  - Consultar saldo\n  - Sacar dinheiro\n  - Depositar dinheiro\n  - Transferir entre contas\n- **Interface Interativa**: Menu em português com opções numeradas\n- **Banco de Dados**: SQLite com Prisma ORM\n- **Testes BDD**: Cucumber para testes de comportamento\n\n## 📋 Pré-requisitos\n\n- Node.js (versão 16 ou superior)\n- npm ou yarn\n\n## 🛠️ Instalação\n\n1. **Clone o repositório**\n\n   ```bash\n   git clone \u003curl-do-repositorio\u003e\n   cd atm-ts\n   ```\n\n2. **Instale as dependências**\n\n   ```bash\n   npm install\n   ```\n\n3. **Configure o banco de dados**\n\n   ```bash\n   npm run setup\n   # Gera o cliente Prisma e Executa as migrações do banco de dados\n   ```\n\n## 🎯 Como Executar\n\n### Executar a aplicação\n\n```bash\nnpm start\n```\n\n### Executar os testes BDD\n\n```bash\n# Executar testes com logs detalhados\nnpm run test:bdd\n\n# Executar testes sem logs (apenas progresso)\nnpm run test:bdd:quiet\n```\n\n## 📖 Como Usar\n\nApós executar `npm start`, você verá um menu interativo com as seguintes opções:\n\n1. **Consultar saldo** - Visualizar o saldo de uma conta\n2. **Sacar** - Realizar saque de uma conta\n3. **Transferir** - Transferir dinheiro entre contas\n4. **Depositar** - Fazer depósito em uma conta\n5. **Criar conta** - Criar uma nova conta\n6. **Editar conta** - Modificar dados de uma conta existente\n7. **Deletar conta** - Remover uma conta\n8. **Limpar terminal** - Limpar a tela do terminal\n9. **Sair** - Encerrar a aplicação\n\n## 🗄️ Estrutura do Banco de Dados\n\nO projeto utiliza SQLite com duas tabelas principais:\n\n### Account (Conta)\n\n- `id`: Identificador único (auto-incremento)\n- `name`: Nome do titular da conta\n- `balance`: Saldo atual da conta\n\n### Transaction (Transação)\n\n- `id`: Identificador único (auto-incremento)\n- `amount`: Valor da transação\n- `fromId`: ID da conta de origem (opcional)\n- `toId`: ID da conta de destino (opcional)\n- `timestamp`: Data e hora da transação\n\n## 🧪 Testes\n\nO projeto inclui testes BDD (Behavior Driven Development) usando Cucumber. Os testes estão localizados em:\n\n- **Features**: `tests/features/`\n- **Steps**: `tests/features/steps/`\n- **Utilitários**: `tests/utils/`\n\n### 🚫 Suprimir Logs Durante os Testes\n\nO projeto inclui um sistema de logger que pode ser controlado para suprimir logs durante os testes:\n\n- **Logs automáticos**: Os logs são automaticamente suprimidos durante a execução dos testes\n- **Formato progress**: Use `npm run test:bdd:quiet` para executar testes sem logs detalhados\n- **Formato pretty**: Use `npm run test:bdd` para executar testes com logs detalhados\n\nO sistema de logger (`src/utils/logger.ts`) controla automaticamente a exibição de mensagens durante os testes.\n\n## 📁 Estrutura do Projeto\n\n```\natm-ts/\n├── src/\n│   ├── controllers/     # Controladores da aplicação\n│   ├── services/        # Lógica de negócio\n│   ├── utils/           # Utilitários\n│   └── index.ts         # Ponto de entrada\n├── tests/\n│   ├── features/        # Arquivos .feature do Cucumber\n│   │   └── steps/       # Testes para as features\n│   └── utils/           # Utilitários para testes\n├── prisma/\n│   ├── schema.prisma    # Schema do banco de dados\n│   └── migrations/      # Migrações do banco\n└── package.json\n```\n\n## 🔧 Comandos Úteis\n\n### Desenvolvimento\n\n```bash\n# Gerar cliente Prisma\nnpx prisma generate\n\n# Criar nova migração\nnpx prisma migrate dev --name nome_da_migracao\n\n# Resetar banco de dados\nnpx prisma migrate reset\n\n# Abrir interface do Prisma Studio\nnpm run prisma:studio\n```\n\n### Testes\n\n```bash\n# Executar todos os testes\nnpm run test:bdd\n\n# Executar testes com relatório HTML (faz isso por padrão)\nnpx cucumber-js --format html:reports/report.html\n```\n\n## 🐛 Solução de Problemas\n\n### Erro de conexão com banco de dados\n\n```bash\n# Recriar o banco de dados\nnpx prisma migrate reset\nnpx prisma generate\n```\n\n### Erro de dependências\n\n```bash\n# Limpar cache e reinstalar\nrm -rf node_modules package-lock.json\nnpm install\n```\n\n### Erro de TypeScript\n\n```bash\n# Verificar tipos\nnpx tsc --noEmit\n```\n\n## 📝 Licença\n\nEste projeto está sob a licença ISC.\n\n## 🤝 Contribuição\n\n1. Faça um fork do projeto\n2. Crie uma branch para sua feature (`git checkout -b feature/AmazingFeature`)\n3. Commit suas mudanças (`git commit -m 'Add some AmazingFeature'`)\n4. Push para a branch (`git push origin feature/AmazingFeature`)\n5. Abra um Pull Request\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1manuelc%2Fatm-ts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1manuelc%2Fatm-ts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1manuelc%2Fatm-ts/lists"}