Skip to content
  • Unlock Pro
  • Log in with GitHub
Profile
OverviewSolutions
22
Comments
7

Mishael

@mishael-codesLagos, Nigeria370 points

Entry Level Front-End Developer. Loves to write frontend code(especially when they work).

I’m currently learning...

React and Vue

Latest solutions

  • Time Tracking Dashboard with TailwindCSS

    #accessibility#animation#fetch#semantic-ui#tailwind-css

    Mishael•370
    Submitted 5 days ago

    0 comments
  • newsletter-sign-up-page-with-success-state-with-vite

    #accessibility#semantic-ui#tailwind-css#vite

    Mishael•370
    Submitted 9 days ago

    1 comment
  • Fylo Landing Page

    #accessibility#animation

    Mishael•370
    Submitted 14 days ago

    0 comments
  • Article-preview-component

    #accessibility

    Mishael•370
    Submitted 15 days ago

    1 comment
  • Responsive Loopstudios landing page with grid and flexbox

    #accessibility#animation#semantic-ui

    Mishael•370
    Submitted about 2 years ago

    0 comments
  • Profile Card Component

    #accessibility#semantic-ui

    Mishael•370
    Submitted about 2 years ago

    0 comments
View more solutions

Latest comments

  • Amiko Elvis•260
    @amikoelvis
    Submitted 20 days ago
    What are you most proud of, and what would you do differently next time?

    I’m proud of creating a clean, responsive time tracking dashboard that effectively uses Tailwind CSS for styling and JavaScript for dynamic functionality.

    Next time I would love to; Dynamic Data: Instead of hardcoding time data (e.g., “32hrs” for Work’s Weekly view) in the HTML, I’d fetch data from a JSON file or API to make the dashboard more maintainable and scalable. This would allow easier updates to time values without editing the HTML.

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

    Challenge: Ensuring JavaScript Toggle Functionality Was Efficient Description: The JavaScript needed to toggle the visibility of time-data divs (Daily, Weekly, Monthly) for all six activities (Work, Play, Study, etc.) and update button styles (e.g., text-white for active, text-nuetral-purple-500 for inactive) without redundant code or performance issues.

    How I Overcame It: Single Function: I wrote a reusable showTimeframe function to handle both data toggling and button styling:

    javascript
    
    function showTimeframe(timeframe) {
        timeDataElements.forEach(data => {
            data.classList.toggle('hidden', data.dataset.timeframe !== timeframe);
        });
        buttons.forEach(btn => {
            btn.classList.toggle('text-white', btn.id === `${timeframe}-btn`);
            btn.classList.toggle('text-nuetral-purple-500', btn.id !== `${timeframe}-btn`);
        });
    }
    

    This used dataset.timeframe to match divs with the selected timeframe and minimized DOM manipulations.

    Challenge: Maintaining Responsive Design Consistency Description: The dashboard needed to look good on both mobile (max-w-sm) and desktop (lg:max-w-5xl lg:grid-cols-3) layouts, especially with the left-aligned buttons and activity cards’ overlapping design (e.g., icons like icon-work.svg in rounded-b-3xl headers). Tailwind’s responsive classes were complex to balance.

    How I Overcame It: Tailwind’s Mobile-First Approach: I leveraged Tailwind’s responsive prefixes (e.g., lg:flex-col, lg:text-5xl) to ensure the layout adapted correctly. For example, the buttons’ w-full class ensured they stacked neatly in the vertical lg:flex-col layout.

    Icon Positioning: The activity card icons (e.g., <img src="./images/icon-work.svg">) used classes like ml-55 lg:ml-40 -mt-2.5 lg:-mt-3 for positioning. I tested these on different screen sizes to ensure they stayed aligned within the colored headers (bg-primary-orange-300-work).

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

    Dynamic Data Integration: I’d appreciate feedback on the best way to integrate a JSON file or API for the time data. For example, how would you structure a JSON file for the activities (Work, Play, etc.) with Daily, Weekly, and Monthly values, and what’s the most efficient way to fetch and render it in this dashboard?

    Advanced Tailwind Configuration: While I used Tailwind’s inline classes, I’m curious about best practices for organizing custom styles in output.css or a Tailwind config file, especially for a project with multiple color variants (e.g., primary-orange-300-work, primary-blue-300-play). How can I streamline this for larger projects?

    Performance Optimization: The dashboard is lightweight, but if I were to add animations or fetch data dynamically, what tools or techniques (e.g., lazy loading, debouncing) should I use to ensure smooth performance, especially on lower-end devices?

    Accessibility: I’d like guidance on implementing ARIA roles and ensuring keyboard navigation for the timeframe buttons. For instance, how can I make the active button state (e.g., text-white) clear to screen readers, and what’s the best way to test this?

    Responsive time tracking dash board using JavaScript and Tailwind CSS

    #tailwind-css
    1
    Mishael•370
    @mishael-codes
    Posted 5 days ago

    Good Job with this project

  • P
    BlonoBuccellati•270
    @BlonoBuccellati
    Submitted 12 days ago

    news letter sing-up form using Next.js tailwindcss

    #next#tailwind-css#react
    1
    Mishael•370
    @mishael-codes
    Posted 9 days ago

    I love your project; it looks good. The handling of the error states and switching to the success page was implemented well as well. I did notice some things you can improve on; one of them is to reduce the breakpoint for desktop. I noticed it started at 1440px, but you can start at 1024px so it has the same look across all laptops and monitors, no matter the size. The second thing you can do is to center the div vertically. Do these two things, and your solution will be even better .

    Well done!

  • Mohamed -hamid•480
    @alexproman
    Submitted 5 months ago

    Article-preview-component

    #accessibility#lighthouse
    1
    Mishael•370
    @mishael-codes
    Posted 15 days ago

    I love the animation that starts and closes the share button. Well done

  • DayaA•130
    @Aishaakin
    Submitted over 2 years ago

    Responsive Landing Page Using CSS Grid

    1
    Mishael•370
    @mishael-codes
    Posted over 2 years ago

    Hello Aishaakin👋

    For resources on CSS media queries, you can checkout w3schools and/or MDN

    For grid layout, you can take this free course by freeCodeCamp.

    For screenshots, you can use this chrome extension

    Additional tips

    The <html> tag should have a language attribute. It should look like this <html lang="en">. This lets the browser know that your site's is in english and it also helps screen readers to pronounce words correctly.

    You can take a free responsive web design course on freeCodeCamp

    Another thing you can do is to use sematic HTML elements like the <main> tag, <footer> tag, <section> tag, and so on. You can read about them here

    Keep on building, You are doing great👏👏

  • Mirm•80
    @Missteeme31
    Submitted over 2 years ago

    NFT Preview Page

    1
    Mishael•370
    @mishael-codes
    Posted over 2 years ago

    Hello Mirm,

    You did some fine work.👏👏

    However, I have a couple of suggestions to make your code even better.

    1) To improve the site's accessibility, try using the <main> tag on the <div> with the class of container. That is, instead of:

    <div class="container">

    you can have a <main> tag with the div inside of it. Like this...

    <main>
         <div class="container"></div>
    </main>
    

    and for the <div class="creator"> try using the <footer> tag instead, like this <footer class = "creator">

    2) You can add

    main{
      display: flex;
      align-items: center;
      justify-content: center;
      min-height: 100vh
    }
    

    to your CSS code to center the container div perfectly, in a way that it won't stick to the top of the viewport.

    3) In future projects, try adding a <title> in the <head> tag of your HTML code as this sets a title for your page and therefore, helps with the site's SEO.

    Once again, you did great on this project

    I can't wait to see what you build next.🙂

    Marked as helpful
  • EDOARDO PITACCIO•180
    @EdoPito
    Submitted over 2 years ago

    Product preview card

    5
    Mishael•370
    @mishael-codes
    Posted over 2 years ago

    Hello Edoardo

    You did some great work on this project

    However, to make your site more accessible, try using the <main> tag for the <div> that has the class of "card".

    Also, you can use the <footer> tag on the <div> with a class of "attribution".

    If you do not want to do that, you can as well add a role attribute to the respective <div> tags For example:

    For the main content, do this: <div role="main" class="card">

    And for the footer, do this: <div role="contentinfo" class="attribution">

    To read more about the use and importance of semantic HTML and the role attribute, check these sites:-

    Semantic HTML - w3schools

    HTML Role Attribute Explained

    Once again, You did well on your project.

    Keep it up

    Marked as helpful
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