Uma API REST robusta e completa inspirada no Gympass, desenvolvida com Node.js e TypeScript, permitindo o gerenciamento de usuários, academias e check-ins com autenticação JWT e validação de proximidade.
├── src/
│ ├── @types/ # Definições de tipos TypeScript
│ ├── env/ # Configurações de ambiente
│ ├── http/ # Camada HTTP (controllers, middlewares)
│ │ ├── controllers/
│ │ │ ├── users/ # Controllers de usuários
│ │ │ ├── gyms/ # Controllers de academias
│ │ │ └── check-ins/ # Controllers de check-ins
│ │ └── middlewares/ # Middlewares da aplicação
│ ├── lib/ # Bibliotecas e configurações
│ ├── repositories/ # Repositories (camada de dados)
│ ├── use-cases/ # Casos de uso (regras de negócio)
│ │ ├── factories/ # Factories dos use cases
│ │ └── errors/ # Erros customizados
│ ├── utils/ # Utilitários
│ ├── app.ts # Configuração do Fastify
│ └── server.ts # Servidor principal
├── prisma/
│ ├── schema.prisma # Schema do banco de dados
│ └── migrations/ # Migrações do banco
├── coverage/ # Relatórios de cobertura de testes
├── build/ # Arquivos compilados
└── docker-compose.yml # Configuração do Docker
- ✅ Cadastro de usuários com validação
- ✅ Autenticação JWT
- ✅ Perfil do usuário
- ✅ Sistema de roles (ADMIN/MEMBER)
- ✅ Hash seguro de senhas com bcrypt
- ✅ Cadastro de academias (apenas ADMIN)
- ✅ Busca de academias por nome
- ✅ Busca de academias próximas (por geolocalização)
- ✅ Realizar check-in em academias
- ✅ Validação de proximidade (máx. 100m)
- ✅ Histórico de check-ins do usuário
- ✅ Métricas de check-ins
- ✅ Validação de check-ins (apenas ADMIN)
- ✅ Regra: apenas 1 check-in por dia
npm run dev
- Inicia o servidor em modo desenvolvimentonpm run build
- Compila o projetonpm start
- Inicia o servidor em produçãonpm run lint
- Executa o linternpm test
- Executa os testes unitáriosnpm run test:e2e
- Executa os testes E2Enpm run test:coverage
- Gera relatório de cobertura
Feito com ❤️ por Samuel Abrão