Purpose of this series of tasks is to determine ability of adaptation to unknown, applying known concepts, observing candidate’s critical thinking and planning capabilities.
1. Create project on GitHub with “interview-” as prefix and your full name kebab-case encoded as suffix, for example: “interview-alice-jones”.
2. Project goal is to create dockerized (Docker and docker-compose) dynamic Todo list web app. It is required to create dynamically multiple Todo items, also ability to edit and mark them completed. There should be client-side web app (frontend), and also server-side (backend, API). State is exchanged between client and server using fetch or axios.
3. In project, create directory “www” for frontend using React, Vue, Angular, Svelte or similar web library/framework. Use Materializecss and Material Design principles for UI/UX.
4. In project, create directory “api” for backend using Node (Express.js), Python (Flask), Ruby (RoR), or technology of choice but not existing CMS. In the worst case, use JSON Server.
5. Use http server to bind frontend and backend together, so issues with CORS are not present. The simplest is to use Caddy v1, but Caddy v2, Nginx and Apache are also viable solutions. Anyway, candidate will need to write configuration file and mount it in docker container.
6. Write two individual “Dockerfile” files for frontend and backend.
7. Write “docker-compose.yml” that will start both frontend and backend with “docker-compose up --build”.
8. Allow checking project at http://127.0.0.1:8080