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

Ethan John Paguntalan

@dev-ethanjohnPhilippines260 points

Deep in me is a boundless well of creativity, filled with world-changing ideas waiting to be shared with the world.

Latest solutions

  • Tip Calculator using ES6 Modules and SASS

    #sass/scss

    P
    Ethan John Paguntalan•260
    Submitted 2 months ago

    I would love to get any feedback in dealing with the data flows and project architecture.


    1 comment
  • Time Tracking DashBoard Responsive and Dynamic Data with JSON

    #bem

    P
    Ethan John Paguntalan•260
    Submitted 2 months ago

    I use sass for this, I'd love to get any feedback about how I structure my styles and overall code.


    1 comment
  • Newsletter Signup Page with BEM

    #bem

    P
    Ethan John Paguntalan•260
    Submitted 2 months ago

    I would love to get any feedback on the interaction of the form. Moreover, tips for better code structure will be helpful if any.


    1 comment
  • Interactive and Responsive Article Preview Component


    P
    Ethan John Paguntalan•260
    Submitted 3 months ago

    Would love to see feedback generally on my solution, and on my added functionality on dismiss when I click outside of the popover.


    1 comment
  • Meet Landing Page using Responsive Layouts


    P
    Ethan John Paguntalan•260
    Submitted 4 months ago

    Semantic or even better recommendation to make my CSS code more clean.


    1 comment
  • Testimonial Grid Section Responsive Layout using Grid and Media Query


    P
    Ethan John Paguntalan•260
    Submitted 4 months ago

    I would love see any feedback on responsiveness and maybe further recommendations that I may check out for.


    1 comment
View more solutions

