You need to develop a RESTful API that stores survivors from a zombie apocalypse and allow them to find the closest survivor from their location.
- Create new survivors - name, gender and current location (latitude/ longitude)
- Retrieve a survivor - survivor id required
- Update a survivor
- Retrieve closest survivor from a survivor - survivor id required, you can use only latitude or longitude to calculate it. This is to help a survivor to identify who is closer.
- Mark survivor as infected - A survivor is marked infected when at least 3 others survivors report that it is infected.
For the development of the API, I used the Chaos and Order mechanism, where Chaos would be all that came to my mind about the problem and Order would be the Documentation creation process
Inside the project directory:
Run the command below to copy the .env
.
*Only for installation with Ruby on rails: You will have to change PostgreSQL credentials in .env
with based on your local credentials!
cp .env.sample .env
Make sure you have Docker and Docker-Compose installed on your machine!
*But, if you haven't installed it yet, I recommend the links below for installation using Ubuntu 20.04:
Install Docker: Click here!
Install Docker-compose: Click here!
Run to build the docker image:
docker-compose up --build
Use ctrl + c
for stop container and run for install the gems:
docker-compose run --rm app bundle install
Creating and migrating database:
docker-compose run --rm app bundle exec rails db:create db:migrate
Go up the application, run container docker:
docker-compose up
*Run tests Rspec with:
docker-compose run --rm app bundle exec rspec spec
Given that you have the Ruby(3.0.2), Rails(7.0.2.3) and DB PostgreSQL versions installed:
Install the gems
bundle install
Creating and migrating database:
rails db:create
rails db:migrate
Go up the application:
rails s
*Run tests Rspec with:
bundle exec rspec spec
After go up API, now with the domain localhost http://localhost:3000 you will have access to the root_path API.
Click here to get the collection of requests made in Postman, download and import!
Use this to help you get nearest locations!
MIT
Free Software, Hell Yeah!