Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gabrielborges2000/api-solid
Uma aplicação inspirada no GymPass, que permite aos usuários realizar check-ins em academias, buscar academias próximas, e mais. Esta aplicação foi desenvolvida com o objetivo de proporcionar uma experiência intuitiva e eficiente para os usuários que desejam frequentar academias de forma prática e conveniente.
https://github.com/gabrielborges2000/api-solid
docker-compose fastify jwt nodejs postgresql solid swagger test test-e2e typescript vitests zod
Last synced: 26 days ago
JSON representation
Uma aplicação inspirada no GymPass, que permite aos usuários realizar check-ins em academias, buscar academias próximas, e mais. Esta aplicação foi desenvolvida com o objetivo de proporcionar uma experiência intuitiva e eficiente para os usuários que desejam frequentar academias de forma prática e conveniente.
- Host: GitHub
- URL: https://github.com/gabrielborges2000/api-solid
- Owner: GabrielBorges2000
- License: mit
- Created: 2023-11-21T11:55:01.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-06-29T18:16:01.000Z (7 months ago)
- Last Synced: 2024-06-29T19:29:32.306Z (7 months ago)
- Topics: docker-compose, fastify, jwt, nodejs, postgresql, solid, swagger, test, test-e2e, typescript, vitests, zod
- Language: TypeScript
- Homepage:
- Size: 383 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# API SOLID - Ignite GymPass
## 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);## Tecnologias Utilizadas
- Node.js
- Fastify
- JWT
- Zod
- Swagger Fastify UI
- Docker/Postgresql (para o banco de dados)
- Vitest (Testes E2E)
- Arquitetura Solid
- TDD
- CI - Github Actions## Como Rodar o Projeto
1. Clone o repositório:
```bash
git clone https://github.com/GabrielBorges2000/api-solid.git
```
2. Navegue até o diretório do projeto:
```bash
cd api-solid
```
3. Instale as dependências:
```bash
pnpm install
```
4. Inicialize o container docker com o banco de dados Postgresql:
```bash
pnpm docker:start
```5. Configure o schema do banco de dados com o prisma:
```bash
pnpm db:migrate
```6. Abra o navegador e acesse a documentação do swagger e teste as rotas:
```bash
http://localhost:3333/docs
```
## Licença
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.