We greatly appreciate your commitment to this process.
The main goal of this task is to:
- Get to know how you work
- Assess your general understanding and expertise in relevant aspects of backend development
- Ultimately, have a conversation with you to discuss the actions you performed, results, and any issues encountered.
We do not want to create a stressful situation for you or interfere with your daily activities. Therefore, you should not invest more than a few hours in executing this task.
Please feel free to contact us at any time if you have any questions.
We are confident that you will do your best, and we are looking forward to reviewing the output with you. 😊
## 💡 **Track and Trace API**
The Track and Trace page enables end users (receiver of a shipment) to monitor the status of their shipment.
Your task is to create a backend API that serves shipment data and provides users with current weather conditions at their location.
### **Guideline**
You have been provided with a CSV file (below) containing sample shipment and article data to seed your data structures. Your task is to create an API application that performs the following:
- Provides a RESTful or GraphQL Endpoint that exposes shipment and article information along with corresponding weather information.
- Allows consumers to lookup shipments via tracking number and carrier.
*Hints*:
- Integrate a suitable weather API: Choose a weather API (e.g., OpenWeatherMap, Weatherbit, or any other free API) and fetch the weather information for the respective locations.
- Limit weather data retrieval: Ensure that weather information for the same location (zip code) is fetched at most every 2 hours to minimize API calls.
- You can use any framework or library that you feel comfortable with.
*Nice to have:*
- Provide unit tests and/or integration tests for the application.
- OpenAPI docs
- Implement the API using an well-known backend framework.
### **Solution**
**Deliverables**:
- Application code, tests, and documentation needed to run the code.
Evaluation Criteria:
- Code quality and organization
- Functional correctness
- Efficiency, robustness, and adequate design choices
Discussion Points:
- What were the important design choices and trade-offs you made?
- What would be required to deploy this application to production?
- What would be required to scale this application to handle 1000 requests per second?
### Seed Data
NB: you don’t need to write an import, if that is too time consuming, you can just setup one or two sample items in the DB via any mechanism you like.