Skip to content
  • Unlock Pro
  • Log in with GitHub
Profile
OverviewSolutions
13
Comments
12

Pdave

@Pdave-dcn460 points

I’m a mysterious individual who has yet to fill out my bio. One thing’s for certain: I love writing front-end code!

Latest solutions

  • Multipage and responsive Room website (react, typescript, tailwind)

    #motion#react#tailwind-css#typescript#vite

    Pdave•460
    Submitted 6 months ago

    0 comments
  • Complete Insure website (React, Framer-motion, Tailwind)

    #react#tailwind-css#typescript#vite#motion

    Pdave•460
    Submitted 6 months ago

    0 comments
  • Multi-step form with React and Motion

    #react#tailwind-css#typescript#vite#motion

    Pdave•460
    Submitted 7 months ago

    0 comments
  • Ip address tracker with REACT

    #react#tailwind-css#typescript#vite

    Pdave•460
    Submitted 8 months ago

    0 comments
  • Responsive and interactive e-commerce product page

    #react#tailwind-css#vite#typescript

    Pdave•460
    Submitted 8 months ago

    0 comments
  • Tip Calculator

    #react#typescript#vite#tailwind-css

    Pdave•460
    Submitted 8 months ago

    0 comments
View more solutions

Latest comments

  • Trevor•590
    @TrEv0rRrRr
    Submitted 6 months ago

    multi-step-form

    #react#tailwind-css#typescript
    1
    Pdave•460
    @Pdave-dcn
    Posted 6 months ago

    Hey friend, congrats on completing this challenge! While testing your solution, I noticed that you didn't consider the possibility that the user might not select none of the available plans and still able to send the form. The congratulation message will still appear. I think it's a big issue because if there's no valid info in the form, why allow the user to send it?

  • Tsuna21182•530
    @Tsuna21182
    Submitted 6 months ago

    ToDoApp react

    1
    Pdave•460
    @Pdave-dcn
    Posted 6 months ago

    Hey! Nice work on completing this challenge, i actually did it myself a few months ago. You've done a solid job, but I think there’s some room for improvement, especially in the UI.

    For example, on desktop, the todo (container) could be a bit larger for better readability. Also, centering the todo text looks a little off, it might feel more natural if it were left-aligned instead. Another thing: adding a new todo by pressing Enter would make the experience smoother, rather than relying solely on a button click.

    I also took a look at your GitHub and checked out your useTodoHook. It’s well-structured, but it seems to be handling too many responsibilities at once. A cleaner approach would be to split concerns. One hook for managing the task list (CRUD operations), another for filtering logic, and maybe a final one to bring everything together (useTodoHook). This would make your code more maintainable, testable, and reusable.

    Overall, you’re on the right track! Keep it up!

    Marked as helpful
  • Cybercore-x•70
    @Cybercore-x
    Submitted 8 months ago
    What are you most proud of, and what would you do differently next time?

    I really has some struggle on CSS and most definitely on JavaScript, as am still learning it took me a while to get as close as possible to the main Challege design to the best of my abilities.

    What challenges did you encounter, and how did you overcome them?

    Well most of the hard part was CSS and JavaScript, and I tried and use everything I knew to come as close as possible to the main Challege design.

    What specific areas of your project would you like help with?

    CSS but mostly JavaScript

    calculator using flex

    1
    Pdave•460
    @Pdave-dcn
    Posted 8 months ago

    Hey there! I noticed you only have the mobile version of the app. looks like you used a mobile-first approach for this challenge, which is great! To adapt it for desktop you could structure the app like the following:

    <body>
      <div class="calculator__wrapper">
    
        <div class="form__wrapper">
          <form action="">
            **contents here**
          </form>
        </div>
    
        <div class="display__section">
          **contents here**
        </div>
        
      </div>
    </body>
    

    Then in CSS, you could use the following:

    @media screen and (max-width: 1024px) {
      .calculator__wrapper{
        display: flex;
      }
    
      .form__wrapper,
      .display__section{
       flex: 1;
      }
    }
    
  • Mohamed ElGanzory•280
    @GaMeSDST
    Submitted 8 months ago
    What challenges did you encounter, and how did you overcome them?

    I have a very annoying problem with Leaflet where it wouldn't change the map on re-render saying that it already initliazied which makes since so i tried to remove it using leaflet itself to try and get a clean solution but after reading the documents and trying for a while i gave up and ended up doing it the dirty way (dom Manipulation) i literally removed the element from the dom then inserted another one and re-initliazed the map again

    What specific areas of your project would you like help with?

    a way for changing the map in leaflet easily

    ip-address-tracker using React, NextJS, TailwindCSS, LeafletJS, Ipify

    #next#react#tailwind-css
    1
    Pdave•460
    @Pdave-dcn
    Posted 8 months ago

    The problem is that you didn't use the React-specific version of Leaflet. You should have installed Leaflet as a dependency by typing npm install leaflet react-leaflet in the terminal, and then configured the map accordingly.

    import "leaflet/dist/leaflet.css";
    import L from "leaflet";
    
    // Fix marker icons
    import markerIcon from "leaflet/dist/images/marker-icon.png";
    import markerIconRetina from "leaflet/dist/images/marker-icon-2x.png";
    import markerShadow from "leaflet/dist/images/marker-shadow.png";
    
    // Define the default marker icon configuration
    const DefaultIcon = L.icon({
      iconUrl: markerIcon, // Path to the default marker icon
      iconRetinaUrl: markerIconRetina, // Path to the high-resolution marker icon
      shadowUrl: markerShadow, // Path to the marker shadow
      iconSize: [25, 41], // Size of the icon [width, height]
      iconAnchor: [12, 41], // Anchor point for the icon (where it attaches to the map)
    });
    
    // Apply the default icon to all markers
    L.Marker.prototype.options.icon = DefaultIcon;
    
    // Main map component
    const MapComponent = () => {
      return (
        <MapContainer
          // Set the default center of the map (latitude, longitude)
          // Modify these coordinates to change the starting location
          center={[51.505, -0.09]} // Example: London coordinates
          zoom={13} // Adjust zoom level (higher = more zoomed in)
          style={{ height: "100vh", width: "100%" }} // Adjust the map's height and width
        >
          {/* Add the map tiles */}
          <TileLayer
            // OpenStreetMap tile URL (you can replace this with other providers like Google Maps or Mapbox)
            url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
            // Attribution to the map data provider (modify or remove if using a custom tile provider)
            attribution='&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
          />
          
          {/* Add a marker to the map */}
          <Marker
            position={[51.505, -0.09]} // Marker position [latitude, longitude]
            // Modify these coordinates to place the marker at a specific location
          >
            {/* Popup that appears when clicking on the marker */}
            <Popup>
              A default marker popup! {/* Customize this text to display specific information */}
            </Popup>
          </Marker>
        </MapContainer>
      );
    };
    
    export default MapComponent;
    

    Hope that help!

    Marked as helpful
  • Daniel king•510
    @thedanielking
    Submitted 8 months ago
    What are you most proud of, and what would you do differently next time?

    Im proud that I could come up with the solutions by myself.

    What challenges did you encounter, and how did you overcome them?

    I had challenges in giving the selected link to be active and also waiting to press "enter" as the event listener;

    What specific areas of your project would you like help with?

    More on code refractoring and also, when reset button is clicked, how to rest the bill to 0 and also the number of people to 0;

    Tip Calculator

    2
    Pdave•460
    @Pdave-dcn
    Posted 8 months ago

    To clear the input fields when the reset button is pressed, you could implement the following:

    const resetBtn = document.querySelector('.reset-btn');
    const inputBill = document.querySelector('.input-bill');
    const inputPeople = document.querySelector('.input-people');
    
    resetBtn.addEventListener('click', () => {
      inputBill.value = '';
      inputPeople.value = '';
    });
    
  • Daniel king•510
    @thedanielking
    Submitted 8 months ago
    What are you most proud of, and what would you do differently next time?

    Im proud that I could come up with the solutions by myself.

    What challenges did you encounter, and how did you overcome them?

    I had challenges in giving the selected link to be active and also waiting to press "enter" as the event listener;

    What specific areas of your project would you like help with?

    More on code refractoring and also, when reset button is clicked, how to rest the bill to 0 and also the number of people to 0;

    Tip Calculator

    2
    Pdave•460
    @Pdave-dcn
    Posted 8 months ago

    Great job, friend. I have some suggestions for you. I think the app dimension is too small, so it would be better to increase it. Also, setting the initial value of inputs to zero in your code is not ideal. Instead of this <input type="text" value="0" id="bill">, try this <input type="text" placeholder="0" id="bill">.

    Marked as helpful
View more comments

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

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