https://github.com/yabaernesto/gympassapi
API Rest GymPass
https://github.com/yabaernesto/gympassapi
ci-cd design-patterns docker eslint fastify nodejs postgresql prisma tdd testing tsup tsx typescript vitest zod
Last synced: 3 months ago
JSON representation
API Rest GymPass
- Host: GitHub
- URL: https://github.com/yabaernesto/gympassapi
- Owner: yabaernesto
- Created: 2025-02-09T18:07:12.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-03-05T19:09:04.000Z (over 1 year ago)
- Last Synced: 2025-03-29T17:17:33.766Z (about 1 year ago)
- Topics: ci-cd, design-patterns, docker, eslint, fastify, nodejs, postgresql, prisma, tdd, testing, tsup, tsx, typescript, vitest, zod
- Language: TypeScript
- Homepage:
- Size: 164 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# API Rest GymPass
API Rest GymPass, é uma aplicação desenvolvida com base nos princípios SOLID, visando a criação de uma API RESTful para gerenciamento de academias e usuários.
A aplicação permite funcionalidades como cadastro e autenticação de usuários, acesso ao perfil, registro e validação de check-ins, busca por academias próximas ou pelo nome, e cadastro de novas academias.
O projeto utiliza o Prisma como ORM para interação com o banco de dados PostgreSQL, garantindo a persistência dos dados. Além disso, implementa ferramentas como ESLint para análise estática do código, tsup para empacotamento e compilação de projetos TypeScript, bcryptjs para criptografia de senhas e dotenv para gestão de variáveis de ambiente.
## RFs (Requisitos funcionais)
- [x] Deve ser possível se cadastrar
- [x] Deve ser possível se autenticar
- [x] Deve ser possível obter o perfil de um usuário logado
- [x] Deve ser possível obter o número de check-ins realizados pelo usuário logado
- [x] Deve ser possível o usuário obter seu histórico de check-ins
- [x] Deve ser possível o usuário buscar academias próximas (até 10km)
- [x] Deve ser possível o usuário buscar academias pelo nome
- [x] Deve ser possível o usuário realizar check-in em uma academia
- [x] Deve ser possível validar o check-in de um usuário
- [x] Deve ser possível cadastrar uma academia
## RNs (Regras de negócios)
- [x] O usuário não deve poder se cadastrar com um e-mail duplicado
- [x] O usuário não pode fazer 2 check-ins no mesmo dia
- [x] O usuário não pode fazer check-in se não estiver perto (100m) da academia
- [x] O check-in só pode ser validado até 20 minútos após criado
- [x] O check-in só pode ser validado por administradores
- [x] A academia só pode ser cadastrada por administradores
## RNFs (Requisitos não-funcionais)
- [x] A senha do usuário precisa estar criptografada
- [x] Os dados da aplicação precisam estar persistidos em um banco PostgreSQL
- [x] Todas listas de dados precisam estar paginadas com 20 itens por página
- [x] O usuário deve ser identificado por um JWT (JSON Web Token)