Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bastosmatheus/api-agency-travel
Esse projeto consiste em uma api para uma agência de viagens de ônibus, mostrando todo o processo para efetuar a compra de uma passagem, desde a criação do usuário até a escolha de um destino para viajar. A aplicação faz integração com a api maps do google, onde calcula a duração da viagem, distancia, data/horário de chegada, entre outras infos.
https://github.com/bastosmatheus/api-agency-travel
clean-architecture maps-api nodejs pg-promise typescript vitest
Last synced: about 2 months ago
JSON representation
Esse projeto consiste em uma api para uma agência de viagens de ônibus, mostrando todo o processo para efetuar a compra de uma passagem, desde a criação do usuário até a escolha de um destino para viajar. A aplicação faz integração com a api maps do google, onde calcula a duração da viagem, distancia, data/horário de chegada, entre outras infos.
- Host: GitHub
- URL: https://github.com/bastosmatheus/api-agency-travel
- Owner: bastosmatheus
- Created: 2024-06-24T21:11:54.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-08-29T21:34:07.000Z (4 months ago)
- Last Synced: 2024-08-29T23:45:55.750Z (4 months ago)
- Topics: clean-architecture, maps-api, nodejs, pg-promise, typescript, vitest
- Language: TypeScript
- Homepage:
- Size: 251 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.MD
Awesome Lists containing this project
README
api-agency-travel 🚌
## Descrição 📜
Esse projeto consiste em uma api para uma agência de viagens de ônibus, mostrando todo o processo para efetuar a compra de uma passagem, desde a criação do usuário até a escolha de um destino para viajar. A aplicação faz integração com a api maps do google, onde calcula a duração da viagem, distancia, data/horário de chegada, entre outras informações. As viagens podem ser visualizadas mesmo sem o cadastro, agora para comprar uma passagem, é necesário o login no sistema. A criação, edição ou exclusão das viagens e/ou rodoviárias é feita apenas por usuários administradores (validado através do token jwt). O projeto foi feito utilizando arquitetura limpa e também foram criados testes unitários com o vitest.
## Tecnologias 🖥️
Este projeto está utilizando as seguintes tecnologias:
- [Node.js](https://nodejs.org/en)
- [Express](https://www.expressjs.com/pt-br/)
- [Pg-promise](https://github.com/vitaly-t/pg-promise)
- [Vitest](https://vitest.dev/)
- [JWT](https://jwt.io/)
- [Zod](https://zod.dev/)## Endpoints 📌
A seguir estão as rotas da aplicação (a maioria só pode ser acessada com a validação do token jwt, além das rotas privadas, que apenas administradores podem acessar):
### Usuário
- **GET** `/users`: lista todos os usuários.
- **GET** `/users/:id`: lista um usuário buscando pelo id.
- **GET** `/users/email?email=`: lista um usuário buscando pelo email (query string).
- **GET** `/users/cpf?cpf=`: lista um usuário buscando pelo cpf (query string).
- **GET** `/users/telephone?telephone=`: lista um usuário buscando pelo telephone (query string).
- **POST** `/users`: cria um novo usuário.
- **POST** `/users/login`: faz o login.
- **PATCH** `/users/:id/name`: atualiza o nome do usuário.
- **PATCH** `/users/:id/telephone`: atualiza o telefone do usuário.
- **PATCH** `/users/:id/password`: atualiza a senha do usuário.
- **DELETE** `/users/:id`: deleta um usuário.### Rodoviária
- **GET** `/bus-stations`: lista todas as rodoviárias.
- **GET** `/bus-stations/city?city=`: lista as rodoviárias da cidade informada (query string).
- **GET** `/bus-stations/name?name=`: lista uma rodoviária buscando pelo nome.
- **GET** `/bus-stations/:id=`: lista uma rodoviária buscando pelo id.
- **POST** `/bus-stations`: registra uma nova rodoviária.
- **DELETE** `/bus-stations`: deleta uma rodoviária.### Viagem
- **GET** `/travels`: lista todas as viagens.
- **GET** `/travels/origin?city=`: lista as viagens com origem na cidade informada (query string).
- **GET** `/travels/destination?city=`: lista as viagens com destino na cidade informada (query string).
- **GET** `/travels/date?date=&city=`: lista as viagens com origem na cidade informada em determinada data (query string).
- **GET** `/travels/:id`: lista uma viagem buscando pelo id.
- **POST** `/travels`: cria uma nova viagem.
- **DELETE** `/travels/:id`: deleta uma viagem.### Passageiro
- **GET** `/passengers`: lista todos os passageiros.
- **GET** `/passengers/:id`: lista um passageiro buscando pelo id.
- **POST** `/passengers`: cria um novo passageiro.
- **DELETE** `/passengers/:id`: deleta um passageiro.## Como rodar esse projeto? 💿
Pre-requisitos
- [Node.js](https://nodejs.org/en)
- [PostgreSQL](https://www.postgresql.org/)
- [Git](https://git-scm.com/)
- [Github](https://github.com/)Clonagem
```bash
# clone o repositório
$ git clone https://github.com/bastosmatheus/api-restaurant.git
```Configuração do arquivo .env
```bash
# arquivo .env
DATABASE_URL=postgresql://username:password@localhost:5432/yourdatabase?schema=public
API_KEY=YOUR_API_GOOGLE_KEY
SECRET_KEY=YOUR_SECRET_KEY_JWT
```Projeto
```bash
# depois de clonado, procure a pasta do projeto
$ cd api-agency-travel# instale todas as dependências
$ npm install# execute o projeto
$ npm run dev
```