Sobre o Projeto
Este é o backend de um aplicativo inspirado no Gympass, focado em proporcionar uma experiência completa de gestão de academias e check-ins para usuários e administradores. O sistema foi desenvolvido com funcionalidades robustas para cadastro, autenticação, busca e check-in de academias, além de validação de administradores e regras específicas para uso eficiente.
O objetivo deste projeto é criar uma API que permita o gerenciamento de academias e check-ins de maneira eficiente e segura, utilizando as melhores práticas de desenvolvimento de software moderno.
Este projeto foi desenvolvido seguindo boas práticas de desenvolvimento de software, com foco em:
- Código limpo e organizado, utilizando princípios SOLID;
- Testes automatizados com Vitest(Unitários e E2E), garantindo confiabilidade das funcionalidades;
- Integração de banco de dados com Prisma, facilitando a comunicação e operações no PostgreSQL;
- Segurança: Utilização de JWT para autenticação e senhas criptografadas para proteção dos dados dos usuários;
- Containerização: Configuração do ambiente de desenvolvimento e produção com Docker, garantindo consistência entre os ambientes.
- Deve ser possivel se cadastrar;
- Deve ser possivel se authenticar;
- Deve ser possivel obter o perfil de um usuario logado;
- Deve ser possivel obter o numero de check-ins realizados pelo usuario;
- Deve ser possivel o usuario obter seu historico de check-ins;
- Deve ser possivel o usuario buscar academias proximas (até 10km) ;
- Deve ser possivel o usuario buscar academias pelo nome;
- Deve ser possivel o usuario realizar check-in em uma academia;
- Deve ser possivel validar o check-in de um usuario;
- Deve ser possivel cadastrar uma academia
- O usuario não deve poder se cadastrar com um email duplicado;
- O usuario não deve poder fazer check-in no mesmo dia;
- O usuario não pode fazer check-in se não estiver perto(100m) da academia;
- O check-in só pode ser valido até 20 minutos depois de criado;
- O check-in só pode ser validado por administradores;
- A academia só podo ser cadastrada por administradores;
- A senha do usuario precisa estar criptografado;
- Os dados da aplicação precisam estar presistidos em um banco PostgreSQL;
- Todas as listas de dados precisam estar paginadas com 20 itens por pagina;
- O usuario deve ser identificado por um JWT (JSON Web Token)