• 1
  • 2
  • 3
  • 4
  • 5
  • HTML,
  • CSS,
  • JS,
  • API

REST Countries API with color theme switcher

Sketch app logo

Download the Sketch file (includes mobile and desktop designs)



Your challenge is to integrate with the REST Countries API to pull country data and display it like in the designs.

You can use any JavaScript framework/library on the front-end such as React or Vue. You also have complete control over which packages you use to do things like make HTTP requests or style your project.

Your users should be able to:

  • See all countries from the API on the homepage
  • Search for a country using an input field
  • Filter countries by region
  • Click on a country to see more detailed information on a separate page
  • Click through to the border countries on the detail page
  • Toggle the color scheme between light and dark mode (optional)

Download the starter code and go through the README.md file. This will provide further details about the project. The style-guide.md file is where you'll find colors, fonts, etc.

Want some support on the challenge? Join our Slack community and ask questions in the help channel.

Getting started

  1. Start the challenge
  2. Download the starter code
  3. Choose a JS framework/library and create your project

  4. Set up the project with version control (e.g. Git)

  5. Read the README.md file and have a look around the starter files

  6. Get colors, fonts etc from the style-guide.md file

  7. Set up your project/file architecture however you want

  8. Start coding!

Ideas to test yourself

  • Write your styles using a pre-processor, such as Sass, Less, Stylus or use a CSS-in-JS solution, like Styled Components

  • Try using Flexbox and Grid for layout

  • Practice working in a team by building with friends



Want some amazing front-end resources? Of course you do. Check out our curated list of (mostly) free resources for HTML, CSS, JavaScript and more.

    • HTML,
    • CSS,
    • JS


    Codecademy offers a number of free lessons for a variety of languages. To get the full courses, you typically need to sign up to the pro membership. But you can get a lot of learning done for free.
    Visit website
    • HTML,
    • CSS,
    • JS,
    • general


    Egghead offers a lot of free community resource courses for you to learn from. They also have some great paid courses that will help boost your knowledge.
    Visit website
    • CSS


    Clippy is a great tool that makes it simple to work with the new clip-path property.
    Visit website
View all resources
Slack logo

Join our Slack community

Talk to others taking the challenges, get help with your code, discuss features. Chat about everything front-end!