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

Thomas Weitzel

@thomasweitzel63225 Langen, Germany170 points

Software Developer

I’m currently learning...

Rust & React

Latest solutions

  • Article Preview Component with React, Tailwind CSS, and Rsbuild

    #tailwind-css#react

    Thomas Weitzel•170
    Submitted 6 months ago

    Styling the "Speech Bubble" Component: While functional, the implementation feels overly complex. I’d appreciate advice on making it more intuitive and scalable using modern CSS techniques.

    Responsive Design Patterns in React: I’d like to explore more efficient or idiomatic ways to handle responsive layouts and media queries in React, maybe without relying on window.matchMedia.

    Accessibility Enhancements: I’ve added ARIA labels and semantic elements, but I’d welcome a review to identify any overlooked accessibility issues or opportunities for improvement, especially for screen reader users.


    1 comment
  • Testimonials Grid Section with React, Tailwind CSS, and Rsbuild

    #tailwind-css#react

    Thomas Weitzel•170
    Submitted 6 months ago

    Since I'm relatively new to CSS, I have not much experience with CSS projects. But I learn a lot by doing these Frontend Mentor challenges. In addition, I decided to read and practice some ideas from the book "Every Layout". I think my CSS will benefit from it.


    1 comment
  • Four Card Feature Section with React, Tailwind CSS, and Rsbuild

    #tailwind-css#react

    Thomas Weitzel•170
    Submitted 6 months ago

    Like I said above: I know there must be a solution for partitioning the cards for the grid layout columns with HTML and CSS only, but I have not found one yet. I will look at other solutions later to see how it could be done.


    1 comment
  • Product Preview Card with React, Tailwind CSS, and Rsbuild

    #tailwind-css#react

    Thomas Weitzel•170
    Submitted 6 months ago

    I need more fundamental information on "Responsive Design". That's why I started Kevin Powell's 21-day course "Conquering Responsive Layouts".


    1 comment
  • Recipe Page with React, Tailwind CSS, and Rsbuild

    #tailwind-css#react

    Thomas Weitzel•170
    Submitted 6 months ago

    Especially the problem with the image on top of the recipe page was a challenge for me. I don't know if my solution is good. I'd like to hear about a better one.


    1 comment
  • Social Links Profile with React, Tailwind CSS, and Rsbuild

    #tailwind-css#react

    Thomas Weitzel•170
    Submitted 7 months ago

    Before I continue with the challenges, I will first complete some learning for React applications in general.


    1 comment
View more solutions

