Skip to content

MichaelMarcelKZ/03-nodejs-api-solid

Repository files navigation

Gym API Solid

Este projeto foi desenvolvido durante meus estudos na Trilha NodeJS da Rocketseat

Sobre o projeto

O Gym API Solid é um projeto back-end desenvolvido utilizando Design Patterns, testes automatizados End-To-End (E2E) e Unitários, além dos princípios SOLID e Integração Continua (CI)

O projeto consiste em uma aplicação onde é possível fazer check-ins em academias próximas que estão cadastradas, utilizando o conceito de aplicações como o GymPass e Totalpass, por exemplo.

Princípios, Design Patterns e Metodologias

  • Dependency Inversion Principle
  • Repository Pattern
  • Factory Pattern
  • In memory Test Database
  • TDD (Test-driven development)
  • Access Token & Refresh Token
  • RBAC (Role-Based Access Control)
  • MVCS Architecture

Tecnologias

  • Fastify Web Framework
  • JWT (Json Web Token)
  • Prisma ORM
  • PostgreSQL
  • Docker
  • Vitest & Supertest
  • TypeScript

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 seu histórico de check-ins;
  • Deve ser possível o usuário buscar academias próximas;
  • 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;

RN (Regras de Negócio)

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published