https://github.com/mgckaled/ignite-nodejs-api-solid
Repositório do terceiro projeto da trilha Ignite Node.js 2022 desenvolvido pela Rocketseat Education.
https://github.com/mgckaled/ignite-nodejs-api-solid
design-patterns docker fastify jwt nodejs prisma rbac refresh-token solid typescript
Last synced: 2 months ago
JSON representation
Repositório do terceiro projeto da trilha Ignite Node.js 2022 desenvolvido pela Rocketseat Education.
- Host: GitHub
- URL: https://github.com/mgckaled/ignite-nodejs-api-solid
- Owner: mgckaled
- License: mit
- Created: 2023-09-01T18:06:11.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-11-16T17:31:19.000Z (over 2 years ago)
- Last Synced: 2025-06-15T10:42:18.345Z (about 1 year ago)
- Topics: design-patterns, docker, fastify, jwt, nodejs, prisma, rbac, refresh-token, solid, typescript
- Language: TypeScript
- Homepage:
- Size: 311 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Ignite Node.js - `API SOLID`
[**Projeto**](#projeto) **•**
[**Tecnologias**](#tecnologias) **•**
[**Licença**](#licença)
## Projeto
Foi desenvolvido uma aplicação de check-ins para academias.
**Conceitos e recursos utilziados**:
- SOLID
- Design Patterns
- Docker para iniciar o banco de dados,
- JWT
- Refresh Tokens
- RBAC
### 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 o 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ócio)
- [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 ser 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);
### Comandos utilizados no projeto
```powershell
# iniciar projeto
$ npm init -y
# criar tsconfig.json
npx tsc --init
# iniciar prisma
npx prisma init
# executar tipagem / integração do prisma
npx prisma generate
# subir docker container ccom banco de dados postgresql
docker run --name api-solid-pg -e POSTGRESQL_USERNAME=docker -e POSTGRESQL_PASSWORD= -e POSTGRESQL_DATABASE=apisolid -p 5432:5432 bitnami/postgresql
# exibir containers
docker ps
# todos os container já criados pelo desenvolvedor
docker ps -a
# executar imagem do banco de dados postgresql no docker
docker start api-solid-pg
# ou
docker start
# parar imagem do banco de dados postgresql no docker
docker stop api-solid-pg
# ou
docker stop
# executar migração do banco de dados
npx prisma migrate dev
# exibir intarface do banco de dados
npx prisma studio
# exibir coverage de testes (scripts do package.json)
# abrir o arquivo index.html dentro da pasta 'coverage' gerada
npm run test:coverage
```
Análises, exercícios e comentários sobre o código [AQUI](/.github/docs/index.md).
## Tecnologias
## Licença
Distribuído sob a licença *MIT*. Veja [LICENSE](LICENSE) para mais informações. 
---
2023 - Marcel Kaled