Git Product home page Git Product logo

ifood-backend-advanced-test's Introduction

iFood Backend Advanced Test

Create a micro-service able to accept RESTful requests receiving as parameter either city name or lat long coordinates and returns a playlist (only track names is fine) suggestion according to the current temperature.

Business rules

  • If temperature (celcius) is above 30 degrees, suggest tracks for party
  • In case temperature is above 15 and below 30 degrees, suggest pop music tracks
  • If it's a bit chilly (between 10 and 14 degrees), suggest rock music tracks
  • Otherwise, if it's freezing outside, suggests classical music tracks

Hints

You can make usage of OpenWeatherMaps API (https://openweathermap.org) to fetch temperature data and Spotify (https://developer.spotify.com) to suggest the tracks as part of the playlist.

Non functional requirements

As this service will be a worldwide success,it must be prepared to be fault tolerant,responsive and resilient.

Use whatever language, tools and frameworks you feel comfortable to.

Also, briefly elaborate on your solution, architecture details, choice of patterns and frameworks.

Fork this repository and submit your code.

Solution

General

The solution was made in Java 8 with the Eclipse IDE. Almost all the frameworks were provided by spring, being the most important Spring-Boot and Spring Web MVC. Maven was used as dependency management and build tool. As suggested, the weather information is provided by Open Weather Map and music suggestions are provided by Spotify.

Architectural details

The micro-service was elaborated in 3 layers:

  • Controller: Incoming requests mapping.
  • Service: Bussiness logic and basic validation.
  • Retriever: External services information retrieving.

Instructions

In order to get the service runing, use the spring-boot maven plugin: just type mvn spring-boot:run in the terminal on the project's root directory. The server will be up on port 8080.

Two services are going to be exposed:

  • Search for city name;
    • Sample request http://localhost:8080/suggestion/city-name/sydney.
    • If a city cannot be found, a BAD REQUEST (400) will be returned with an error message.
  • Search for geographic coordinates.
    • Sample request http://localhost:8080/suggestion/lat/-26.6/lon/-27.
    • If the coordinates values are invalid (higher than 180 or below -180), a BAD REQUEST (400) will be retuning with an error message containing the invalid value.

Both services return the temperature of the found location, the music style associated and a list of track names.

ifood-backend-advanced-test's People

Contributors

antoniolmm avatar bbarin avatar poshika avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.