🏋️♀️ 💪 Api feita usando fastify e prisma para gerenciar check-ins de academia
Node.js (versão 16.x ou superior)
TypeScript (versão 5 ou superior)
- Clone o repositório:
git clone https://github.com/mateuschaves/gym-nodejs.git
- Instale as dependências:
npm install
- Crie um arquivo
.env
usando o modelo de exemplo.env.example
- Execute as migrations usando o comando:
npx prisma migrate deploy
Ao executar as migrations, uma seed popula o banco com um usuário ADMIN
com as seguintes credenciais:
{
"email": "[email protected]",
"password": "123456"
}
Obs: A senha é gerada usando o secret gym
nas configurações do JWT
Inicie o banco de dados utilizando o docker compose:
docker-compose up --build
Para iniciar o servidor, utilize o seguinte comando:
npm run start:dev
Execute os testes unitários utilizando o seguinte comando:
npm run test
Execute os testes e2e utilizando o seguinte comando:
npm run test:e2e
- 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 um usuário;
- Deve ser possível cadastrar uma academia;
- O usuário não deve poder se cadastrar com um e-mail duplicado;
- O usuário não pode fazer 2 check-ins no mesmo dia;
- O usuário não pode fazer check-in se não estiver perto (100m) da academia;
- O check-in só pode ser validado até 20 minutos após ser criado;
- O check-in só pode ser validado por administradores;
- A academia só pode ser cadastrada por administradores;
- 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);
- Faça o fork do projeto
- Crie sua feature branch (
git checkout -b feature/nome-da-feature
) - Commit suas mudanças (
git commit -am 'Adicionando nova feature'
) - Faça o push para o branch (
git push origin feature/nome-da-feature
) - Crie um novo Pull Request