/gym-pass

A GymPass API é uma aplicação que permite o gerenciamento de check-ins em academias. Com ela, é possível realizar o cadastro de usuários e academias

Primary LanguageTypeScript

💪🎟️ Gym Pass

Logo Fastify Logo Node.js Logo Prisma Logo Vitest

A GymPass API é uma aplicação que permite o gerenciamento de check-ins em academias. Com ela, é possível realizar o cadastro de usuários e academias, além de permitir a busca de academias por nome.


🧭 Como rodar o projeto

Inicie o banco de dados

docker-compose up -d

Instale as dependências

npm install

Crie e preencha as variáveis de ambiente no arquivo .env

cp .env.example .env

Prepare o Husky

npm run prepare

Execute as migrations

npm run db:migrate-dev

Rode o projeto

npm run start:dev

Funcionalidades do projeto

RFs (Requisitos funcionais)

  • Deve ser possível se cadastrar;
  • Deve ser possível se autenticar;
  • Deve ser possível obter o perfil de um usuário logado;
  • Deve ser possível obter o número de check-ins realizados pelo usuário logado;
  • Deve ser possível o usuário obter o seu histórico de check-ins;
  • Deve ser possível o usuário buscar academias próximas (até 10km);
  • Deve ser possível o usuário buscar academias pelo nome;
  • Deve ser possível o usuário realizar check-in em uma academia;
  • Deve ser possível validar o check-in de usuário;
  • Deve ser possível cadastrar uma academia;

RNs (Regras de negócio)

  • O usuário não deve poder se cadastrar com um e-mail duplicado;
  • O usuário não poder fazer 2 check-ins no mesmo dia;
  • O usuário não pode fazer check-in se não tiver perto (100m) da academia;
  • O check-in só pode ser validado até 20 minutos após criado;
  • O check-in só pode ser validado por administradores;
  • A academia só pode ser cadastrada por administradores;

RNFs (Requisitos não-funcionais)

  • A senha do usuário precisa estar criptografada;
  • Os dados da aplicação precisam estar persistidos em um banco PostgreSQL;
  • Todas listas de dados precisam estar paginadas com 20 itens por página;
  • O usuário deve ser identificado por um JWT (JSON Web Token)

🗃️ Diagrama Entidade Relacionamento

🔜 Próximas etapas

  • Criar documentação API
  • Botão Insomnia

🧪 Testes

Utilize o comando a seguir para executar os testes unitários

npm run test:unit

Utilize o comando a seguir para executar os testes e2e

npm run test:e2e