Welcome! We're glad you are applying to the fullstack position in the Application Experience team! 🚀
The goal of this assignment is to evaluate:
- ability to solve problems
- ability to architect a (small) fullstack application
- communicate the solution and justify decisions
To that purpose, we expect you to create an app comprised of 2 parts:
- backend
- communicates with the frontend via APIs
- handles storing of items in a DB
- indexes items within Algolia
- frontend
- displays a search page
- displays a form to add/edit/delete records
The app is going to be an admin page for listing/editing/adding movies.
Please use this data set: https://gist.github.com/praagyajoshi/3a1c652667920924e6e399bf039d339d
Note: Algolia will never reuse your work. This assignment is purely for evaluation purposes.
Feel free to use any technology you are comfortable with (Rails, Express, etc.)!
The backend needs to support the following endpoints:
POST
/api/v1/movies
Adds a movie to the DB and indexes it within Algolia.
Sample response:{ "uuid": "2b9ad689-7a21-442a-a7bc-65167dc5221a" }
PUT
/api/v1/movies/:uuid
Updates a movie in the DB and indexes it within AlgoliaDELETE
/api/v1/movies/:uuid
Deletes a movie from the DB and Algolia
The frontend app should be a React based SPA. While TypeScript is not required, it is highly encouraged.
The app should include:
- A search page
- Has a search box to search across all the movies
This search should be powered by Algolia - Shows the results as a grid or a list
- Supports editing and deleting the movies
- Has a search box to search across all the movies
- Ability to add a new movie
- Can be implemented as a modal or as a separate page
- Includes form validation
In no particular order, we will pay attention to:
- Quality of the code
- UX of the frontend app (UI is not super important)
- Architecture of the backend app
- Attention to detail and handling errors/edge cases
- Ability to add meaningful tests
- Setup experience of the fullstack app
- Create a private repository on Github
- Share the repository with the recruiter
- We will get back to you with the people who should be given access to the repository
Please email us if you're unsure about anything.
Asking questions does not impact your evaluation.
Good luck! 🍀