Skip to content

devpatrickfranco/GymPass-Api-SOLID

Repository files navigation

Gymspass - Backend

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.

Tecnologias Utilizadas

Node.js JavaScript TypeScript Docker PostgreSQL Prisma Vitest

Arquitetura e Boas Práticas

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.

RFs (Requisitos funcionais)

  • 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

RNs (Regras de negocio)

  • 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;

RNFs (Requesitos não funcionais)

  • 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)