Skip to content
  • Unlock Pro
  • Log in with GitHub
Profile
OverviewSolutions
4
Comments
7
Praneet Dixit
@PraneetDixit

All comments

  • Filip•350
    @filip65
    Submitted about 4 years ago

    React.js, react-router, flex, grid, axios

    1
    Praneet Dixit•120
    @PraneetDixit
    Posted about 4 years ago

    Hi!

    Some points for improvement -

    • I guess the body background color in light mode is not correct.
    • You are sending a separate network request for every filter change. A better approach can be fetching all countries once on the initial page load, storing the data in a variable and performing all the filter operations on the stored data.
    • There are many ways to manage the country flag. If you want to keep using the flag as a background image, you can change the background styling as below :-
    /*** CSS ***/
    .image{
        background-size: contain; /* So that you don't end up cutting the flag */
        background-position: top; /* Keeping the flag on top */
        background-repeat: no-repeat; /* Don't repeat the background */
    }
    
    • The icon and text in theme changer are misaligned.
    /*** CSS ***/
    .theme-toggle{
        align-items: center;
    }
    
    • Set cursor: pointer on clickable elements.

    Some additional improvements (optional) -

    • You can set pagination or infinite scrolling for long lists of countries.
    • Allow users to directly visit country detail view by entering url in browser like https://countries-search-api.netlify.app/detail/India.

    Happy Coding!

  • Animashaun Taofiq T.•540
    @blade-01
    Submitted about 4 years ago

    REST Countries API with color theme switcher - Vanilla JavaScript

    3
    Praneet Dixit•120
    @PraneetDixit
    Posted about 4 years ago

    Hi @Tobesh01 !

    Good Job on the challenge !

    Some points for improvement -

    • There is no way to know which region have you selected once you click and select any region. It would be great if the name of the selected region is indicated in the place of "Filter by Region".
    • I noticed that you are sending a separate request every time user is changing the filters. A better approach can be retrieving all the data only once on the initial page load, store it in a variable and do all the filtering operations on the stored data.
    • The name filter and the region filter are not coordinating. When I type "ind" (without quotes) in the filter box and select the region Asia, I expect the app to show me all the countries in Asia whose name contain "ind". But both filters are overriding each other.
    • Since there are many countries and each country card has an image, loading all those images can leave a bad effect on the UX. You can set loading="lazy" on the images so that the off-screen images are not loaded until the user scrolls to them. You can read about lazy-loading here.

    Happy coding!

    Marked as helpful
  • Samuel Macedo•40
    @Samuca-sys
    Submitted about 4 years ago

    REST API Countries Mobile First

    2
    Praneet Dixit•120
    @PraneetDixit
    Posted about 4 years ago

    Hi. Nice solution.

    Some things you can improve -

    • The search filter and the region filter should coordinate with each other. For example, if I type "Ind" in the search-box and select region "Asia", then I should see all the countries in Asia whose name contain "ind". The filters in your current implementation override each other.
    • Asia is missing in the region dropdown.
    • You can provide an option to remove all filters.

    Happy coding!

  • Toni Kulić•60
    @tkulic
    Submitted about 4 years ago

    Vanilla JS | IP Geolocation

    1
    Praneet Dixit•120
    @PraneetDixit
    Posted about 4 years ago

    Hi!

    Nice project, but there is a small issue.

    Your page is served over https but you are requesting data from insecure resource (http), so the browser is blocking the request.

    Change API_BASE_URL to https://ipwhois.app/json/

    Happy Coding!

  • Sunny78inator•60
    @prathyushSunny
    Submitted about 4 years ago

    Calculator app - Both Keyboard & Mouse click events included.

    3
    Praneet Dixit•120
    @PraneetDixit
    Posted about 4 years ago

    Hi!

    Your theme switching implementation looks quite good.

    Another way of theme switching is using custom properties and toggling a single class to change the properties.

    Here is an example -

    /*CSS*/
    
    body{
      --text-color: #000;
      --background-color: #fff;
    }
    
    body.dark{
      --text-color: #fff;
      --background-color: #000;
    }
    
    .someElement{
      color: var(--text-color);
      background-color : var(---background-color);
    }
    
    //JS
    themeSwitchContainer.onclick = function() {
        document.body.classList.toggle('dark');
    }
    

    You can play around with this to include more themes.

    Your calculator is pretty functional.

    +1 for keyboard inputs.

  • P
    Ryan Cahela•220
    @RyanCahela
    Submitted about 4 years ago

    Vanilla HTML, CSS, JS FAQ Card Component

    2
    Praneet Dixit•120
    @PraneetDixit
    Posted about 4 years ago

    Hi. Nice project!

    Some suggestions from my side :-

    • The hero image is placed using pseudo element. Instead, you can place the image in the hero-image-container itself.
    • FAQs give you awesome chance to use details and summary elements. Check this article by CSS Tricks
    • To prevent expanding and contracting of the card, you can have a question selected by default on the page load and collapse all other questions when the user selects another question. Check this pen

    Happy Coding!

  • tediko•6,700
    @tediko
    Submitted about 4 years ago

    IP Tracker - Mobile first, Sass, Environment variable, Webpack, JS

    6
    Praneet Dixit•120
    @PraneetDixit
    Posted about 4 years ago

    I loved the hide details option. The details section hiding the map is very annoying in mobile phones.

Frontend Mentor logo

Stay up to datewith new challenges, featured solutions, selected articles, and our latest news

Frontend Mentor

  • Unlock Pro
  • Contact us
  • FAQs
  • Become a partner

Explore

  • Learning paths
  • Challenges
  • Solutions
  • Articles

Community

  • Discord
  • Guidelines

For companies

  • Hire developers
  • Train developers
© Frontend Mentor 2019 - 2025
  • Terms
  • Cookie Policy
  • Privacy Policy
  • License

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub