This challenge involves building a full-stack application, "CountryVote," that allows users to vote for their favorite countries. The project is divided into two main parts: the backend service and the frontend interface. This document provides the guidelines and requirements to help you approach the challenge as you would in a real production environment. We value clean, efficient, and well-documented code.
You should be able to complete this project within 15 to 20 hours. This is not a hard limit. Once completed, please provide a rough estimate of how much time you invested into it.
Feel free to ask any question to Loopstudio via email.
A Github repository that contains:
- The implementation of both backend service and frontend application
- Instructions on how to install, test, and run them
- For each project, a written explanation of the design choices you made, and how it meets both the functional and non-functional requirements.
- For each project, a written explanation of any compromise or trade-off that you took because of time constraints.
Feel free to assume anything you are not 100% sure and our answers don't provide you enough information. Please document those assumptions.
Develop a platform that allows users to submit their favorite country vote and view the top favorite countries.
Please use the following public API (https://restcountries.com/#rest-countries) and implement an API that allows you to achieve the next behaviors:
- Create a user along with their favorite country. For example: John Doe → [email protected] → Italy. Important note: only one vote per email will be allowed
- Retrieve a list of the most 10 favorite countries and include their details like name, official name, capital city, region, and sub-region (retrieved from the provided API).
We created this design for you to follow. Please, use the CountryVote Service previously described as the backend service for this frontend application.
- Voting Form: Build a form where users can submit their name, email, and select their favorite country from a dropdown. The form should validate for non-empty fields and correct email format.
- Country Display Table: Show a table of the top 10 countries sorted by votes. Implement search functionality.
- Style the application to look as true to the design as possible.
- Feel free to pick any libraries you consider worth using for the challenge
- We recommend React for frontend and Node (Express/Nest) for backend using Typescript, but any language and framework is accepted, just make sure to validate the decision with LoopStudio team before starting.