Skip to content

felipe-dr/gympass-api-fastify

Repository files navigation

Gympass - API Node.js com SOLID

Projeto desenvolvido durante a formação Node.js.

Repo size Last commit on GitHub Status


Fastify Typescript Zod Dotenv Bcrypt.js ESLint Vite Vitest Supertest

Prisma

Índice

  1. Sobre
  2. Requisitos e funcionalidades
  3. Como executar
  4. Tecnologias
  5. Autor

Sobre

API desenvolvida em Node.js com o Fastify e Typescript, afim de gerenciar academias, check-ins, históricos e perfis de usuários.

Requisitos e funcionalidades

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 um usuário;
  • Deve ser possível cadastrar uma academia;

Negócios

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

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

Como executar

Se estiver utilizando outro gerenciador de pacotes, basta trocar o pnpm por npm, yarn, etc.

Pré-requisitos

Instalar as dependências do projeto.

pnpm install

Criar arquivo .env na raiz do projeto.

NODE_ENV=dev

# Auth
JWT_SECRET=gympass

# Database
DATABASE_URL="postgresql://docker:docker@localhost:5432/gympass?schema=public"

Testes

Unitário

pnpm test

E2E

pnpm test:e2e

Coverage

pnpm test:coverage

Visualização em UI

pnpm test:ui

Localmente

Criar imagem com o docker compose.

docker-compose up

Executar as migrations.

npx prisma generate
npx prisma migrate deploy

Executar a aplicação.

pnpm start:dev

Tecnologias

DICA !

Todas as demais dependências utilizadas podem ser visualizados acessando o package.json.

Autor

Avatar do autor
Felipe DR

📩

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published