Latest comments

  • Specro•270
    @Specro
    Submitted 6 months ago
    What challenges did you encounter, and how did you overcome them?

    Biggest challenge here is probably figuring out the structure of the share popup and the button without duplicating the content or making it too weird or complex. I think I did alright.

    Article preview component using Tailwind & React

    #tailwind-css#vite#react
    1
    Thomas Weitzel•170
    @thomasweitzel
    Posted 6 months ago

    I struggled quite a bit with this challenge and found solutions that now feel overly complicated when compared to your approach. This comparison has been an eye-opener and highlighted ways I can improve my own method:

    • Breaking the functionality into smaller components is not just good practice but also makes live easier.
    • I should avoid overcomplicating state management. Keeping state close to where it’s needed and implementing only what’s truly necessary simplifies the logic and reduces unnecessary re-renders or complexity. While my implementation felt overly complicated, it helped me understand the nuances of media query handling and the intricacies of responsive design. Moving forward, I would adopt the modular, accessible, and streamlined practices demonstrated in your solution, incorporating the lessons learned from my own approach.

    What I especially admire about your solution is how it accomplishes everything required in a clean, simple way that is far more readable—and ultimately more maintainable—than my own approach. I’ve learned a lot from reviewing your work!

  • Specro•270
    @Specro
    Submitted 6 months ago

    Testimonials grid section using Tailwind

    #tailwind-css#vite
    1
    Thomas Weitzel•170
    @thomasweitzel
    Posted 6 months ago

    I think you demonstrate a strong understanding of Tailwind CSS, responsive design principles, and modern web development techniques with React and Vite. The thoughtful use of utility-first styling, customized theme configurations, and grid layouts makes the design visually appealing and adaptable to various screen sizes. Especially, I like your thoughtful spacing with gap-y-6 and gap-x-8 for consistent design alignment. I believe you could further enhance your solution with some accessibility markup and semantic markup, like wrapping a testimonial card in an "article" element:

    <article aria-labelledby="daniel-title">
      <!-- ... ->
      <h2 class="text-white flex flex-col text-sm" id="daniel-title">Daniel Clifford</h2>
      <!-- ... -->
    </article>
    

    Overall - like always so far - I like your solution to the challenge!

    Marked as helpful
  • Specro•270
    @Specro
    Submitted 6 months ago

    Four card feature section using Tailwind

    #tailwind-css#vite
    1
    Thomas Weitzel•170
    @thomasweitzel
    Posted 6 months ago

    Your solution looks great for me:

    • Tailwind CSS configuration is clean and extends the base theme without unnecessary complexity
    • Proper use of responsive utilities (grid-cols-1, lg:grid-cols-3, lg:grid-rows-2, gap-6, md:gap-8) ensures that the layout adapts to different screen sizes
    • Perfect use of semantic tags like <main>, <footer>, <h1>, <h2>, and <p>
    • Use of Tailwind's typography utilities (font-semibold, font-extralight, text-xl) aligns with the design
    • The combination of row-span-2 and order-last demonstrates an understanding of advanced CSS grid properties to achieve the desired layout; I had to look it up to get an idea of what it does ;-)

    If I had to say one thing that I used myself: The bg-${color} pattern wasn't used, and instead, colors like border-cyan and border-red are hardcoded. I believe it's because you want to prevent Tailwind from purging the CSS. Consider using dynamic class generation with Tailwind's safelist. E.g. I had defined the primary colors in tailwind.config.js and then included this:

      safelist: [
        {
          pattern: /(bg|text|border)-(primary-red|primary-cyan|primary-orange|primary-blue)/,
        },
    

    I really like your nice and clean implementation!

    Marked as helpful
  • Specro•270
    @Specro
    Submitted 6 months ago

    Product preview card component using Tailwind

    #tailwind-css#vite
    1
    Thomas Weitzel•170
    @thomasweitzel
    Posted 6 months ago

    There's little to say here: your solution looks perfect and matches the design very closely.

    What can be done is: use some aria stuff for enhanced accessibility. For example, "hide" the <img> in the button with aria-hidden="true".

    Nice job!

    Marked as helpful
  • orbdev1•130
    @orbdev1
    Submitted 6 months ago
    What are you most proud of, and what would you do differently next time?

    I think use CSS Modules with React. I will use Tailwind CSS soon

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

    Use prop types correctly, i needed read about Proptypes's types and use cases

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

    About the naming on BEM and PropTypes :)

    Responsibe Recipe Page on React using CSS Modules with BEM

    #react
    1
    Thomas Weitzel•170
    @thomasweitzel
    Posted 6 months ago

    Your solution is a really nice React application. I like how you have broken up the code in multiple components. That makes the structure of the project crystal clear. Good job!

    Maybe you want to consider two small improvements?

    • The breakpoint at 375px doesn't make sense because most of the content is not readable by then. Maybe have the breakpoint at 750px, but no later than 690px. I believe the 375px comes from the fact that the mobile design screenshot was captured that way.
    • The table with the nutrition data has an additional horizontal ruler/line after the last row that is not in the design. You could apply the class .recipe-card__nutrition-table-tr conditionally for every <tr> except the last one. In that case it would be helpful if nutrition was an array - not an object.

    Anyway, I really like how you have structured your app! Again: great work!

  • Hendrixx•430
    @BeeAlmighty
    Submitted 7 months ago
    What are you most proud of, and what would you do differently next time?
    • Honestly, i am grateful for the fact that i implemented my corrections on this project like BEM and semantic HTML.
    What challenges did you encounter, and how did you overcome them?
    • I found it quite challenging implementing the mobile-first design and making sure my project was responsive across all screen sizes starting from the mobile phone.
    • Thanks to freecode camp and their elaborate content, i was able to successfully understand and implement them.
    What specific areas of your project would you like help with?
    • I got introduced to the BEM concept from a detailed feedback from a user on my last project. In terms of implementation, it was the best so i'd need more eyes on my BEM code and feedbacks would be appreciated.
    • Also i need feedback on my code generally on ways, it could be cleaner and more concise.

    Social links profile. HTML | CSS | MOBILE-FIRST WORKFLOW

    2
    Thomas Weitzel•170
    @thomasweitzel
    Posted 7 months ago

    Your solution for the "Social Links Profile" challenge demonstrates good use of semantic HTML and a well-structured CSS approach. The layout is straightforward, responsive, and visually cohesive, aligning with the requirements of the challenge. There exists only minimal improvement in terms of accessibility, maintainability, and visuals.

    • The use of semantic elements such as <main>, <section>, and headings (<h1>) is excellent.

    • The media query ensures a responsive design for screens smaller than 425px.

    • Adjustments for font sizes and padding are thoughtful.

    • The hover effect on the .socials buttons is intuitive and visually distinct. The use of transition effects (transition: all 0.2s ease-in-out;) is a nice touch!

    • The CSS is well-organized and avoids unnecessary properties.

    • The inclusion of font-optical-sizing: auto; is an advanced CSS feature. Nice!

    • Missing alt attribute content: The alt attribute for the avatar image is empty. To improve accessibility, provide descriptive text such as alt="Jessica Randall's profile picture".

    • The attribution link (Your Name Here) should be updated to your name or GitHub profile. Be proud of your work!

    • You have tagged your solution to this challenge with the #react tag, although it's not a React application.

    Your solution effectively meets the challenge requirements with only minor room for improvement in accessibility. Great job!

    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