https://github.com/renanfachin/rs_ignite_api-solid
Módulo 3 - Bootcamp de especialização em nodeJS (IGNITE) pela rocketseat. Uma aplicação criada em nodejs utilizando typescript, PRISMA, docker, postgreSQL, testes unitários e e2e.
https://github.com/renanfachin/rs_ignite_api-solid
docker ignite ignite-nodejs ignite-rocketseat nodejs postgresql prisma
Last synced: about 2 months ago
JSON representation
Módulo 3 - Bootcamp de especialização em nodeJS (IGNITE) pela rocketseat. Uma aplicação criada em nodejs utilizando typescript, PRISMA, docker, postgreSQL, testes unitários e e2e.
- Host: GitHub
- URL: https://github.com/renanfachin/rs_ignite_api-solid
- Owner: RenanFachin
- Created: 2023-04-25T17:07:12.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-05-01T21:05:52.000Z (about 3 years ago)
- Last Synced: 2025-03-25T12:31:10.222Z (about 1 year ago)
- Topics: docker, ignite, ignite-nodejs, ignite-rocketseat, nodejs, postgresql, prisma
- Language: TypeScript
- Homepage:
- Size: 231 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# APP - GymPass style app
API para usuário fazer check-in em academias. Conceitos presentes no projeto `SOLID`, `DESIGN PATTERNS`, `DOCKER`, `JWT`, `REFRESH TOKEN`, `RBAC`
Linguagem: `TYPESCRIPT`
Banco de dados utilizado: `POSTGRESQL`
ORM: `PRISMA`
Testes: `VITEST`
CI: `Github actions`
Aplicação com docker para gerar o banco de dados
## Requisitos funcionais
O que é possível que o usuário faça na aplicação.
- [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;
- [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;
## Regras de negócio
Determina condições que serão aplicadas para cada requisito funcional.SEMPRE é associada à um requisito funcional
- [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 minutos após criado;
- [x] O check-in só pode ser validado por administradores;
- [x] A academia só pode ser cadastrada por
## Requisitos não funcionais
Requisitos que não partem do cliente, são requisitos mais técnicos. ex: Qual banco de dados será utilizado.
- [x] A senha do usuário precisa estar criptografada;
- [x] Os dados da aplicação precisam estar persistido 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);
## Diagrama ERD
## Instalação
```sh
# Faça o clone do repotório
git clone git@github.com:RenanFachin/RS_IGNITE_api-solid.git
# Instalar as dependências do projeto
npm install
# Rodar as migrations do projeto para criar o banco de dados
npx prisma migrate dev
# Executando o projeto no ambiente de desenvolvimento
npm run dev
```
## Instalação do banco de dados
```sh
# Subindo o banco de dados com docker
docker compose up -d
```