2.2 KiB
Background
As a Canadian Sheep Federation intern, you will be tasked with creating and developing web applications and APIs. This take home assignment is designed to test your knowledge of the concepts involved.
You will create the following:
- An API that writes to a data store
- A web application that consumes the API you've developed and a public API of your choosing
If you've never created an API or a web-application, don't worry. Give it your best shot and leave detailed comments and documentation for what you don't know and what you think it should do.
This task should take approximately two hours
Select your public API from here: https://github.com/public-apis/public-apis
API
You must build a REST-ful API that represents some sort of form. The form should mesh well with the public API you've chosen. For instance, if you've chosen a movie API for your public API, this form could be a survey about a specific movie or movies of a certain director.
The form must have three (3!) fields minimum.
The language and framework in which the API is implemented is up to you. At the CSF, we use Node.js and express.
The API must store the form data in some permanent data store. At the CSF, we use mongodb. A good option for this assessment could be sqlite.
The API must have the following endpoints:
- POST /: Takes in the form and stores it in your chosen data store. Should return the id of the newly created form response.
- GET /{id}: Returns the form corresponding to the id. E.g. GET /1 would return the form corresponding to the id 1
- GET /: Returns all responses to the form
Be sure to document your code thoroughly and include instructions for how to run your api.
Web application
You must build a web application that:
- Allows users to query the public API you've selected
- Allows users to enter responses to the form you designed earlier and view the other responses to the form
Bonus Points
Discuss how the application and api could be extended and improved
Discuss how the application and api should be deployed
Intuitive design and user interface
Submission
Fork this repository and create a pull request for your branch back into this repo once completed.