Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/diegoclair/best-route-travel
https://github.com/diegoclair/best-route-travel
Last synced: 15 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/diegoclair/best-route-travel
- Owner: diegoclair
- Created: 2020-11-10T23:37:36.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2020-11-14T02:06:46.000Z (about 4 years ago)
- Last Synced: 2023-03-06T00:21:18.991Z (almost 2 years ago)
- Language: Go
- Size: 6.33 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## π Project
Best Route Travel## Description :airplane:
With this application you can find the best route for yor travel.
The application uses dijkstra's algorithm to test all possible routes and find the cheapest route for you.### Endpoints
##### Get the cheapest route
`GET http://localhost:3000/travel/:where_from/:where_to/bestroute/`##### Add a new route
`GET http://localhost:3000/travel/`## βΆοΈ Start application π»
### β First of all:
First you need to input a csv file with the routes and prices into the app.
To do this, you need to put your csv file in the same path with the file *mysolution*.
βImportant: the file must be a csv and need have a format like this:
```csv
GRU,BRC,10
BRC,SCL,5
GRU,CDG,75
GRU,SCL,20
GRU,ORL,56
ORL,CDG,5
SCL,ORL,20
```
The format is: *WHERE FROM*, *WHERE TO* and the *PRICE* of the the trip.
To do the input of the file, you just need to run `./mysolution ` where the ** is the name of your file### The application has 2 interfaces:
#### 1 - Command line interface:
- To start this interface app, just need to run in your terminal: `$ ./mysolution cli`
#### 2 - REST API interface
- To start this rest app, just run the command in your terminal: `$ ./mysolution`
### Example:
#### 1 - Command line interface:
- When you start the app, you will see a message like this:
```shell
$ ./mysolution cli
Hi, with this program we'll find the cheapest route for your travel!
---------------------
please enter the route:
```
- You need to input the route respecting the format: `FROM-TO`
Example: `GRU-CDG` and the response will show for route the trip, with connections if it has and the total price:
`best route: GRU - BRC - SCL - ORL - CDG > $40`
#### 2 - REST API interface:
Start the app: `$ ./mysolution`
With the [Postman](https://www.postman.com/) or [Insomnia](https://insomnia.rest/) to do the requests you can:
- Get the best/cheapest route in the endpoint `http://localhost:3000/travel/:where_from/:where_to/bestroute/`
Example: `GET -> http://localhost:3000/travel/GRU/CDG/bestroute/` and the return will be a 200 http status code with the body:
```shell
{
"route": "GRU - BRC - SCL - ORL - CDG",
"price": 40
}
```
- Add a new route into the file in the endpoint `http://localhost:3000/travel/`
Example: `POST -> http://localhost:3000/travel/` and send a json body:
```shell
{
"where_from": "BRC",
"where_to": "ORL",
"price": 10
}
```
If the request as process with success the response will be a 204 http status code without a body.
## π» Tech infos:
- The architecture of files and folders was based on domain driven design.
- I tried to use the best pratices of development
- Using interfaces and contract to not a create layers dependencies
- Principles of single responsability
- Unit tests:bowtie: