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.
Thomas Weitzel
@thomasweitzelAll comments
- @SpecroSubmitted 4 months agoWhat challenges did you encounter, and how did you overcome them?@thomasweitzelPosted 4 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!
1 - @SpecroSubmitted 4 months ago@thomasweitzelPosted 4 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
andgap-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 helpful0 - @SpecroSubmitted 4 months ago@thomasweitzelPosted 4 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
andorder-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 likeborder-cyan
andborder-red
are hardcoded. I believe it's because you want to prevent Tailwind from purging the CSS. Consider using dynamic class generation with Tailwind'ssafelist
. E.g. I had defined the primary colors intailwind.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 helpful0 - @SpecroSubmitted 4 months ago@thomasweitzelPosted 4 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 witharia-hidden="true"
.Nice job!
Marked as helpful0 - @orbdev1Submitted 4 months agoWhat 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 :)
@thomasweitzelPosted 4 months agoYour 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 ifnutrition
was an array - not an object.
Anyway, I really like how you have structured your app! Again: great work!
1 - @BeeAlmightySubmitted 4 months agoWhat 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.
- 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.
- 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.
@thomasweitzelPosted 4 months agoYour 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: Thealt
attribute for the avatar image is empty. To improve accessibility, provide descriptive text such asalt="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 helpful1 - @nabinsth36Submitted 4 months agoWhat are you most proud of, and what would you do differently next time?
I used Tailwind CSS to style this card. I believe my learning path with Tailwind CSS is on the right track. All criticisms and suggestions are most welcome.
@thomasweitzelPosted 4 months agoNice job!
- You have captured the essence of this project by replicating the design, the state and responsive modifiers.
- The code is clean, and the design implementation shows a clear understanding of Tailwind CSS principles.
- You have used landmarks (main) and semantic HTML (article).
- Incorporating Google Fonts directly in the <head> with the preconnect tag is a good practice for performance optimization.
Some things to note:
- You’re using a custom
mobile:
class for responsive styles. While this works, sticking to Tailwind's default responsive modifiers likesm:
,md:
,lg:
is recommended. It maintains consistency and reduces dependency on custom configurations. - Both
<img>
tags are missing meaningfulalt
attributes. For accessibility, include descriptive text for each image. - The inline `
0 - P@wildchild04Submitted 4 months agoWhat are you most proud of, and what would you do differently next time?
I just went for html + tailwind, I think I will change to a css file if Im required, if not Tailwind all the way
What challenges did you encounter, and how did you overcome them?I just learn how to center a component, I was not aware of origin points being the upper corner of a div or any html element
What specific areas of your project would you like help with?I dont know if what I did is the best thing to center a component
@thomasweitzelPosted 4 months agoYou've done a commendable job with this project! The code structure is clean, and you’ve used semantic elements effectively.
- The content is aligned with Frontend Mentor’s typical project design specifications: consistent spacing, centered alignment, and readable text sizes.
- You've added a favicon (even though it's the Frontend Mentor one), which is often overlooked—nice detail.
- The use of Tailwind CSS is efficient, making the code easy to maintain.
You have added the #react hashtag to your submission, and I wonder why? It's not a React application.
Great work overall - keep building!
0