Latest comments

  • P
    RF13•590
    @rf1303
    Submitted 2 months ago
    What are you most proud of, and what would you do differently next time?

    *It was a challenge to keep the interface intuitive and functional at the same time, but I learned a lot about best practices with JavaScript, event handling, and CSS styling. If I had to do it over again, I would spend more time up front planning the code structure and modularizing features to make them more reusable and maintainable. I would also try to implement more extensive testing to ensure the form's robustness to all kinds of user input.

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

    One of the main challenges was to correctly handle the validation of numeric input, in particular to avoid invalid input such as letters or null values, and to ensure that the calculation was only performed if all fields were valid. It was also difficult to determine when to show or hide error messages without affecting the user experience. To overcome this, I used addEventListeners on events such as input, keydown, and blur to control the state of each field in real time. I also used conditional validations to provide clear visual feedback. Breaking the logic into reusable functions helped me keep the code more organized and easier to debug.

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

    **In particular, I would like help optimizing the validation of numeric input, as it works but could be simplified or better structured according to best practices. I am also interested in improving accessibility and user experience when displaying errors and visual messages, especially on mobile devices. Also, any advice on how to better organize JavaScript code and separate responsibilities between HTML, CSS and JS would be very helpful to scale the project in the future.

    html css grid flexbox scss Javascript Mobile firts

    #bem#sass/scss
    1
    P
    Ethan John Paguntalan•260
    @dev-ethanjohn
    Posted 2 months ago

    Hi, we couldn't preview the live site. Please try to update your demo site. Thanks!

  • P
    Schindler Dumagat•340
    @schindlerdumagat
    Submitted 2 months ago
    What are you most proud of, and what would you do differently next time?

    By building this project, I was able to learn how to fetch data from an external source and display them in the page. I learned how to handle asynchronous task like fetching data. Additionally, I improved my HTML and CSS skills.

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

    One of the challenges I encountered is how I can fetch the data from a file and then display it in the page. So, I read some articles and check their examples. Afterwards, I was able to come up with an idea on how to that and I implemented it in my code. Though it works, I am not certain that it was the best approach for this project. I believe their are more better solutions than mine.

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

    Though I was able to finish the project, I still have doubts on my solution, here are my list of concerns:

    • What is the best way to render the data from the file?

    In my case, I created all the elements of the report cards for each statistics data in my HTML file and just select all the elements that I want to fill some data in my JavaScript file.

    My report card HTML looks like these:

    <div class="report__card report__card--orange">
              <img class="report__card-logo" src="./images/icon-work.svg" alt="" />
              <div class="report__card-content">
                <div class="report__card-header">
                  <h3 class="report__card-title">Work</h3>
                  <button class="report__card-btn">
                    <svg width="21" height="5" xmlns="http://www.w3.org/2000/svg">
                      <path
                        d="M2.5 0a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5Zm8 0a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5Zm8 0a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5Z"
                        fill-rule="evenodd"
                      />
                    </svg>
                  </button>
                </div>
                <div class="report__card-body">
                  <time class="report__current" datetime=""></time>
                  <p class="report__previous"></p>
                </div>
              </div>
            </div>
    

    Here is my JavaScript for selecting the necessary elements for editing:

    const reportCards = document.querySelectorAll(".report__card");
    const editableElements = [...reportCards].map(reportCard => {
        const reportTitle = reportCard.querySelector(".report__card-title");
        const reportCurrent = reportCard.querySelector(".report__current");
        const reportPrevious = reportCard.querySelector(".report__previous");
    
        return {
            reportTitle: reportTitle, 
            reportCurrent: reportCurrent,
            reportPrevious: reportPrevious,
        }
    })
    
    • Should I create the report card elements in my JavaScript file after fetching the data instead of directly creating placeholder elements in my HTML file and then just selecting them in my JavaScript file and editing their contents?

    • What are the accessibility issues you can see in my solution?

    I am not in the accessibility learning path yet but I want to know your feedback on this.

    Any feedbacks and recommendations are welcome too!

    Responsive Time Tracking Dashboard with Data Fetching

    1
    P
    Ethan John Paguntalan•260
    @dev-ethanjohn
    Posted 2 months ago

    Hi, nice job!

    It works but i have some few suggestions that you may try to look at and consider. (1). I notice you are hardcoding the HTML card list. Leverage JS to loop over and dynamically update components if major difference only is data and few styling. We do this so that it will be become easier for us to read and update if there comes a time we need to. Moreover, be wary about using too much divs in our structure. Utilize semantic elements like lists and nav for items in a group (choose what make sense.) (2). Due to reason 1, your JS is like an overkill for a simple JSON referencing and dynamic update. Inside, my recommendation is to lessen your global variables and functions as it may come at risk of namespace polution. Rather, encapsulate your logic and utilize functions like IIFE (immdiately invoked function expression). Further, you may practice to look up closest parent nodes of a group of items such as in this case buttons to delegate the listener instead of individually adding an event to each child for performance reasons (https://javascript.info/event-delegation). Lastly, do not forget to add some comments if you think will be helpful for you and other developers to understand the code better. (3). Regarding your style, 1 tip is to use em for media queries (https://zellwk.com/blog/media-query-units/). Leverage newer CSS syntax that supports custom variables.

    There are many more but hope some of these could help. Also while learning AI should not be the one who will write the code, but I highly suggest you ask guidance and feedback to your code without requiring it to send back code response unless you understand a topic. That will accelerate your understanding as human mentors can only provide some but not always time. Be sure though to check other sources and keep practicing and learning!

    Marked as helpful
  • Daniel Barda•240
    @daniel-barda
    Submitted almost 2 years ago

    Advanced grid and flexbox tools are used.

    #sass/scss#bem
    1
    P
    Ethan John Paguntalan•260
    @dev-ethanjohn
    Posted 2 months ago

    Nice work!

    I have some few issues that I encountered though but can be easy fix. There is an inconsistent spacing and margin around the newsletter main content when changing breakpoints. I know we wouldn't have to always need media queries for a lot of things, but in this case, you can apply some and mix it with responsive dimensions like using calc() or minmax() for your container's width. I also noticed that the email input does not bind with the confirmation message, but no worries that will be easy with DOM manipulation. Overall, good job for taking the challenge!

  • Fernando Mendoza•240
    @whiteknight-dev
    Submitted 3 months ago
    What are you most proud of, and what would you do differently next time?

    I'm proud of the button component, even though I have quite a lot I think I did a good job.

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

    Changing the functionality of the button depending on the view was the hardest part. (Although I don't know if I did it in the most optimal way). I overcame it by looking for innerwidth property and resize javascript event.

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

    I would like help with the optimal solution of the button and the responsive in my component.

    Article Preview Component using Grid and Flexbox

    1
    P
    Ethan John Paguntalan•260
    @dev-ethanjohn
    Posted 3 months ago

    Nice job! It works man, but I have few suggestions.

    1. Do not rely much on JavaScript. If you can find solution on CSS to dynamically style or in relation to structuring your HTML more semantically correct, - the better. For example, your JavaScript calculates a lot things by rebinding events on each resize of screen. Also toggling the visibility of an element can be easily achieve by utilizing toggle on JS (ex: button.classList.toggle("active") and use that condition to style your CSS like (button.active ~ .share-options { opacity: 1; visibility: visible } NOTE: make sure your default button style is set to visibility: hidden; just make it visible when on active which is toggled by JS. No need of if else statement unless we need more functionality on each condition.

    2. It is preferable to em for your media query breakpoints instead of px for responsiveness and adaptability.

    3. I noticed a small jump (mobile) when share links appeared. Maybe you can check your positioning on dimensions on that state. Additionally, to make it more fluid, you can add some transitions and animations.

    Nonetheless, great work! Keep pushing and coding!

    Marked as helpful
  • guardianprime•260
    @guardianprime
    Submitted 5 months ago

    Responsive landing page using css grid, flexbox and media queries.

    1
    P
    Ethan John Paguntalan•260
    @dev-ethanjohn
    Posted 4 months ago

    Hi, great job for completing this challenge. I have some issues though while previewing your page. It seems there is a lot going on your layout and positioning. For some screens, the spacing between your hero section and the 1st feature is quite large.

    Within your CSS , you may ignore media query for extra small devices especially when you style mobile first. Your default styling is your mobile layout so no need of media query for that. Use em instead of pixel on your breakpoints. Also, you can explore clamp(), max-width, or width: min() to make your text and containers responsive on different screen sizes. Further, I noticed you put a lot of fixed values like vh / vw and fixed pixel to a lot of your components. Instead of those fixed values, try to leverage padding or grid/flexbox to size and align your contents.

    Apologize if I can't pinpoint exactly all specific fixes you can do, but my recommendations I believe could help you step back a little and play around with these concepts. Good luck!

    Marked as helpful
  • SylvainPS78•380
    @SylvainPS78
    Submitted 4 months ago

    Testimonial Grid

    1
    P
    Ethan John Paguntalan•260
    @dev-ethanjohn
    Posted 4 months ago

    You are almost there! I noticed on tablet screens, you forget to define a specific layout for it using grid (Please check your figma file for reference).

    After checking your code, I made a few recommendation:

    1. Preferably, use HTML semantic tags over divs for better accessibility and SEO. Example such as article, section tags and blockquote tags. If you still unsure what semantic tags to structure your HTML, you can check mine or other solutions in the community.
    2. Use em for your media queries, using px is okay but that doesn't scale. There are a lot of advantages using em like it is relative to the browser's root font-size (usually at 1em = 16px by default). If a user changes the font-size to say 18px on their browser, then 1em = 18px; allowing breakpoints to scale and adapt.
    3. You can stick with grid even at smaller screen sizes. Grid can also do vertical column without needing Flexbox, this allow you to not override your body again on tablet or desktop screens. Moreover, it simplifies your media queries!

    I hope it helps!

View more comments
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

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