Skip to content

Instantly share code, notes, and snippets.

@robertmogos
Forked from praagyajoshi/fullstack_assignment.md
Last active June 28, 2023 20:51
Show Gist options
  • Save robertmogos/821f1c4bee1512e5d9fa5a144de64c49 to your computer and use it in GitHub Desktop.
Save robertmogos/821f1c4bee1512e5d9fa5a144de64c49 to your computer and use it in GitHub Desktop.
Algolia AppX team - Fullstack assignment

Fullstack assignment

Welcome! We're glad you are applying to the fullstack position in the Application Experience team! 🚀

Goal

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.

Backend

Feel free to use any technology you are comfortable with (Rails, Express, etc.)!

APIs

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 Algolia
  • DELETE /api/v1/movies/:uuid
    Deletes a movie from the DB and Algolia

Frontend

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
  • Ability to add a new movie
    • Can be implemented as a modal or as a separate page
    • Includes form validation

Evaluation criteria

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

Submission

  • 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

Questions

Please email us if you're unsure about anything.
Asking questions does not impact your evaluation.


Good luck! 🍀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment