<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Frontend Mentor</title>
    <description>The latest articles on DEV Community by Frontend Mentor (@frontendmentor).</description>
    <link>https://dev.to/frontendmentor</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F1390%2Ff6c7428b-c890-4c97-a586-352a887caad6.png</url>
      <title>DEV Community: Frontend Mentor</title>
      <link>https://dev.to/frontendmentor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/frontendmentor"/>
    <language>en</language>
    <item>
      <title>The FM30 hackathon returns: Build a typing speed test!</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Fri, 19 Dec 2025 13:22:43 +0000</pubDate>
      <link>https://dev.to/frontendmentor/the-fm30-hackathon-returns-build-a-typing-speed-test-22bl</link>
      <guid>https://dev.to/frontendmentor/the-fm30-hackathon-returns-build-a-typing-speed-test-22bl</guid>
      <description>&lt;p&gt;Our first hackathon back in September was a blast – the community really showed up with some incredible Weather App solutions. We're excited to do it all again! If you missed the first one, here's your chance to join in. And if you participated last time, we'd love to see you back.&lt;/p&gt;

&lt;p&gt;Congratulations again to &lt;a href="https://www.frontendmentor.io/profile/Fejiro001" rel="noopener noreferrer"&gt;Abere Fejiro&lt;/a&gt;, who took first place in our Weather App hackathon! Her &lt;a href="https://www.frontendmentor.io/solutions/weather-now-application-react-tailwind-zustand-framer-motion-pwa-_S6_2vs-Lw" rel="noopener noreferrer"&gt;winning solution&lt;/a&gt; went well beyond the requirements – featuring a full PWA implementation, voice search using the Web Speech API, location comparison, and polished micro-interactions with Framer Motion and sound effects. The attention to detail and thoughtful README made it a standout.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's the FM30 Hackathon?
&lt;/h2&gt;

&lt;p&gt;It's a 30-day challenge where you build the best solution you can to our brand new &lt;a href="https://www.frontendmentor.io/challenges/typing-speed-test" rel="noopener noreferrer"&gt;Typing Speed Test challenge&lt;/a&gt;. There's no pressure to speed-run it – take your time, experiment, and focus on quality.&lt;/p&gt;

&lt;p&gt;The challenge will stay on the platform permanently, so you can always build it later at your own pace. But the hackathon adds some extra motivation: a deadline, prizes, and the chance to see how your work stacks up against the community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus:&lt;/strong&gt; During the hackathon, everyone gets free access to the Figma design file – no Pro subscription required. Once the hackathon ends, Figma access will require a Pro plan, so now's a great time to jump in.&lt;/p&gt;

&lt;p&gt;This time around, you'll build a typing speed test that calculates words per minute (WPM) and accuracy. It's a satisfying project – lots of real-time UI updates, DOM manipulation, and working with timers. You'll end up with something genuinely fun to use and a solid portfolio piece.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to participate
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Getting started
&lt;/h3&gt;

&lt;p&gt;Head to the &lt;a href="https://www.frontendmentor.io/challenges/typing-speed-test" rel="noopener noreferrer"&gt;Typing Speed Test challenge page&lt;/a&gt; and download the starter files. The README covers everything you need to know.&lt;/p&gt;

&lt;p&gt;From there, spend the next 30 days building your solution. Go beyond the requirements if you can – add features, polish the details, make it something you'd actually want to use. The "Ideas to test yourself" section on the challenge page has some inspiration.&lt;/p&gt;

&lt;p&gt;We'd love to see your progress along the way. Share updates on social media using #FM30Hackathon, and we'll reshare standout posts to boost your visibility. We've also set up a dedicated #hackathon-chat channel in Discord – a space to share progress, ask questions, and connect with others taking on the challenge.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission guidelines
&lt;/h3&gt;

&lt;p&gt;Post your solution in the #hackathon-submissions Discord channel under the Typing Speed Test thread. Your submission needs one thing: a link to your solution on Frontend Mentor.&lt;/p&gt;

&lt;p&gt;One submission per person – duplicates will be removed and may result in disqualification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your submission must include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A custom README:&lt;/strong&gt; We provide a template in the starter files. Tell us about your process, the features you added, and what you learned. This is mandatory – no README means no valid submission.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A meaningful commit history:&lt;/strong&gt; We want to see how your solution evolved. Multiple commits that show your progress, not a single large dump at the end.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public access:&lt;/strong&gt; Make sure your live demo and GitHub repo are both publicly accessible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Deadline:&lt;/strong&gt; Monday, January 19th at 09:00 AM GMT. We'll lock the submission thread at that point.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we'll choose winners
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Stage 1: Shortlisting
&lt;/h3&gt;

&lt;p&gt;Our team reviews all valid submissions and selects five finalists. We're looking at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Engagement on your Frontend Mentor solution page (likes and bookmarks) – so share your solution link widely!&lt;/li&gt;
&lt;li&gt;Code quality: clean, readable, well-structured code with accessibility considered&lt;/li&gt;
&lt;li&gt;How well you've met the requirements – and whether you've gone beyond them&lt;/li&gt;
&lt;li&gt;Your README: the effort you put into documenting your process matters&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Stage 2: Community vote
&lt;/h3&gt;

&lt;p&gt;The five finalists go to a public vote. The community picks the top three winners.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prizes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🥇 &lt;strong&gt;1st place:&lt;/strong&gt; One-year Frontend Mentor Pro subscription ($96 value)&lt;/li&gt;
&lt;li&gt;🥈 &lt;strong&gt;2nd place:&lt;/strong&gt; One-month Pro subscription&lt;/li&gt;
&lt;li&gt;🥉 &lt;strong&gt;3rd place:&lt;/strong&gt; One-month Pro subscription&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The challenge
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11kbm2mtive5wn1lvfax.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11kbm2mtive5wn1lvfax.jpg" alt="Desktop design preview of the typing speed test challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll build a &lt;a href="https://www.frontendmentor.io/challenges/typing-speed-test" rel="noopener noreferrer"&gt;typing speed test&lt;/a&gt; with passages stored in a local &lt;code&gt;data.json&lt;/code&gt; file – no API setup needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core requirements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start a test by clicking Start or just typing&lt;/li&gt;
&lt;li&gt;Choose difficulty (Easy, Medium, Hard) and mode (Timed 60s or Passage)&lt;/li&gt;
&lt;li&gt;See real-time WPM, accuracy, and time while typing&lt;/li&gt;
&lt;li&gt;Get visual feedback: correct characters in green, errors in red/underlined, with a visible cursor&lt;/li&gt;
&lt;li&gt;Backspace to fix mistakes (original errors still count against accuracy)&lt;/li&gt;
&lt;li&gt;View results after each test with WPM, accuracy, and character counts&lt;/li&gt;
&lt;li&gt;Track personal bests with localStorage – celebrate when you beat your high score&lt;/li&gt;
&lt;li&gt;Responsive layout with proper hover and focus states&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideas to push further:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple test durations (15s, 30s, 60s, 120s)&lt;/li&gt;
&lt;li&gt;Different text categories: quotes, lyrics, code snippets&lt;/li&gt;
&lt;li&gt;Historical tracking of your WPM and accuracy over time&lt;/li&gt;
&lt;li&gt;A keyboard heatmap showing where you make mistakes&lt;/li&gt;
&lt;li&gt;Shareable result cards for social media&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Write a great README.&lt;/strong&gt; Seriously. This is where you tell the story of your solution – your approach, the problems you solved, the extras you added. A thoughtful README can be the difference between making the shortlist or not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start early.&lt;/strong&gt; You don't need to finish early, but starting early gives you room to iterate. The best solutions usually go through several rounds of refinement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Help others.&lt;/strong&gt; The Discord is full of people working on the same challenge. Answer questions, share what you've learned, and celebrate other people's progress. The hackathon is competitive, but the community spirit is what makes it fun.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessibility matters.&lt;/strong&gt; Keyboard navigation, focus management, screen reader support – these things count. A polished, accessible solution stands out.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can I use frameworks or libraries?&lt;/strong&gt;&lt;br&gt;
Yes – React, Vue, Svelte, vanilla JS, whatever you prefer. Use what you're comfortable with or what you want to learn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use AI tools?&lt;/strong&gt;&lt;br&gt;
Yes, but you should understand every line of code in your solution. Your README should reflect your own learning process and decisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm a beginner – is this for me?&lt;/strong&gt;&lt;br&gt;
Absolutely. Focus on completing the core requirements and writing a solid README. Clean, simple, and well-documented beats complex and buggy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I work with a teammate?&lt;/strong&gt;&lt;br&gt;
This is a solo challenge, but collaborating and helping each other in Discord is encouraged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key dates
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Starts:&lt;/strong&gt; Friday, December 19th&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Submissions close:&lt;/strong&gt; Monday, January 19th at 09:00 AM GMT&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Winners announced:&lt;/strong&gt; Thursday, January 22nd&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.frontendmentor.io/challenges/typing-speed-test" rel="noopener noreferrer"&gt;Typing Speed Test challenge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.frontendmentor.io/community" rel="noopener noreferrer"&gt;Discord server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com/channels/824970620529279006/1451266591932285089" rel="noopener noreferrer"&gt;#hackathon-chat channel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com/channels/824970620529279006/1098309837907038260" rel="noopener noreferrer"&gt;#help channel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Let's go!
&lt;/h2&gt;

&lt;p&gt;We can't wait to see what you create. Good luck, have fun, and don't forget to share your progress with #FM30Hackathon.&lt;/p&gt;

&lt;p&gt;Happy coding! 🎉&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>challenge</category>
      <category>javascript</category>
    </item>
    <item>
      <title>12 full-stack project ideas (with designs) for your developer portfolio</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Mon, 17 Nov 2025 16:17:21 +0000</pubDate>
      <link>https://dev.to/frontendmentor/12-full-stack-project-ideas-with-designs-for-your-developer-portfolio-4of3</link>
      <guid>https://dev.to/frontendmentor/12-full-stack-project-ideas-with-designs-for-your-developer-portfolio-4of3</guid>
      <description>&lt;p&gt;You need a portfolio to get hired. But most developers struggle with two problems: deciding what to build, and making their projects look professional enough to impress hiring managers.&lt;/p&gt;

&lt;p&gt;Hiring managers spend maybe 30 seconds on your portfolio. They're looking for proof you can build complete applications: frontend, backend, database, deployed. If your projects look unpolished or amateur, they move on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What makes a strong full-stack portfolio project?&lt;/strong&gt; Projects that demonstrate frontend, backend, database, and deployment skills together. Strong projects include real-world features like authentication, search functionality, data validation, and API design. Each project needs live deployment and public source code to prove you can build and ship complete applications.&lt;/p&gt;

&lt;p&gt;These projects prove you can build complete applications—exactly what employers look for.&lt;/p&gt;

&lt;p&gt;This guide gives you 12 concrete project ideas with professional designs already built. Each Frontend Mentor challenge provides the design and specifications. You add the frontend, backend, database, and deployment that prove your full-stack skills. The design is handled, so your projects look polished while you focus on the code that actually gets you hired.&lt;/p&gt;

&lt;p&gt;Many developers assume Frontend Mentor challenges are only for practicing HTML, CSS, and JavaScript, which is a missed opportunity. The challenges provide professional designs and clear specifications—exactly what you'd get from a design team at a real job. This makes them perfect foundations for full-stack projects where you add authentication, databases, APIs, and deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes a project "full-stack"?
&lt;/h2&gt;

&lt;p&gt;Let's define what "full-stack" means for a portfolio project.&lt;/p&gt;

&lt;p&gt;Full-stack isn't consuming a public API. That's frontend work. Full-stack means you built both the frontend and the backend, handled data persistence, and deployed everything to production.&lt;/p&gt;

&lt;p&gt;Every full-stack portfolio project should demonstrate these four areas:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Frontend implementation
&lt;/h3&gt;

&lt;p&gt;Your frontend shows you can build interfaces people actually use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Responsive design across devices&lt;/li&gt;
&lt;li&gt;Accessible components following &lt;a href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noopener noreferrer"&gt;WCAG guidelines&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;State management (e.g., React hooks, Redux, Zustand)&lt;/li&gt;
&lt;li&gt;Form handling with client-side validation&lt;/li&gt;
&lt;li&gt;Interactive elements that respond to user actions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Backend development
&lt;/h3&gt;

&lt;p&gt;The backend is where the behind-the-scenes work happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API endpoints you designed and built&lt;/li&gt;
&lt;li&gt;Authentication and authorization logic&lt;/li&gt;
&lt;li&gt;Server-side validation and business rules&lt;/li&gt;
&lt;li&gt;Error handling and logging&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Database management
&lt;/h3&gt;

&lt;p&gt;Prove you can handle data that persists:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database schema you designed&lt;/li&gt;
&lt;li&gt;CRUD operations (Create, Read, Update, Delete)&lt;/li&gt;
&lt;li&gt;Data relationships using foreign keys&lt;/li&gt;
&lt;li&gt;Queries that perform well under load&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Production considerations
&lt;/h3&gt;

&lt;p&gt;Exceptional full-stack portfolio projects are shipped and polished:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deployment to real hosting (&lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt;, &lt;a href="https://railway.com/" rel="noopener noreferrer"&gt;Railway&lt;/a&gt;, &lt;a href="https://render.com/" rel="noopener noreferrer"&gt;Render&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Environment configuration and secrets management&lt;/li&gt;
&lt;li&gt;Error handling that degrades gracefully&lt;/li&gt;
&lt;li&gt;Performance optimization (lazy loading, caching, code splitting)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These 12 Frontend Mentor challenges meet all four requirements when you add full-stack features and the production bells and whistles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Complete example: Todo app as a full-stack project
&lt;/h2&gt;

&lt;p&gt;Let's walk through one project from start to finish. This shows exactly how to transform a Frontend Mentor challenge into a full-stack portfolio piece.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Starting point:&lt;/strong&gt; The &lt;a href="https://www.frontendmentor.io/challenges/todo-app-Su1_KokOW" rel="noopener noreferrer"&gt;Todo app challenge&lt;/a&gt; provides a complete design with light/dark themes, drag-and-drop reordering, and filtering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your potential full-stack implementation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend (React + TypeScript):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Component-based architecture with React&lt;/li&gt;
&lt;li&gt;Drag-and-drop with react-beautiful-dnd&lt;/li&gt;
&lt;li&gt;Form management using React Hook Form&lt;/li&gt;
&lt;li&gt;Optimistic UI updates (update immediately, sync with backend after)&lt;/li&gt;
&lt;li&gt;Dark mode toggle persisted in local storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Backend (Express.js + Node.js):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RESTful API with endpoints:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;POST /api/todos&lt;/code&gt; - Create new todo&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/todos&lt;/code&gt; - Fetch user's todos&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PATCH /api/todos/:id&lt;/code&gt; - Update todo (complete, reorder)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DELETE /api/todos/:id&lt;/code&gt; - Delete todo&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;JWT authentication with HTTP-only cookies&lt;/li&gt;

&lt;li&gt;Input validation using express-validator&lt;/li&gt;

&lt;li&gt;Rate limiting to prevent abuse&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Database (PostgreSQL):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Users table&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="n"&gt;UUID&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="n"&gt;gen_random_uuid&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;UNIQUE&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;password_hash&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;created_at&lt;/span&gt; &lt;span class="nb"&gt;TIMESTAMP&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="n"&gt;NOW&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- Todos table&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;todos&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="n"&gt;UUID&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="n"&gt;gen_random_uuid&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="n"&gt;UUID&lt;/span&gt; &lt;span class="k"&gt;REFERENCES&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;DELETE&lt;/span&gt; &lt;span class="k"&gt;CASCADE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nb"&gt;text&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;completed&lt;/span&gt; &lt;span class="nb"&gt;BOOLEAN&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="k"&gt;position&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;created_at&lt;/span&gt; &lt;span class="nb"&gt;TIMESTAMP&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="n"&gt;NOW&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- Index for fast queries&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;INDEX&lt;/span&gt; &lt;span class="n"&gt;idx_todos_user_position&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;todos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;position&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Deployment:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Full-stack (all-in-one):&lt;/strong&gt; &lt;a href="https://vercel.com/docs" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt;, &lt;a href="https://docs.railway.com/" rel="noopener noreferrer"&gt;Railway&lt;/a&gt;, or &lt;a href="https://render.com/docs" rel="noopener noreferrer"&gt;Render&lt;/a&gt; can each host your entire application (frontend, backend, and database)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separate deployment:&lt;/strong&gt; Frontend deployed separately to backend and database&lt;/li&gt;
&lt;li&gt;Environment variables managed through platform dashboards&lt;/li&gt;
&lt;li&gt;CI/CD: GitHub Actions runs tests before deploying&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Architecture:&lt;/strong&gt;&lt;br&gt;
Frontend → API calls over HTTPS → Backend → PostgreSQL&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this proves:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can design RESTful APIs&lt;/li&gt;
&lt;li&gt;You understand authentication flows&lt;/li&gt;
&lt;li&gt;You can model data relationships&lt;/li&gt;
&lt;li&gt;You know how to deploy full applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a foundation project, so keep it simple. You don't need OAuth, WebSockets, or complex caching. Focus on getting the four core areas right. Once you have one solid full-stack project deployed, the next one becomes easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 12 full-stack project ideas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;About these groupings:&lt;/strong&gt; We've grouped these projects by full-stack implementation complexity, not by Frontend Mentor's challenge difficulty ratings. A challenge marked "intermediate" on Frontend Mentor might be "foundation" here if the full-stack patterns are straightforward. Start with foundation projects to learn core patterns, then move to more complex architectures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; When we talk about "full-stack skills to add," these are ideas you can pick and choose from. You control the tech stack, features, and tools you use. Some of the ideas are advanced and overkill for the projects. However, going overkill is &lt;em&gt;exactly&lt;/em&gt; what will teach you more lessons and demonstrate your skills and passion.&lt;/p&gt;

&lt;h3&gt;
  
  
  Foundation projects: learning core full-stack patterns
&lt;/h3&gt;

&lt;p&gt;These four projects teach fundamental full-stack architecture: how frontends talk to backends, how data persists, and how everything deploys together.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Todo app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftlkfwjnfhfe57dbjf3d0.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftlkfwjnfhfe57dbjf3d0.webp" alt="Todo app interface showing task list with light and dark mode themes" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL&lt;/strong&gt;: &lt;a href="https://www.frontendmentor.io/challenges/todo-app-Su1_KokOW" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/todo-app-Su1_KokOW&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The classic todo app becomes full-stack when you add persistent storage and user accounts. The design leaves room for you to take the project in different directions with full-stack features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add, mark as complete, and delete todos&lt;/li&gt;
&lt;li&gt;Filter by all/active/complete todos&lt;/li&gt;
&lt;li&gt;Clear all completed todos&lt;/li&gt;
&lt;li&gt;Toggle light and dark mode&lt;/li&gt;
&lt;li&gt;Drag and drop to reorder items&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; State management for todo list, form validation, drag-and-drop persistence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; RESTful API, CRUD endpoints for todos, user session management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Todo storage (PostgreSQL or MongoDB), user associations, completion status tracking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Real-time sync across browser tabs/devices using WebSockets, JWT authentication, todo categories or priorities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Built a todo task manager with user authentication. Implemented RESTful API design, database CRUD operations, and real-time updates across devices using WebSockets."&lt;/p&gt;

&lt;p&gt;This project teaches how data flows from UI interactions through API calls to database storage. The simplicity of todos lets you focus on getting the architecture right.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Bookmark manager
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8j18mtgsm883am9lddr.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8j18mtgsm883am9lddr.webp" alt="Bookmark manager app with tag filtering and search functionality" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL&lt;/strong&gt;: &lt;a href="https://www.frontendmentor.io/challenges/bookmark-manager-app" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/bookmark-manager-app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A bookmark manager teaches you hierarchical data, search, and user-generated content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add bookmarks with title, description, URL, and tags&lt;/li&gt;
&lt;li&gt;View all bookmarks with details (favicon, title, URL, description, tags, view count, last visited, date added)&lt;/li&gt;
&lt;li&gt;Search bookmarks by title&lt;/li&gt;
&lt;li&gt;Filter by one or multiple tags&lt;/li&gt;
&lt;li&gt;View and manage archived bookmarks&lt;/li&gt;
&lt;li&gt;Pin/unpin bookmarks&lt;/li&gt;
&lt;li&gt;Edit bookmark details&lt;/li&gt;
&lt;li&gt;Copy URLs to clipboard&lt;/li&gt;
&lt;li&gt;Sort by recently added, recently visited, or most visited&lt;/li&gt;
&lt;li&gt;Toggle light/dark themes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Multi-tag filtering logic, search with debouncing, URL validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Favicon fetching service, metadata extraction from URLs, RESTful endpoints for bookmarks/tags/archives&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Many-to-many tag relationships, view count tracking, archive status, pinned status indexing for fast queries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Browser extension for one-click bookmarking, duplicate URL detection, automatic categorization using ML&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Created a bookmark manager with advanced filtering, tag system, and search. Implemented many-to-many database relationships, full-text search, and automatic metadata extraction from URLs."&lt;/p&gt;

&lt;p&gt;Bookmarks force you to think about complex data relationships. Tags have many bookmarks, bookmarks have many tags, and you need efficient queries for filtering by multiple tags simultaneously.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Note-taking web app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7sgl0uvuf7p0sywcv5ha.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7sgl0uvuf7p0sywcv5ha.webp" alt="Note-taking web app with markdown editor and tag organization" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL&lt;/strong&gt;: &lt;a href="https://www.frontendmentor.io/challenges/note-taking-web-app-773r7bUfOG" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/note-taking-web-app-773r7bUfOG&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A note-taking app teaches real-time data persistence and rich content handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create, read, update, and delete notes&lt;/li&gt;
&lt;li&gt;Archive notes&lt;/li&gt;
&lt;li&gt;View all notes and archived notes separately&lt;/li&gt;
&lt;li&gt;View notes filtered by specific tags&lt;/li&gt;
&lt;li&gt;Search notes by title, tag, and content&lt;/li&gt;
&lt;li&gt;Select color and font themes&lt;/li&gt;
&lt;li&gt;Form validation for required fields&lt;/li&gt;
&lt;li&gt;Keyboard navigation for all features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Rich text editor integration (TipTap or Slate), auto-save with debouncing, keyboard shortcuts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Note versioning API, full-text search with &lt;a href="https://www.postgresql.org/docs/current/textsearch-intro.html" rel="noopener noreferrer"&gt;PostgreSQL&lt;/a&gt; or Elasticsearch, conflict resolution for concurrent edits&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Note content storage with timestamps, many-to-many tag relationships, search indexing for title and content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Markdown support with preview, note sharing with permission levels (view-only, edit), version history with restore capability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Built a feature-rich note-taking app with auto-save, tagging, and full-text search. Demonstrates real-time data persistence, conflict resolution for concurrent edits, and database indexing for search performance."&lt;/p&gt;

&lt;p&gt;Auto-save functionality teaches you about debouncing, optimistic UI updates, and graceful error handling. These patterns appear in most production applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Markdown editor
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqkpp92vlsbeff1w0483.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqkpp92vlsbeff1w0483.webp" alt="In-browser markdown editor with live preview pane" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL&lt;/strong&gt;: &lt;a href="https://www.frontendmentor.io/challenges/inbrowser-markdown-editor-r16TrrQX9" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/inbrowser-markdown-editor-r16TrrQX9&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An in-browser markdown editor shows you can handle text processing and document management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create, read, update, and delete markdown documents&lt;/li&gt;
&lt;li&gt;Name and save documents&lt;/li&gt;
&lt;li&gt;Edit markdown and see formatted preview&lt;/li&gt;
&lt;li&gt;View full-page preview of formatted content&lt;/li&gt;
&lt;li&gt;Toggle between edit/preview modes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Split-pane editor layout, live markdown preview rendering, syntax highlighting, keyboard shortcuts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Document storage and retrieval API, markdown-to-HTML conversion on server, export to PDF or HTML&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Document storage with versioning, folder organization, document relationships&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Template system for common documents, collaborative editing with operational transforms, revision history with diff visualization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Developed an in-browser markdown editor with live preview, document management, and export functionality. Shows understanding of text processing, file handling, and document versioning systems."&lt;/p&gt;

&lt;p&gt;This project is great for understanding different approaches to data storage. Do you save on every keystroke, every few seconds, or when the user explicitly saves? Each approach has trade-offs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Intermediate projects: multi-feature applications
&lt;/h3&gt;

&lt;p&gt;These five projects involve multiple interconnected features, teaching you how to architect more complex applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Personal blog
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhc4q01beqrm99qjs4eaj.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhc4q01beqrm99qjs4eaj.webp" alt="Personal blog homepage with article listings and newsletter signup" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL&lt;/strong&gt;: &lt;a href="https://www.frontendmentor.io/challenges/personal-blog-lJpVCnmozL" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/personal-blog-lJpVCnmozL&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building your own personal blog demonstrates content management and publication workflows. You can make it as simple as a static blog or as complex as a full CMS with scheduling, drafts, and analytics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate between pages (Home, article pages)&lt;/li&gt;
&lt;li&gt;Read all articles&lt;/li&gt;
&lt;li&gt;Select color theme&lt;/li&gt;
&lt;li&gt;Subscribe to newsletter with email validation&lt;/li&gt;
&lt;li&gt;Form validation with error/success messages&lt;/li&gt;
&lt;li&gt;Multi-page navigation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Article listing with pagination, category filtering, responsive image handling, social sharing buttons&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; CMS functionality, content API with pagination, image upload and processing, newsletter API integration (Mailchimp/SendGrid)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Posts with rich text content, categories and tags, subscriber list management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Draft/published workflow with scheduled publishing, SEO optimization with dynamic meta tags, RSS feed generation, reading time calculation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Created a full-featured blog with CMS, commenting, and newsletter integration. Demonstrates content delivery patterns and automated email workflows."&lt;/p&gt;

&lt;p&gt;Building a CMS teaches you about content workflows (draft → review → publish) and how to structure content APIs that scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Mood tracking app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foe2ivk8u95lfd5ka8x23.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foe2ivk8u95lfd5ka8x23.webp" alt="Mood tracking app dashboard showing mood trends and analytics" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL:&lt;/strong&gt; &lt;a href="https://www.frontendmentor.io/challenges/mood-tracking-app-E2XeKhDF0B" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/mood-tracking-app-E2XeKhDF0B&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A mood tracker introduces time-series data and analytics features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Log mood, feelings, reflections, and sleep daily&lt;/li&gt;
&lt;li&gt;See today's mood entry details&lt;/li&gt;
&lt;li&gt;View mood quotes based on current mood&lt;/li&gt;
&lt;li&gt;See graph of most recent 11 records&lt;/li&gt;
&lt;li&gt;Interact with chart bars to see details for that day&lt;/li&gt;
&lt;li&gt;View average mood/sleep from past 5 check-ins vs. previous 5&lt;/li&gt;
&lt;li&gt;Update name and avatar through settings&lt;/li&gt;
&lt;li&gt;Form validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Data visualization with Chart.js or D3, calendar view for historical entries, trend displays with comparison periods&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Time-series data handling, analytics calculations (rolling averages, streaks, patterns), scheduled notification system for reminders&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Daily mood entries with timestamps, pattern analysis queries with window functions, historical data retention policies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Mood insights using ML (pattern detection), customizable reminder notifications, data export to CSV/JSON, correlation analysis (mood vs. sleep, mood vs. weather API)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Built a mood tracking app with data visualization and trend analysis. Shows proficiency in time-series data handling, analytics implementation using SQL window functions, and scheduled background jobs."&lt;/p&gt;

&lt;p&gt;Time-series data has unique challenges. How do you efficiently query for trends across months? How do you handle missing days? How do you visualize patterns over different time periods?&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Entertainment web app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8yigsivt0x6w4xuj8v12.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8yigsivt0x6w4xuj8v12.webp" alt="Entertainment web app showing interface movies and TV series" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL&lt;/strong&gt;: &lt;a href="https://www.frontendmentor.io/challenges/entertainment-web-app-J-UhgAW1X" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/entertainment-web-app-J-UhgAW1X&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An entertainment app teaches content organization and user preference tracking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate between Home, Movies, TV Series, and Bookmarked Shows pages&lt;/li&gt;
&lt;li&gt;Add/remove bookmarks from all movies and TV series&lt;/li&gt;
&lt;li&gt;Search for shows across all pages&lt;/li&gt;
&lt;li&gt;View content with thumbnail images&lt;/li&gt;
&lt;li&gt;Page-specific filtering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Grid layouts for content browsing, search and filter functionality, infinite scroll for large catalogs, responsive image loading&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Integration with TMDB or OMDb API for real content, caching layer for API responses, rate limiting for external APIs, recommendation logic based on user signals (bookmarks, ratings, search history)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Bookmarked content with timestamps, user ratings and reviews, search history for personalization, user preferences and genre tracking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Content recommendations based on bookmark patterns and ratings using collaborative filtering, social features (share bookmarks with friends), content alerts for new seasons of bookmarked shows, similar content suggestions based on what users bookmark together&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Developed an entertainment web app with content organization, bookmarking, and personalized recommendations. Demonstrates third-party API integration, caching strategies for rate-limited APIs, and recommendation algorithms based on user interaction patterns."&lt;/p&gt;

&lt;p&gt;This project teaches you to work with rate-limited external APIs, cache expensive API calls effectively, and build recommendation systems from implicit signals (bookmarks, searches, ratings) rather than explicit viewing data.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Product feedback app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv41k6u56erj5ftrzipv9.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv41k6u56erj5ftrzipv9.webp" alt="Product feedback app with voting system" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL&lt;/strong&gt;: &lt;a href="https://www.frontendmentor.io/challenges/product-feedback-app-wbvUYqjR6" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/product-feedback-app-wbvUYqjR6&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A feedback management system shows you can build social features and voting mechanisms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create, read, update, and delete feedback requests&lt;/li&gt;
&lt;li&gt;Form validations for feedback creation/editing&lt;/li&gt;
&lt;li&gt;Sort suggestions by most/least upvotes and most/least comments&lt;/li&gt;
&lt;li&gt;Filter suggestions by category&lt;/li&gt;
&lt;li&gt;Add comments and replies to feedback&lt;/li&gt;
&lt;li&gt;Upvote feedback requests&lt;/li&gt;
&lt;li&gt;View different suggestion states (suggestion, planned, in-progress, live)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Upvoting UI with optimistic updates, threaded comment display, sorting and filtering, status badge UI, form validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Vote tallying with race condition handling using database transactions, comment threading logic, sorting algorithms (hot, top, new), moderation tools, status workflow management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Feedback items with status field, vote tracking with unique constraints (preventing duplicate votes), comment trees using adjacency list or nested sets, user permission levels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Status workflow automation (planned → in-progress → complete), email notifications for status changes, roadmap view showing in-progress items, admin dashboard for feedback management and analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Created a feedback management system with voting, threaded comments, and status workflows. Shows understanding of social features, concurrent action handling with database transactions, and permission-based systems."&lt;/p&gt;

&lt;p&gt;Voting systems are trickier than they look. You need to prevent users from voting multiple times using unique constraints, handle race conditions when tallying votes with database transactions, and efficiently sort by vote count with proper indexing.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Kanban task management app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2bhldhslyvdkyt8uahg.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2bhldhslyvdkyt8uahg.webp" alt="Kanban task management board with drag-and-drop columns" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL&lt;/strong&gt;: &lt;a href="https://www.frontendmentor.io/challenges/kanban-task-management-web-app-wgQLt-HlbB" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/kanban-task-management-web-app-wgQLt-HlbB&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A Kanban board demonstrates complex state management and real-time features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create, read, update, and delete boards and tasks&lt;/li&gt;
&lt;li&gt;Form validations for creating/editing boards and tasks&lt;/li&gt;
&lt;li&gt;Mark subtasks as complete&lt;/li&gt;
&lt;li&gt;Move tasks between columns&lt;/li&gt;
&lt;li&gt;Hide/show board sidebar&lt;/li&gt;
&lt;li&gt;Toggle light/dark themes&lt;/li&gt;
&lt;li&gt;Drag and drop to reorder tasks (bonus)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Drag-and-drop with react-beautiful-dnd or dnd-kit, multi-board management, task detail modals, real-time updates with optimistic UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Task ordering persistence, board state management, WebSocket connections for real-time collaboration, conflict resolution for concurrent edits&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Boards with column definitions, tasks with position ordering, subtasks with completion tracking, cross-board task relationships for linking related work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Real-time collaboration (see other users' changes live), task assignments to team members, activity logs for audit trails, task comments and attachments, due dates with notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Built a Kanban board with drag-and-drop task management, multi-board support, and real-time collaboration. Demonstrates complex state management, WebSocket implementation for live updates, and optimistic UI updates with rollback on errors."&lt;/p&gt;

&lt;p&gt;Drag-and-drop with database persistence teaches you about optimistic updates (update the UI immediately, save to database afterward) and conflict resolution when multiple users edit simultaneously. Position ordering requires careful indexing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advanced projects: production-scale applications
&lt;/h3&gt;

&lt;p&gt;These three projects involve complex business logic and production requirements that mirror real-world applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Invoice app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F15jg2nc7s7sjv4fso72s.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F15jg2nc7s7sjv4fso72s.webp" alt="Invoice app interface showing invoice list" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL&lt;/strong&gt;: &lt;a href="https://www.frontendmentor.io/challenges/invoice-app-i7KaLTQjl" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/invoice-app-i7KaLTQjl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An invoicing system demonstrates business logic and working with financial calculations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create, read, update, and delete invoices&lt;/li&gt;
&lt;li&gt;Form validations for invoice creation/editing&lt;/li&gt;
&lt;li&gt;Save draft invoices&lt;/li&gt;
&lt;li&gt;Mark pending invoices as paid&lt;/li&gt;
&lt;li&gt;Filter invoices by status (draft/pending/paid)&lt;/li&gt;
&lt;li&gt;Toggle light/dark mode&lt;/li&gt;
&lt;li&gt;Multi-item invoice line items&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Complex form validation with dynamic line items, invoice status workflows with visual indicators, date pickers for due dates, filter UI for status&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Invoice calculations with line item totals and tax, invoice number generation with sequential IDs, PDF generation for invoices using libraries like PDFKit or Puppeteer, status change validation (prevent editing paid invoices)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Client information storage, invoices with status and dates, line items (one-to-many relationship), invoice totals calculated and stored, proper &lt;a href="https://www.postgresql.org/docs/current/datatype-numeric.html" rel="noopener noreferrer"&gt;DECIMAL types&lt;/a&gt; for currency&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Email invoice delivery as PDF attachment using SendGrid/Resend, duplicate invoice functionality to speed up similar invoices, invoice templates for common services, overdue invoice indicators based on due date, simple invoice statistics (total revenue, pending amount, paid this month)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Developed an invoicing system with PDF generation and status workflows. Demonstrates business logic implementation (calculating totals, applying tax), handling financial data with proper decimal precision, and workflow state management with validation rules."&lt;/p&gt;

&lt;p&gt;This project teaches you about financial calculations (always use DECIMAL, never FLOAT), state machines (draft → pending → paid transitions with rules), dynamic forms (adding/removing line items), and PDF generation. The complexity comes from getting business logic right: line item totals, tax calculations, preventing invalid state changes, and maintaining data integrity.&lt;/p&gt;

&lt;h3&gt;
  
  
  11. Link-sharing app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc0hy3m6xhzqlps0ou3zi.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc0hy3m6xhzqlps0ou3zi.webp" alt="Link-sharing app profile page with customizable link list" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL&lt;/strong&gt;: &lt;a href="https://www.frontendmentor.io/challenges/linksharing-app-Fbt7yweGsT" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/linksharing-app-Fbt7yweGsT&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A link-in-bio platform teaches user profiles and link management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create, read, update, delete links&lt;/li&gt;
&lt;li&gt;See preview in mobile mockup&lt;/li&gt;
&lt;li&gt;Form validations (URL pattern matching per platform)&lt;/li&gt;
&lt;li&gt;Drag and drop links to reorder&lt;/li&gt;
&lt;li&gt;Add profile details (picture, first name, last name, email)&lt;/li&gt;
&lt;li&gt;Profile detail validations&lt;/li&gt;
&lt;li&gt;Preview devlinks profile&lt;/li&gt;
&lt;li&gt;Copy profile link to clipboard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Profile customization with theme options, drag-and-drop link reordering, live preview mode, image upload with cropping&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; URL validation and sanitization, custom subdomain routing (username.yourapp.com), click analytics tracking with user-agent parsing, public profile API for sharing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; User profiles with unique slugs, links with ordering (position field), click tracking with timestamps and metadata, theme preferences&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Custom domain support (bring your own domain), QR code generation for profiles, A/B testing different link orders, integration with social platform APIs for follower counts, scheduled link activation/deactivation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Created a link-sharing platform with analytics, customization, and custom subdomain routing. Demonstrates multi-tenant architecture, analytics implementation with efficient aggregation queries, and URL routing patterns."&lt;/p&gt;

&lt;p&gt;This project demonstrates multi-tenancy: each user has their own public page, subdomain, and analytics. You'll learn about slug uniqueness with database constraints, efficient analytics queries with proper indexing, and public vs. authenticated endpoints.&lt;/p&gt;

&lt;h3&gt;
  
  
  12. Personal finance app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9flkqopbswpnvsdx92fr.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9flkqopbswpnvsdx92fr.webp" alt="Personal finance app dashboard showing budgets and spending analytics" width="700" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge URL&lt;/strong&gt;: &lt;a href="https://www.frontendmentor.io/challenges/personal-finance-app-JfjtZgyMt1" rel="noopener noreferrer"&gt;https://www.frontendmentor.io/challenges/personal-finance-app-JfjtZgyMt1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A finance manager demonstrates complex data relationships and thoughtful data visualization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the challenge includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Overview page showing all financial data at-a-glance&lt;/li&gt;
&lt;li&gt;Transactions page with pagination (10 per page)&lt;/li&gt;
&lt;li&gt;Search, sort, and filter transactions&lt;/li&gt;
&lt;li&gt;CRUD operations for budgets and saving pots&lt;/li&gt;
&lt;li&gt;View latest 3 transactions per budget category&lt;/li&gt;
&lt;li&gt;View progress towards each pot goal&lt;/li&gt;
&lt;li&gt;Add/withdraw money from pots&lt;/li&gt;
&lt;li&gt;View recurring bills with status for current month&lt;/li&gt;
&lt;li&gt;Search and sort recurring bills&lt;/li&gt;
&lt;li&gt;Form validation throughout&lt;/li&gt;
&lt;li&gt;Keyboard navigation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-stack skills to add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Complex forms with validation, charts for spending analysis (Chart.js/Recharts), budget vs. actual comparisons with visual indicators, transaction categorization UI, pagination controls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; CSV transaction import with parsing and validation, budget limit alerts when thresholds exceeded, data aggregation for reports and charts, recurring bill detection from transaction patterns, spending summary calculations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Accounts with balances, transactions with categories (foreign keys), budgets with time periods and spending limits, pots with target amounts, recurring bills with due dates, complex queries for spending patterns using GROUP BY and window functions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus:&lt;/strong&gt; Manual transaction categorization with suggestions based on merchant names, spending insights by category (top spending categories, unusual spending alerts), budget vs. actual visual comparisons with percentage indicators, CSV export for backup, custom budget categories, bill payment reminders with email notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to present it:&lt;/strong&gt; "Built a personal finance manager with transaction tracking, budget management, and spending analytics. Demonstrates handling sensitive financial data with proper input validation, complex data relationships with foreign keys, and data aggregation using SQL for reporting dashboards."&lt;/p&gt;

&lt;p&gt;This project focuses on the data modeling and visualization challenges of personal finance: proper decimal handling for currency, time-based aggregations (spending this month vs. last month), budget tracking with alerts, and presenting complex financial data clearly. You don't need real bank connections to show you understand financial data architecture and can build meaningful analytics.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to present these projects in your portfolio
&lt;/h2&gt;

&lt;p&gt;Building the projects is half the work. How you present them determines whether you get interviews.&lt;/p&gt;

&lt;h3&gt;
  
  
  Essential information for each project
&lt;/h3&gt;

&lt;p&gt;Every project in your portfolio needs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live demo link:&lt;/strong&gt; Deploy your project so employers can actually use it. A broken or missing demo link is worse than no link at all. Use platforms like Vercel, Railway, or Render.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; Your code must be public and well-organized. Private repos make it impossible for potential employers to review your code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technologies used:&lt;/strong&gt; List your frontend framework, backend language/framework, database, and any major libraries. Be specific: "React 19 with TypeScript, Express.js, PostgreSQL 15" tells more than "React, Node, Database."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features and challenges:&lt;/strong&gt; In 2-3 sentences, explain what the project does and what made it interesting to build. Don't list features. Explain what you learned or what problems you solved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your architecture decisions:&lt;/strong&gt; Why did you choose PostgreSQL over MongoDB? Why serverless functions instead of a traditional server? Why JWT authentication instead of sessions? These decisions show how you think.&lt;/p&gt;

&lt;h3&gt;
  
  
  README best practices
&lt;/h3&gt;

&lt;p&gt;Your README is your first impression. Make it count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project description:&lt;/strong&gt; One paragraph explaining what the project does and who it's for. Don't make readers guess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setup instructions:&lt;/strong&gt; Step-by-step commands to run locally. Assume the reader knows nothing about your project. List all environment variables with example values. If it takes more than 5 minutes to get running, document why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture overview:&lt;/strong&gt; A simple diagram or explanation of how your frontend talks to your backend, where data lives, and how pieces connect. This is critical for full-stack projects. Show employers you understand the whole system, not individual pieces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical decisions:&lt;/strong&gt; Pick 2-3 interesting decisions you made and explain them. "I chose PostgreSQL over MongoDB because the relationships between users, projects, and tasks were well-defined and benefited from foreign key constraints and ACID transactions."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screenshots:&lt;/strong&gt; Show the major features in action. Include both desktop and mobile views to prove responsive design. Use screenshots to tell the story of your app's workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to highlight in descriptions
&lt;/h3&gt;

&lt;p&gt;When describing each project on your portfolio site:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full-stack challenges you solved:&lt;/strong&gt; "Implemented real-time sync between multiple browser tabs using WebSockets and conflict resolution logic for concurrent edits." This is far better than "Built a todo app."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical decisions and trade-offs:&lt;/strong&gt; "Used optimistic UI updates for instant feedback, with rollback on server errors and retry logic for failed requests." Shows you understand user experience and error handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance optimizations:&lt;/strong&gt; "Reduced initial page load from 3.2s to 1.1s by implementing image lazy loading and code splitting for route components." Proves you think about refining and optimizing your projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security considerations:&lt;/strong&gt; "Added rate limiting on authentication endpoints to prevent brute force attacks. Implemented CSRF protection and secure HTTP-only cookies for session management." Shows security awareness beyond hashing passwords.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you'd do differently:&lt;/strong&gt; "Next time, I'd use TypeScript on the backend, not just the frontend. I spent too much time debugging runtime errors that TypeScript would have caught. I'd also implement proper error handling middleware earlier instead of having try-catch blocks everywhere." Demonstrates learning about type safety across the stack and code organization.&lt;/p&gt;

&lt;p&gt;If you're a developer with no professional experience, you need to lean into these methods of showcasing your understanding. Professional developers can easily point to quantifiable work they've done in their jobs and add it to their resumes. &lt;/p&gt;

&lt;p&gt;But, as a newbie, you need to treat your portfolio projects as real-world apps and write about your learnings and improvements to showcase your knowledge.&lt;/p&gt;

&lt;h3&gt;
  
  
  Portfolio website structure
&lt;/h3&gt;

&lt;p&gt;Organize your projects intentionally:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lead with your strongest work:&lt;/strong&gt; Put your best full-stack project first. This is what gets reviewed in those critical first 30 seconds. Make it count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Group logically:&lt;/strong&gt; You can organize by technology (React projects, Vue projects) or by complexity (foundation projects, advanced projects). Make it easy to navigate. Avoid random ordering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Include action buttons:&lt;/strong&gt; Every project needs clear "View Live" and "View Code" buttons above the fold. Don't make employers hunt for these links.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show don't tell:&lt;/strong&gt; Screenshots prove your design skills. GIFs prove your interactions work. Videos demonstrate complex features such as drag-and-drop and real-time collaboration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical summaries:&lt;/strong&gt; 2-3 sentences per project explaining the tech stack and key features. Save the deep dive for the README.&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking it further: adding full-stack features
&lt;/h2&gt;

&lt;p&gt;Frontend Mentor challenges provide professional designs, but the full-stack implementation is yours to define. Here are features you can add to any project to demonstrate advanced full-stack skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  Authentication &amp;amp; authorization
&lt;/h3&gt;

&lt;p&gt;User accounts transform simple apps into full-stack showcases:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User registration and login:&lt;/strong&gt; Implement email/password authentication with proper password hashing (bcrypt or Argon2). Include email verification to prevent fake accounts and improve security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JWT or session management:&lt;/strong&gt; Choose based on your architecture. JWTs work well for stateless APIs and microservices. Sessions work better for traditional server-rendered apps or when you need instant logout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role-based access control:&lt;/strong&gt; Add admin users who can moderate content and regular users with limited permissions. Implement middleware to check permissions on protected routes. This shows you understand multi-tenant systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Password reset workflows:&lt;/strong&gt; Implement "forgot password" with time-limited email tokens. This involves email sending (SendGrid/Resend), secure token generation, token expiration, and secure token validation. Test the full workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-time features
&lt;/h3&gt;

&lt;p&gt;Real-time updates make applications feel modern:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WebSocket connections:&lt;/strong&gt; Use Socket.io or native WebSockets to push updates from server to client instantly. Implement reconnection logic for dropped connections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live updates and notifications:&lt;/strong&gt; Show users when new content appears without requiring a page refresh. The product feedback app is perfect for this: notify users when someone comments on their feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collaborative editing:&lt;/strong&gt; Allow multiple users to work on the same document simultaneously. This involves operational transforms or CRDTs (advanced but impressive). Start with simpler presence indicators (showing who's online).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activity feeds:&lt;/strong&gt; Display a stream of recent actions (user X added a task, user Y commented). This demonstrates event-driven architecture and real-time data streaming.&lt;/p&gt;

&lt;h3&gt;
  
  
  Third-party integrations
&lt;/h3&gt;

&lt;p&gt;Integrating external services shows you can work with APIs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Email services:&lt;/strong&gt; Use SendGrid or Resend to send transactional emails (welcome emails, password resets, notifications). Handle delivery failures gracefully.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud storage:&lt;/strong&gt; Store user-uploaded images on AWS S3, Cloudinary, or Cloudflare R2. This shows you understand file handling beyond local storage and can work with cloud services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Social authentication:&lt;/strong&gt; Add "Sign in with Google" or GitHub OAuth. This demonstrates understanding of the OAuth flow, token management, and linking social accounts to user profiles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;External data APIs:&lt;/strong&gt; Pull in real data from services like weather APIs, news APIs, or the TMDB API for the entertainment app. Implement proper error handling for API failures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advanced data features
&lt;/h3&gt;

&lt;p&gt;These features show you can handle complex data:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full-text search:&lt;/strong&gt; Implement search across text content using &lt;a href="https://www.postgresql.org/docs/current/textsearch.html" rel="noopener noreferrer"&gt;PostgreSQL full-text search&lt;/a&gt; or Elasticsearch. The note-taking app is ideal for this. Include relevance ranking and highlighting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data export/import:&lt;/strong&gt; Let users export their data to CSV or JSON and import it back. This demonstrates data transformation skills and gives users confidence in data portability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analytics and reporting:&lt;/strong&gt; Build dashboards that show usage patterns, trends over time, and performance metrics. The mood tracker is perfect for this. Use SQL window functions for rolling averages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caching strategies:&lt;/strong&gt; Implement Redis caching for expensive queries or API calls. Add cache invalidation logic. This shows performance awareness and understanding of caching patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Production polish
&lt;/h3&gt;

&lt;p&gt;These details separate portfolio projects from production applications:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CI/CD pipelines:&lt;/strong&gt; Set up &lt;a href="https://docs.github.com/en/actions" rel="noopener noreferrer"&gt;GitHub Actions&lt;/a&gt; to run tests and deploy automatically on push to main. Include linting, type checking, and test coverage reports. This demonstrates DevOps awareness.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error logging and monitoring:&lt;/strong&gt; Integrate Sentry or similar to track errors in production. Set up alerts for critical errors. Shows you care about user experience after deployment and can debug production issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance optimization:&lt;/strong&gt; Implement lazy loading, code splitting, and image optimization. Measure before and after with Lighthouse. Document the improvements with specific metrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security best practices:&lt;/strong&gt; Add rate limiting to prevent abuse, input sanitization to prevent XSS, CORS configuration, security headers (CSP, X-Frame-Options), and dependency scanning. These details show production readiness.&lt;/p&gt;

&lt;p&gt;I've personally seen community members take our challenges well beyond the brief and add production polish.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05v8ddxgfsw47ntc138q.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05v8ddxgfsw47ntc138q.jpg" alt="X/Twitter post from Toyan saying: The online version of my Connect Four game is live. You can now play with friends no matter where they are. You can even talk to them while playing, yep, voice chat is built in. And to make it more fun, there are achievements you can unlock as you go." width="738" height="881"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://x.com/_Annonnymouss_/status/1914306970342904068" rel="noopener noreferrer"&gt;One example is Toyan&lt;/a&gt; (above), who completed our Connect Four game project and transformed it into a full-stack multiplayer experience. He added real-time multiplayer features (including the ability to spectate other players' games), an achievement system, and much more. This project would make an incredible portfolio piece, leaving room for valuable interview conversations and discussions to showcase knowledge and passion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common mistakes to avoid
&lt;/h2&gt;

&lt;p&gt;Even with great projects, poor presentation can hurt your chances. Here's what to avoid.&lt;/p&gt;

&lt;h3&gt;
  
  
  Weak project documentation
&lt;/h3&gt;

&lt;p&gt;Generic READMEs damage your credibility. "This is a todo app built with React" tells employers nothing.&lt;/p&gt;

&lt;p&gt;Explain your technical decisions. MongoDB for flexible schemas? PostgreSQL for ACID transactions? Express over Fastify? These decisions reveal your thinking.&lt;/p&gt;

&lt;p&gt;Include working setup instructions. List environment variables with example values. Explain where to get API keys and how to set up the database. Test your instructions on a fresh machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  Missing production deployment
&lt;/h3&gt;

&lt;p&gt;Portfolio projects must be deployed and accessible. If an employer can't click a button and see your work running, they'll assume it doesn't work or you don't know how to deploy.&lt;/p&gt;

&lt;p&gt;Broken demo links are worse than no links at all. Check your deployments regularly: free-tier services sometimes shut down after inactivity, domains expire, environment variables get cleared, or databases get wiped.&lt;/p&gt;

&lt;p&gt;Choose reliable hosting platforms. Don't host on unreliable free services that frequently go down.&lt;/p&gt;

&lt;h3&gt;
  
  
  Not explaining the full-stack work
&lt;/h3&gt;

&lt;p&gt;Don't assume employers will dig through your backend code. Many won't have time.&lt;/p&gt;

&lt;p&gt;Call out full-stack features explicitly. "Includes bcrypt authentication, PostgreSQL with foreign keys, and RESTful API with rate limiting" beats "Full-stack todo app."&lt;/p&gt;

&lt;p&gt;Add architecture diagrams. A simple visual showing React → Express API → PostgreSQL → Railway helps employers understand your system at a glance.&lt;/p&gt;

&lt;p&gt;Document your backend in the README. Include API endpoints, database schema, deployment setup, and key technical decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Outdated or abandoned projects
&lt;/h3&gt;

&lt;p&gt;Projects with "Last updated 2 years ago" signal you've moved on or given up.&lt;/p&gt;

&lt;p&gt;Dead projects on your portfolio send the wrong message. If you're not maintaining code in your portfolio, why would an employer trust you with their codebase?&lt;/p&gt;

&lt;p&gt;Update dependencies regularly. A project with dozens of outdated npm packages and security vulnerabilities suggests you don't understand security or maintenance responsibilities.&lt;/p&gt;

&lt;p&gt;Add "Last Updated" dates to show maintenance. Even small updates (fixing a bug, updating a README, adding a feature, updating dependencies) show that these are living projects you care about.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What should be on a full-stack developer portfolio?
&lt;/h3&gt;

&lt;p&gt;Your portfolio should ideally include 3-5 projects that demonstrate frontend, backend, and database skills. Each project needs a live demo, source code on GitHub, and clear documentation explaining your full-stack implementation. Quality matters more than quantity: three polished projects beat ten half-finished ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  How many projects should a full-stack portfolio have?
&lt;/h3&gt;

&lt;p&gt;Start with 3 projects from different complexity tiers in this guide. Once you have three solid full-stack projects deployed and documented, you're in great shape. You can always add more later, but aim for depth over breadth. One great project with thorough documentation beats five rushed projects, and can easily be enough to get your foot in the door with a potential employer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need to build everything from scratch?
&lt;/h3&gt;

&lt;p&gt;No. Using Frontend Mentor challenges as a design foundation is smart: it shows you can work from requirements and specifications, which is exactly what you'll do at a job. The full-stack implementation you add on top (backend, database, authentication) is what proves your abilities. Focus your effort on backend work, not reinventing the design wheel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I include team projects or only solo work?
&lt;/h3&gt;

&lt;p&gt;Include both, but clearly explain your role in team projects. Team projects show you can collaborate and work in a codebase you didn't create entirely yourself. Solo projects prove you can handle the full stack independently. Label each project clearly: "Team project - I built the authentication system and user dashboard" is far better than vaguely claiming ownership.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is an example of a full-stack project?
&lt;/h3&gt;

&lt;p&gt;A todo task manager with user authentication demonstrates full-stack skills. The frontend uses React with form validation. The backend uses Express.js with JWT authentication and RESTful API endpoints. PostgreSQL stores user accounts and tasks. The complete application deploys to Railway, demonstrating you can build and ship production applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are some fun full-stack project ideas?
&lt;/h3&gt;

&lt;p&gt;Fun full-stack projects include: Kanban boards with drag-and-drop task management and real-time collaboration; mood trackers with data visualization and trend analysis; entertainment apps with bookmarking and personalized recommendations; link-sharing platforms with custom subdomains and analytics; and invoicing systems with PDF generation and email delivery.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to do full-stack projects?
&lt;/h3&gt;

&lt;p&gt;Full-stack projects require four components: (1) Frontend with responsive design and state management, (2) Backend API with authentication and business logic, (3) Database with proper schema design and relationships, (4) Production deployment on hosting platforms. Start with a design (e.g., a Frontend Mentor challenge), build the frontend, add backend functionality, integrate a database, and deploy everything.&lt;/p&gt;

&lt;h3&gt;
  
  
  Will full-stack be replaced by AI?
&lt;/h3&gt;

&lt;p&gt;AI tools accelerate full-stack development, but portfolios still prove you can architect systems, debug production issues, and ship complete applications. These skills require judgment, problem-solving, and understanding of trade-offs that AI can't replace. Full-stack developers who use AI effectively will be more productive, but the fundamental skills remain essential.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start building your full-stack portfolio
&lt;/h2&gt;

&lt;p&gt;Your portfolio proves your skills. Your website packages them.&lt;/p&gt;

&lt;p&gt;These 12 Frontend Mentor challenges provide professional designs and clear requirements. Your job is to add the backend functionality, database integration, and production deployment that prove you're full-stack ready.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's what to do right now:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next 30 minutes:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pick the &lt;a href="https://www.frontendmentor.io/challenges/todo-app-Su1_KokOW" rel="noopener noreferrer"&gt;Todo app challenge&lt;/a&gt; (simplest foundation project)&lt;/li&gt;
&lt;li&gt;Read the requirements and download the starter files&lt;/li&gt;
&lt;li&gt;Create your GitHub repository with a README template&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;This weekend:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Build the frontend using the design provided&lt;/li&gt;
&lt;li&gt;Set up Express.js and PostgreSQL locally&lt;/li&gt;
&lt;li&gt;Create your first API endpoint (GET /api/todos)&lt;/li&gt;
&lt;li&gt;Test the connection between frontend and backend&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Next week:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add user authentication with JWT&lt;/li&gt;
&lt;li&gt;Deploy Vercel, Railway, or Render&lt;/li&gt;
&lt;li&gt;Write your README with an architecture diagram&lt;/li&gt;
&lt;li&gt;Share your live project&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Don't wait for perfect. Ship functional code, document it well, and iterate as you learn. Your portfolio evolves with you.&lt;/p&gt;

&lt;p&gt;Pick the Todo app and start building today. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>fullstack</category>
      <category>portfolio</category>
    </item>
    <item>
      <title>Project-based learning vs tutorials: Escape tutorial hell</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Thu, 13 Nov 2025 15:29:50 +0000</pubDate>
      <link>https://dev.to/frontendmentor/project-based-learning-vs-tutorials-escape-tutorial-hell-1cpp</link>
      <guid>https://dev.to/frontendmentor/project-based-learning-vs-tutorials-escape-tutorial-hell-1cpp</guid>
      <description>&lt;p&gt;You've completed another coding tutorial. The instructor made everything look easy. You followed along, typed the code, and watched it work. You feel accomplished. But then you open a blank editor to build something on your own, and suddenly... nothing. Where do you even start? What file should you create first? How do you structure this? The cursor blinks at you.&lt;/p&gt;

&lt;p&gt;Sound familiar? Welcome to tutorial hell. It's that frustrating cycle where you watch endless tutorials, feel like you're learning, but can't build anything when you try. You know the syntax, you recognize the patterns, but when it's time to create something from scratch...nothing.&lt;/p&gt;

&lt;p&gt;Unfortunately, tutorial hell is more dangerous now than ever. With &lt;a href="https://survey.stackoverflow.co/2024/ai" rel="noopener noreferrer"&gt;76% of developers using AI coding tools&lt;/a&gt; (some sources cite higher adoption), &lt;a href="https://www.forbes.com/sites/larryenglish/2025/08/12/ai-and-the-vanishing-entry-level-job-the-changing-future-of-work/" rel="noopener noreferrer"&gt;analyses showing entry-level positions down more than 50% compared to pre-2020 levels&lt;/a&gt;, and hiring managers looking for candidates who can work &lt;em&gt;with&lt;/em&gt; AI rather than compete against it, knowing syntax isn't enough anymore.&lt;/p&gt;

&lt;p&gt;But here's the good news: there's a proven way out. It's called project-based learning, and it develops the problem-solving skills that AI can assist with, but can't replace.&lt;/p&gt;

&lt;p&gt;In this article, you'll learn exactly what project-based learning is, why it's the critical differentiator in today's market, how to spot if you're stuck in tutorial hell, and most importantly, how to escape it with a clear 7-step plan that works.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is project-based learning?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Project-based learning means building complete projects from scratch, without step-by-step instructions. Instead of following tutorials, you get requirements and designs, then figure out how to build it yourself. This matches real developer work and develops problem-solving skills faster than tutorial-based learning.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's the key difference:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With tutorials&lt;/strong&gt;, you're learning syntax—how to write code. The instructor makes every decision for you: which library to use, how to structure files, and how to solve problems. You replicate their choices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With project-based learning&lt;/strong&gt;, you learn to think like a developer. You get a design and requirements, then you decide how to build it. You structure the solution, debug your mistakes, make trade-offs, and yes, use AI tools strategically when appropriate.&lt;/p&gt;

&lt;p&gt;This is exactly what you'll do in a real job. Your product manager won't give you a tutorial. They'll give you requirements and designs, and you'll need to figure out the implementation. Research shows that &lt;a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC10411581/" rel="noopener noreferrer"&gt;project-based learning improves problem-solving skills and knowledge retention&lt;/a&gt; significantly more than traditional instruction methods.&lt;/p&gt;

&lt;h2&gt;
  
  
  What project-based learning actually looks like
&lt;/h2&gt;

&lt;p&gt;That definition might sound abstract, so let's make it concrete. Here's what project-based learning feels like when you're building an &lt;a href="https://www.frontendmentor.io/challenges/nft-preview-card-component-SbdUL_w0U" rel="noopener noreferrer"&gt;NFT preview card component&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmajk6hxyjya79fy08udo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmajk6hxyjya79fy08udo.jpg" alt="Desktop design for the NFT preview card project on Frontend Mentor" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you're given:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A design mockup showing exactly how it should look&lt;/li&gt;
&lt;li&gt;Requirements: match the design, handle hover states&lt;/li&gt;
&lt;li&gt;Assets: images, style guide with colors and fonts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What you have to figure out:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML structure and semantic elements&lt;/li&gt;
&lt;li&gt;CSS layout approach (flexbox? grid? something else?)&lt;/li&gt;
&lt;li&gt;How to handle the image overlay effect&lt;/li&gt;
&lt;li&gt;Implementing the hover state&lt;/li&gt;
&lt;li&gt;Organizing your code so it's maintainable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What you're NOT given:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step-by-step instructions&lt;/li&gt;
&lt;li&gt;The exact CSS properties to use&lt;/li&gt;
&lt;li&gt;Solutions to problems you'll encounter&lt;/li&gt;
&lt;li&gt;How to debug when something breaks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's what the process actually feels like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You stare at the design for a bit.&lt;/strong&gt; Where do you even start? (This is normal.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You write some HTML structure.&lt;/strong&gt; You guess the semantic elements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You add some CSS.&lt;/strong&gt; It doesn't look right. You adjust. Still not quite right.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You get stuck on the hover effect.&lt;/strong&gt; You search "CSS image overlay hover effect."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You find three different approaches.&lt;/strong&gt; You have to decide which fits your situation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You implement one.&lt;/strong&gt; It kind of works, but the opacity is wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You debug.&lt;/strong&gt; You adjust. You test. You adjust again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It works!&lt;/strong&gt; It's not perfect, but it works.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This messy, frustrating, satisfying process? That's learning. That's what builds the problem-solving skills that matter. It's completely different from the smooth, guided experience of a tutorial.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use tutorials vs project-based learning
&lt;/h2&gt;

&lt;p&gt;Before we go deeper, let's be clear: tutorials aren't evil. They have their place in learning to code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use tutorials for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learning syntax&lt;/li&gt;
&lt;li&gt;Understanding a new concept at a high level&lt;/li&gt;
&lt;li&gt;Seeing an example of how something works&lt;/li&gt;
&lt;li&gt;Quick reference when stuck on something specific&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use project-based learning for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everything after the basics&lt;/li&gt;
&lt;li&gt;Building your portfolio&lt;/li&gt;
&lt;li&gt;Developing problem-solving skills&lt;/li&gt;
&lt;li&gt;Learning to work with AI tools effectively&lt;/li&gt;
&lt;li&gt;Preparing for real development work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A good rule of thumb:&lt;/strong&gt; Spend about 20% of your time learning concepts through tutorials and documentation, and 80% of your time building projects. This ratio works because you learn far more from struggling through problems than from watching someone else solve them. Studies in educational psychology confirm that &lt;a href="https://pubmed.ncbi.nlm.nih.gov/24821756/" rel="noopener noreferrer"&gt;active learning (e.g., building projects) produces better outcomes than passive learning (e.g., watching tutorials)&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why tutorial hell is particularly dangerous now
&lt;/h2&gt;

&lt;p&gt;Tutorial hell isn't about watching too many tutorials. It's about using them to avoid the discomfort of building on your own. Here's why that's particularly dangerous in 2025: &lt;strong&gt;you're learning exactly what AI already does well.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI tools like &lt;a href="https://github.com/features/copilot" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt;, &lt;a href="https://cursor.com/" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt;, and &lt;a href="https://chatgpt.com/" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; excel at the syntax-heavy, pattern-recognition tasks that tutorials teach. Need a React component? AI can generate it. Need to implement a common pattern? AI knows dozens of approaches.&lt;/p&gt;

&lt;p&gt;What AI struggles with? The skills that project-based learning develops:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complex system design and architecture decisions&lt;/li&gt;
&lt;li&gt;Novel problem-solving without clear patterns&lt;/li&gt;
&lt;li&gt;Understanding business context and requirements&lt;/li&gt;
&lt;li&gt;Making strategic trade-offs between approaches&lt;/li&gt;
&lt;li&gt;Reviewing code quality and catching subtle bugs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Here's what this looks like in practice:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Two developers apply for the same role. Both completed the same bootcamp. Both can write React code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer A&lt;/strong&gt; (tutorial-trained) gets the take-home assignment: "Build a dashboard that displays real-time data from our API with custom filtering." They freeze. They've built dashboards in tutorials, but those came with implementation instructions. They Google "how to build dashboard tutorial" and spend hours searching for something close enough to copy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer B&lt;/strong&gt; (project-trained) sees the same assignment as a variation of problems they've solved before. They don't know the exact solution, but they know how to break it down: fetch data → display data → add filters → optimize renders. They use AI to speed up boilerplate, but make their own architectural decisions. They complete it in half the time.&lt;/p&gt;

&lt;p&gt;Both know React. Only one gets the job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The bar has shifted.&lt;/strong&gt; In 2021, employers wanted "code writers." In 2025, they need "problem solvers" who can work effectively with AI tools, not compete against them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why escaping tutorial hell is so hard
&lt;/h2&gt;

&lt;p&gt;Knowing you're in tutorial hell isn't enough to escape it. The pattern is sticky because tutorials exploit our desire for certainty. They guarantee you won't fail because every answer is provided. Finishing courses gives you that satisfying progress bar completion. You collect certificates and feel productive.&lt;/p&gt;

&lt;p&gt;But that safety is exactly what prevents growth. You're practicing following directions, not making decisions. You're building nothing real. You're not developing the differentiated skills that matter in today's market.&lt;/p&gt;

&lt;p&gt;Every time you reach for another tutorial instead of opening a blank editor, you're choosing comfort over competence.&lt;/p&gt;

&lt;p&gt;Projects offer guaranteed discomfort. No answers. No certainty. You, a blinking cursor, and anxiety. But here's the catch: that discomfort isn't a bug. It's the feature. Real learning lives in the struggle.&lt;/p&gt;

&lt;p&gt;You need a structured way to embrace that struggle, not endless encouragement to "try harder." That's what the framework below provides.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five signs you're stuck in tutorial hell
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You finish tutorials but can't apply what you learned.&lt;/strong&gt; You watched someone build a todo app, but when you try to make one yourself, you don't know where to start.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You search for a new tutorial every time you need to do something.&lt;/strong&gt; Instead of trying to solve problems yourself, your first instinct is "I need a tutorial for this."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You're collecting certificates instead of building projects.&lt;/strong&gt; Your "portfolio" is a list of courses completed, not things you've built.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opening a blank code editor gives you anxiety.&lt;/strong&gt; Without instructions, you freeze. The cursor blinks, and nothing happens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You know syntax but don't know what to build or how to start.&lt;/strong&gt; You can recognize code patterns, but you can't create them from scratch in a real situation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you recognize yourself in 2 or more of these signs, you're in tutorial hell. Let's get you out.&lt;/p&gt;

&lt;h2&gt;
  
  
  What good project-based learning looks like
&lt;/h2&gt;

&lt;p&gt;Project-based learning means building from designs and requirements—no step-by-step instructions. But how do you choose the right projects? Here's what makes a good project at each level:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good beginner projects have:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A single main feature or functionality&lt;/li&gt;
&lt;li&gt;Clear success criteria (you'll know when it works)&lt;/li&gt;
&lt;li&gt;Common UI patterns you'll see in real jobs&lt;/li&gt;
&lt;li&gt;Limited scope (completable in a weekend or less)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Good intermediate projects add:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple features that interact&lt;/li&gt;
&lt;li&gt;State management challenges&lt;/li&gt;
&lt;li&gt;Real-world data (APIs, forms)&lt;/li&gt;
&lt;li&gt;Decisions about architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Good advanced projects include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complex state across features&lt;/li&gt;
&lt;li&gt;Performance considerations&lt;/li&gt;
&lt;li&gt;Scale and maintainability trade-offs&lt;/li&gt;
&lt;li&gt;Multiple possible "right" solutions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Beginner projects: Start small and focused
&lt;/h3&gt;

&lt;p&gt;When you're escaping tutorial hell, choose projects you can complete in one focused session:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/challenges/blog-preview-card-ckPaj01IcS" rel="noopener noreferrer"&gt;&lt;strong&gt;Blog preview card&lt;/strong&gt;&lt;/a&gt;: Build your understanding of HTML structure and CSS layout.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/challenges/faq-accordion-wyfFdeBwBz" rel="noopener noreferrer"&gt;&lt;strong&gt;FAQ accordion&lt;/strong&gt;&lt;/a&gt;: Build show/hide functionality and manage state.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/challenges/interactive-rating-component-koxpeBUmI" rel="noopener noreferrer"&gt;&lt;strong&gt;Interactive rating component&lt;/strong&gt;&lt;/a&gt;: Capture user input and display dynamic feedback.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/challenges/newsletter-signup-form-with-success-message-3FC1AZbNrv" rel="noopener noreferrer"&gt;&lt;strong&gt;Newsletter sign-up form&lt;/strong&gt;&lt;/a&gt;: Build form validation and success states.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You get a design and requirements, then figure out the code yourself. The challenge isn't only "make it look right" but "make it work properly, handle edge cases, and write code you can understand later."&lt;/p&gt;

&lt;h3&gt;
  
  
  Intermediate projects: Add complexity
&lt;/h3&gt;

&lt;p&gt;As you progress, tackle projects that require architectural thinking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/challenges/contact-form--G-hYlqKJj" rel="noopener noreferrer"&gt;&lt;strong&gt;Contact form&lt;/strong&gt;&lt;/a&gt;: Build accessible forms with multiple input types and comprehensive validation.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/challenges/calculator-app-9lteq5N29" rel="noopener noreferrer"&gt;&lt;strong&gt;Calculator app&lt;/strong&gt;&lt;/a&gt;: Handle complex user input and state management across operations.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/challenges/multistep-form-YVAnSdqQBJ" rel="noopener noreferrer"&gt;&lt;strong&gt;Multi-step form&lt;/strong&gt;&lt;/a&gt;: Manage state across multiple screens with validation and persistence.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/challenges/rest-countries-api-with-color-theme-switcher-5cacc469fec04111f7b848ca" rel="noopener noreferrer"&gt;&lt;strong&gt;REST Countries API&lt;/strong&gt;&lt;/a&gt;: Fetch data from a real API, handle loading states and errors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These require decisions that tutorials can't make for you. Should you use context or state management libraries? How do you structure your components? What error handling patterns make sense?&lt;/p&gt;

&lt;h3&gt;
  
  
  Advanced projects: Real architectural challenges
&lt;/h3&gt;

&lt;p&gt;Eventually, tackle projects where there's no single "right" answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/challenges/bookmark-manager-app" rel="noopener noreferrer"&gt;&lt;strong&gt;Bookmark manager app&lt;/strong&gt;&lt;/a&gt;: Build frontend-only or full-stack with authentication and database design.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/challenges/product-feedback-app-wbvUYqjR6" rel="noopener noreferrer"&gt;&lt;strong&gt;Product feedback app&lt;/strong&gt;&lt;/a&gt;: Handle complex nested state and make architectural decisions in a larger codebase.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.frontendmentor.io/challenges/audiophile-ecommerce-website-C8cuSd_wx" rel="noopener noreferrer"&gt;&lt;strong&gt;Audiophile e-commerce website&lt;/strong&gt;&lt;/a&gt;: Build a complete e-commerce experience with cart, checkout, and routing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this level, you're solving problems that require judgment and context—exactly what AI tools can assist with but can't replace.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 7-step plan to escape tutorial hell
&lt;/h2&gt;

&lt;p&gt;Ready to make the switch? Here's your framework for moving from tutorial-based learning to project-based learning:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Learn the absolute basics
&lt;/h3&gt;

&lt;p&gt;Spend 2-4 weeks maximum on tutorials to learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML structure and semantic elements&lt;/li&gt;
&lt;li&gt;CSS fundamentals (layout, positioning, flexbox)&lt;/li&gt;
&lt;li&gt;JavaScript core concepts (variables, functions, arrays, objects, DOM)&lt;/li&gt;
&lt;li&gt;Version control basics (Git and GitHub)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don't aim for mastery. Aim for "good enough to start building." If you're picking it up quickly, move on sooner. If you need a bit more time on fundamentals, take it—but set a deadline.&lt;/p&gt;

&lt;p&gt;Check out &lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt;, &lt;a href="https://www.theodinproject.com/" rel="noopener noreferrer"&gt;The Odin Project&lt;/a&gt;, or &lt;a href="https://web.dev/learn" rel="noopener noreferrer"&gt;Web.dev&lt;/a&gt; for structured basic tutorials, but remember: tutorials are just the starting point for learning to code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Pick a small, specific project
&lt;/h3&gt;

&lt;p&gt;Choose something achievable in one weekend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.frontendmentor.io/challenges/qr-code-component-iux_sIO_H" rel="noopener noreferrer"&gt;A card component&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.frontendmentor.io/challenges/mortgage-repayment-calculator-Galx1LXK73" rel="noopener noreferrer"&gt;A simple calculator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.frontendmentor.io/challenges/weather-app-K1FhddVm49" rel="noopener noreferrer"&gt;A weather app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.frontendmentor.io/challenges/todo-app-Su1_KokOW" rel="noopener noreferrer"&gt;A todo list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Critical:&lt;/strong&gt; Pick something slightly beyond your current comfort zone. If it feels too easy, it won't teach you much. If it feels impossible, break it down more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Start building (and sit with the discomfort)
&lt;/h3&gt;

&lt;p&gt;Open your code editor and start. Yes, you'll feel lost. That's the point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you freeze immediately&lt;/strong&gt; (within 5 minutes), that's normal. Don't reach for a tutorial yet. Instead:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Look at the design for 30 seconds without touching the keyboard&lt;/li&gt;
&lt;li&gt;Identify ONE element you know how to create (even if it's a div)&lt;/li&gt;
&lt;li&gt;Write that element&lt;/li&gt;
&lt;li&gt;Look at the design again—what's the next simplest thing?&lt;/li&gt;
&lt;li&gt;Write that&lt;/li&gt;
&lt;li&gt;Repeat&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You're building momentum with tiny wins. The first element is the hardest. The second is easier. By the fifth, you're in flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're still stuck after 15 minutes&lt;/strong&gt;, THEN search for specific help—but be precise: "How to center a div vertically" not "How to build a card component."&lt;/p&gt;

&lt;p&gt;Write the HTML structure. Try the CSS. Make mistakes. Get it wrong. This discomfort is learning in action.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Break it into tiny steps
&lt;/h3&gt;

&lt;p&gt;Still overwhelmed? Break the project into absurdly small tasks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: Building a card component&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add background color to the body&lt;/li&gt;
&lt;li&gt;Create card container&lt;/li&gt;
&lt;li&gt;Center the card on the page&lt;/li&gt;
&lt;li&gt;Add the card background and border&lt;/li&gt;
&lt;li&gt;Add the image&lt;/li&gt;
&lt;li&gt;Add the title&lt;/li&gt;
&lt;li&gt;Add the description text&lt;/li&gt;
&lt;li&gt;Style the text&lt;/li&gt;
&lt;li&gt;Test the spacing&lt;/li&gt;
&lt;li&gt;Review and refine&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each small task is achievable. You'll build momentum with quick wins instead of feeling overwhelmed by "building a card component."&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Get stuck → research → solve (with AI when appropriate)
&lt;/h3&gt;

&lt;p&gt;Getting stuck is learning. When you hit a wall:&lt;/p&gt;

&lt;p&gt;❌ &lt;strong&gt;Don't:&lt;/strong&gt; Go back to tutorials&lt;br&gt;
✅ &lt;strong&gt;Do:&lt;/strong&gt; Search for the specific problem&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Search like this:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"CSS center div vertically and horizontally"&lt;/li&gt;
&lt;li&gt;"JavaScript event listener on multiple elements"&lt;/li&gt;
&lt;li&gt;"React useEffect cleanup function"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Be specific. Search for the exact problem you're facing, not general concepts.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to use AI tools effectively
&lt;/h4&gt;

&lt;p&gt;This could be an article all to itself, but here are some quick pointers for using AI tools effectively:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ After you've tried solving it yourself first, to see other possible implementations&lt;/li&gt;
&lt;li&gt;✅ "I tried centering this div with flexbox, but it's not working. Here's my code: [paste]. Can you explain what I'm missing?"&lt;/li&gt;
&lt;li&gt;✅ For understanding error messages: "What does this error mean: [paste error]"&lt;/li&gt;
&lt;li&gt;✅ To review your code: "Can you review this function and suggest improvements?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don't use AI tools like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ Before you've attempted the problem&lt;/li&gt;
&lt;li&gt;❌ "Write this function for me"&lt;/li&gt;
&lt;li&gt;❌ "Take this design and build this project"&lt;/li&gt;
&lt;li&gt;❌ Without reading and understanding what the AI suggests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Real developers search for answers every day. The skill isn't memorizing everything. It's knowing how to find solutions, evaluate them, and adapt them to your needs. &lt;a href="https://stackoverflow.com/" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt; and &lt;a href="https://developer.mozilla.org/" rel="noopener noreferrer"&gt;MDN Web Docs&lt;/a&gt; are valuable resources for finding specific answers, as well as AI chatbots like ChatGPT and &lt;a href="https://claude.ai/" rel="noopener noreferrer"&gt;Claude&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When you're really stuck:&lt;/strong&gt; Take a break. Walk away from the screen. Do the dishes. Take a shower. Your subconscious keeps working on the problem. Often, the solution clicks when you're not staring at the code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Still stuck after trying everything?&lt;/strong&gt; &lt;a href="https://www.frontendmentor.io/community" rel="noopener noreferrer"&gt;Join our community&lt;/a&gt; and ask for help. But ask well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Share your code (GitHub repo or CodePen)&lt;/li&gt;
&lt;li&gt;Explain what you're trying to do&lt;/li&gt;
&lt;li&gt;Describe what you've already tried&lt;/li&gt;
&lt;li&gt;Point to the specific part where you're stuck&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't only about getting answers. It's practicing how to communicate technical problems, a crucial skill for working on development teams.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Review and improve
&lt;/h3&gt;

&lt;p&gt;After it works, make it better:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clean up your code.&lt;/strong&gt; Remove duplicates, improve naming, and add helpful comments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review AI-generated code carefully.&lt;/strong&gt; If you used AI assistance, make sure you understand every line&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test edge cases.&lt;/strong&gt; What happens if the user does something unexpected?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consider accessibility.&lt;/strong&gt; Can someone navigate this with a keyboard? What about screen readers?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reflect on your decisions.&lt;/strong&gt; What would you do differently next time?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can someone else understand this code?&lt;/li&gt;
&lt;li&gt;Would I understand this code in 6 months?&lt;/li&gt;
&lt;li&gt;Are there any magic numbers or unclear variable names?&lt;/li&gt;
&lt;li&gt;Does this handle errors gracefully?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This reflection is how you improve faster. It also gives you stories for interviews: "I initially tried X, but then realized Y would be better because Z."&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 7: Share and get feedback
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Deploy your project live (&lt;a href="https://www.netlify.com/" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt;, &lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt;, &lt;a href="https://docs.github.com/en/pages" rel="noopener noreferrer"&gt;GitHub Pages&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Push code to GitHub with a comprehensive README&lt;/li&gt;
&lt;li&gt;Submit your solution on Frontend Mentor&lt;/li&gt;
&lt;li&gt;Share it for feedback in &lt;a href="https://www.frontendmentor.io/community" rel="noopener noreferrer"&gt;our community&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Actually apply the feedback you get&lt;/li&gt;
&lt;li&gt;Build the next project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Document your process in the README:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Invoice app taught me about date formatting. GitHub Copilot's solution broke across different locales—everything was displayed in US format. Had to learn about &lt;code&gt;Intl.DateTimeFormat&lt;/code&gt; to make it work globally."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Being transparent about your process, including how you work with AI tools, shows maturity and critical thinking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measuring progress: Know when you've escaped
&lt;/h2&gt;

&lt;p&gt;You don't need to master everything. You've successfully escaped tutorial hell when:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start a new project without looking for a tutorial&lt;/li&gt;
&lt;li&gt;Debug problems you haven't seen before&lt;/li&gt;
&lt;li&gt;Explain your code decisions clearly&lt;/li&gt;
&lt;li&gt;Make architectural choices (even if they're not perfect)&lt;/li&gt;
&lt;li&gt;Build something from a design without step-by-step instructions&lt;/li&gt;
&lt;li&gt;Use AI tools strategically (not as a crutch, but as a productivity multiplier)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;You have:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3-5 substantial projects you built yourself (not tutorial copies)&lt;/li&gt;
&lt;li&gt;Code on GitHub that you can explain thoroughly&lt;/li&gt;
&lt;li&gt;At least one project that consumed APIs or handled complex state&lt;/li&gt;
&lt;li&gt;Experience getting stuck and finding your way out&lt;/li&gt;
&lt;li&gt;The confidence to tackle problems you haven't solved before&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;You feel:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confident opening a blank editor&lt;/li&gt;
&lt;li&gt;Comfortable saying "I don't know, but here's how I'd figure it out"&lt;/li&gt;
&lt;li&gt;Frustrated with tutorial pace because you want to BUILD&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't about perfection. It's about competence and growth trajectory. The skills you develop through project-based learning—problem-solving, architectural thinking, debugging, working with AI effectively—these are what matter in real development work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Frontend Mentor works for project-based learning
&lt;/h2&gt;

&lt;p&gt;Most coding practice sites give you instructions. Frontend Mentor gives you what you'd get at a real job: professional designs and requirements. Figure out the rest.&lt;/p&gt;

&lt;p&gt;This might feel uncomfortable at first. That's intentional. That discomfort is exactly what builds the problem-solving skills that matter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What makes this approach effective:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real design files.&lt;/strong&gt; You're not guessing what it should look like. You're implementing a professional design.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No solutions provided.&lt;/strong&gt; You have to figure it out yourself. (Though &lt;a href="https://www.frontendmentor.io/community" rel="noopener noreferrer"&gt;the community&lt;/a&gt; can help when you're genuinely stuck.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progressive difficulty.&lt;/strong&gt; Start with &lt;a href="https://www.frontendmentor.io/challenges?difficulty=1&amp;amp;type=free%2Cfree-plus" rel="noopener noreferrer"&gt;simple components&lt;/a&gt;, progress to &lt;a href="https://www.frontendmentor.io/challenges?difficulty=1%2C4%2C5" rel="noopener noreferrer"&gt;complex applications&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community feedback.&lt;/strong&gt; Get your code reviewed by other developers learning the same skills.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you complete a Frontend Mentor challenge, you haven't followed instructions. You've solved many small problems that build genuine experience. That's the difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What do you mean by project-based learning?
&lt;/h3&gt;

&lt;p&gt;Project-based learning (PBL) is a teaching method where you learn by actively working on real projects rather than passively consuming information. For developers, this means building complete applications from designs and requirements without step-by-step tutorials. You make architectural decisions, solve problems independently, and learn through hands-on experience. Unlike traditional tutorials that teach syntax, project-based learning develops problem-solving skills and decision-making abilities that employers actually need.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is an example of project-based learning?
&lt;/h3&gt;

&lt;p&gt;A concrete example: building a &lt;a href="https://www.frontendmentor.io/challenges/rest-countries-api-with-color-theme-switcher-5cacc469fec04111f7b848ca" rel="noopener noreferrer"&gt;REST Countries API challenge&lt;/a&gt; where you're given professional designs and requirements, but you must figure out how to fetch data, handle loading states, implement search and filtering, manage errors, and structure your components. You're not following a tutorial—you're solving real problems. You might get stuck on API error handling, research solutions, try different approaches, and eventually ship a working application. That struggle and problem-solving process is project-based learning in action.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the 7 steps of project-based learning?
&lt;/h3&gt;

&lt;p&gt;The 7 steps to effective project-based learning for developers are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn absolute basics (2-4 weeks on core syntax)&lt;/li&gt;
&lt;li&gt;Pick a small, specific project (weekend-sized scope)&lt;/li&gt;
&lt;li&gt;Start building (embrace initial discomfort)&lt;/li&gt;
&lt;li&gt;Break it into tiny steps (make progress manageable)&lt;/li&gt;
&lt;li&gt;Get stuck → research → solve (use resources strategically, including AI)&lt;/li&gt;
&lt;li&gt;Review and improve (refactor, test edge cases, consider accessibility)&lt;/li&gt;
&lt;li&gt;Share and get feedback (deploy, get code reviewed, iterate)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This framework moves you from tutorial dependency to confident, independent building while developing the problem-solving skills that matter in real development work.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the 4 principles of project-based learning?
&lt;/h3&gt;

&lt;p&gt;The four core principles of project-based learning adapted for developers are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Active construction over passive consumption&lt;/strong&gt;: You build projects rather than watch tutorials, forcing your brain to actively problem-solve instead of passively absorb.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentic challenges&lt;/strong&gt;: Projects mirror real development work with actual designs, requirements, and constraints—not artificial tutorial scenarios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Productive struggle&lt;/strong&gt;: Getting stuck and working through problems develops deeper understanding than following step-by-step instructions. The difficulty is the point.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterative improvement&lt;/strong&gt;: You build, get feedback, refactor, and improve—reflecting real development cycles and continuous learning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These principles explain why project-based learning produces job-ready developers faster than tutorial-based approaches. You're practicing the actual skills you'll use daily in development roles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start building today
&lt;/h2&gt;

&lt;p&gt;You've got the framework. You understand why tutorials aren't enough for learning to code. Now comes the part that actually changes things: building your first project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your path forward:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Spend max 1 month on basic tutorials&lt;/li&gt;
&lt;li&gt;Start building small projects immediately&lt;/li&gt;
&lt;li&gt;Follow the 20-80 rule: 20% learning, 80% building&lt;/li&gt;
&lt;li&gt;Get comfortable being uncomfortable&lt;/li&gt;
&lt;li&gt;Build at least 10-15 practice projects (show your best 3-5)&lt;/li&gt;
&lt;li&gt;Get feedback and keep improving&lt;/li&gt;
&lt;li&gt;Use AI tools strategically, not as a replacement for thinking&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You're not learning to code. You're learning to solve problems with code. The only way to learn problem-solving is by solving problems.&lt;/p&gt;

&lt;p&gt;Tutorial hell is comfortable. Project-based learning is uncomfortable. But competence lives on the other side of that discomfort.&lt;/p&gt;

&lt;p&gt;Ready to escape tutorial hell? &lt;a href="https://www.frontendmentor.io/challenges" rel="noopener noreferrer"&gt;Start your first Frontend Mentor challenge&lt;/a&gt; and build something real today.&lt;/p&gt;

&lt;p&gt;Not sure where to start? Check out our "&lt;a href="https://www.frontendmentor.io/learning-paths/getting-started-on-frontend-mentor-XJhRWRREZd" rel="noopener noreferrer"&gt;Getting started on Frontend Mentor&lt;/a&gt;" learning path—small projects designed specifically for people escaping tutorial hell.&lt;/p&gt;

&lt;p&gt;If you need some inspiration, &lt;a href="https://www.frontendmentor.io/articles/escaping-tutorial-hell-how-i-became-a-frontend-developer" rel="noopener noreferrer"&gt;read how community member, Toba, escaped tutorial hell and landed a professional developer role&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Build a bookmark manager app with search and filter functionality</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Tue, 14 Oct 2025 10:33:47 +0000</pubDate>
      <link>https://dev.to/frontendmentor/build-a-bookmark-manager-app-with-search-and-filter-functionality-2n1i</link>
      <guid>https://dev.to/frontendmentor/build-a-bookmark-manager-app-with-search-and-filter-functionality-2n1i</guid>
      <description>&lt;p&gt;Test your skills with this comprehensive app that includes CRUD operations, tag filtering, search functionality, light/dark themes, and authentication screens (for those who want to build a full-stack app).&lt;/p&gt;

&lt;p&gt;We're excited to introduce our new Bookmark Manager App challenge. This project is perfect for developers looking to build a feature-rich application with real-world functionality like data management, advanced filtering, and search. You could even use what you build as your own bookmark manager!&lt;/p&gt;

&lt;h2&gt;
  
  
  What you'll build
&lt;/h2&gt;

&lt;p&gt;Main bookmark view with light theme:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8px20438mlj6zz2p2pc8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8px20438mlj6zz2p2pc8.jpg" alt="The main bookmark view in the light color theme" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Main bookmark view with dark theme:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frh7e3i1l7zd7bl4h96sk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frh7e3i1l7zd7bl4h96sk.jpg" alt="The main bookmark view in the dark color theme" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this challenge, you'll create a bookmark manager app that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allows users to add new bookmarks with title, description, URL, and tags&lt;/li&gt;
&lt;li&gt;Displays all bookmarks in a clean, card-based grid layout&lt;/li&gt;
&lt;li&gt;Enables users to search for bookmarks by keyword&lt;/li&gt;
&lt;li&gt;Lets users filter bookmarks by one or multiple tags&lt;/li&gt;
&lt;li&gt;Provides archive functionality to organize bookmarks&lt;/li&gt;
&lt;li&gt;Includes pin/unpin, edit, copy URL, and visit website actions&lt;/li&gt;
&lt;li&gt;Offers multiple sorting options (recently added, recently visited, most visited)&lt;/li&gt;
&lt;li&gt;Features light and dark theme toggle&lt;/li&gt;
&lt;li&gt;Provides an optimal viewing experience across all device sizes&lt;/li&gt;
&lt;li&gt;Includes hover and focus states for all interactive elements&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to start
&lt;/h2&gt;

&lt;p&gt;To get started, visit the &lt;a href="https://www.frontendmentor.io/challenges/bookmark-manager-app" rel="noopener noreferrer"&gt;Bookmark Manager challenge page&lt;/a&gt;. There, you'll find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Figma design file to guide your project&lt;/li&gt;
&lt;li&gt;Layouts for mobile, tablet, and desktop screens&lt;/li&gt;
&lt;li&gt;A professional design system with details on colors, fonts, and spacings&lt;/li&gt;
&lt;li&gt;Images optimized for the web&lt;/li&gt;
&lt;li&gt;A README file to help you set up&lt;/li&gt;
&lt;li&gt;A HTML file with pre-written content to get you started&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a premium challenge, so you'll need a &lt;a href="https://www.frontendmentor.io/pro" rel="noopener noreferrer"&gt;Pro subscription&lt;/a&gt; to start the project. Our premium challenges are of the highest quality and are designed to give you hands-on experience building industry-standard projects. They make excellent portfolio pieces!&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge yourself further
&lt;/h2&gt;

&lt;p&gt;If you want to push yourself and customize the project, try adding features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building as a full-stack app with user authentication to persist bookmarks across devices&lt;/li&gt;
&lt;li&gt;Integrating an image hosting service (like Cloudinary) to store user avatars and bookmark favicons&lt;/li&gt;
&lt;li&gt;Automatically fetching website metadata (favicon, title, description) when adding a bookmark URL&lt;/li&gt;
&lt;li&gt;Creating a browser extension that lets users save bookmarks directly from any webpage&lt;/li&gt;
&lt;li&gt;Implementing duplicate detection to prevent saving the same URL multiple times&lt;/li&gt;
&lt;li&gt;Adding keyboard shortcuts for quick actions (add bookmark, search, navigate)&lt;/li&gt;
&lt;li&gt;Adding progressive web app (PWA) capabilities for mobile installation and offline access&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Join the community
&lt;/h2&gt;

&lt;p&gt;Need help or want to share your work? Join our &lt;a href="https://www.frontendmentor.io/community" rel="noopener noreferrer"&gt;Discord community&lt;/a&gt;, where thousands of developers discuss projects, share resources, and support each other.&lt;/p&gt;

&lt;p&gt;We look forward to seeing what you create. Happy coding!&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>challenge</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Introducing the Frontend Mentor 30-Day Hackathon!</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Wed, 10 Sep 2025 10:10:22 +0000</pubDate>
      <link>https://dev.to/frontendmentor/introducing-the-frontend-mentor-30-day-hackathon-4fk3</link>
      <guid>https://dev.to/frontendmentor/introducing-the-frontend-mentor-30-day-hackathon-4fk3</guid>
      <description>&lt;p&gt;We're delighted to announce our first-ever hackathon! Whether you're just starting your coding journey or you're a seasoned developer, this is your chance to challenge yourself, connect with our amazing community, and potentially win a year of Frontend Mentor Pro!&lt;/p&gt;

&lt;h2&gt;
  
  
  What's the FM30 Hackathon?
&lt;/h2&gt;

&lt;p&gt;The hackathon started on Friday, September 5th. You have 30 days to build your best solution to our brand new &lt;a href="https://www.frontendmentor.io/challenges/weather-app-K1FhddVm49" rel="noopener noreferrer"&gt;Weather App challenge&lt;/a&gt;. No need to rush or pull all-nighters – this hackathon is about creating the highest-quality solution you can within 30 days while sharing your journey with the community.&lt;/p&gt;

&lt;p&gt;After 30 days, the Weather App challenge will remain on the platform, just like all our other challenges. So if you'd rather skip the hackathon and build at your own pace, that's totally fine! The hackathon simply adds a fun, time-bound element to our free challenge launches for those who want that extra motivation.&lt;/p&gt;

&lt;p&gt;For this inaugural hackathon, you'll build a weather application using the Open-Meteo API (more details below). It's a practical project that millions use daily, and you'll learn to work with real-world data along the way. Even if you don't win, you'll walk away with a polished portfolio piece and some new skills under your belt!&lt;/p&gt;

&lt;h2&gt;
  
  
  How to participate
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Getting started
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Download the challenge:&lt;/strong&gt; Grab the free Weather App starter files from the challenge page. As always, everything you need to know about the challenge is in the README.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build your solution:&lt;/strong&gt; Use these 30 days to create something you're genuinely proud of. Focus on quality over speed, and consider extending beyond the basic requirements. We've included some inspiration in the "Ideas to test yourself" section of the challenge page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share your progress:&lt;/strong&gt; Post updates using #FM30Hackathon on social media. We'll be watching and resharing standout posts to help boost your visibility!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Submit your solution:&lt;/strong&gt; Follow the submission guidelines below before the deadline.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Submission guidelines
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Where to submit
&lt;/h4&gt;

&lt;p&gt;Post your solution in the #hackathon-submissions Discord channel under the Weather App thread.&lt;/p&gt;

&lt;h4&gt;
  
  
  What to include
&lt;/h4&gt;

&lt;p&gt;Your Discord submission needs just one thing: a link to your solution on Frontend Mentor. This makes it easy for the community to review your work, and since likes and bookmarks factor into the selection process, you'll want as many people as possible to view your solution page.&lt;/p&gt;

&lt;p&gt;Please create only one submission post. Duplicates will be removed and could lead to disqualification.&lt;/p&gt;

&lt;h4&gt;
  
  
  Critical requirements
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Custom README:&lt;/strong&gt; Your GitHub repo must include a personalized README file (we provide a template in the starter files). Tell us about your process, the details you added, and the challenges you overcame. Including a custom README is mandatory – no README, no valid submission!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meaningful commit history:&lt;/strong&gt; Show your work! We want to see your progress through multiple commits, not just one mega-commit at the end.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public accessibility:&lt;/strong&gt; Make sure everyone can view your live solution and repository.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Submission deadline:&lt;/strong&gt; We'll lock the Discord hackathon thread for this challenge on Monday, October 6th at 09:00 AM BST.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How we'll choose winners
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Stage 1: Community love
&lt;/h3&gt;

&lt;p&gt;Throughout the hackathon, the community can react to submissions in the Discord channel with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❤️ &lt;strong&gt;General appreciation&lt;/strong&gt; – The default "I like this!" reaction&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;Visually impressive&lt;/strong&gt; – For solutions that nail (or improve!) the visual design&lt;/li&gt;
&lt;li&gt;💡 &lt;strong&gt;Creative solution&lt;/strong&gt; – For clever features, extensions, or other creative approaches&lt;/li&gt;
&lt;li&gt;🧩 &lt;strong&gt;Code quality&lt;/strong&gt; – For clean code, accessibility, best practices, or technical excellence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Please don't react to your own submission&lt;/strong&gt; – these will be removed, and repeated attempts could disqualify your entry. Let the community do the celebrating!&lt;/p&gt;

&lt;p&gt;We'll also track likes and bookmarks on your Frontend Mentor solution page, so be sure to share that link with your network to increase visibility for your solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 2: Our shortlist
&lt;/h3&gt;

&lt;p&gt;Our team reviews all valid submissions and selects five standouts based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Community engagement (all those reactions and platform likes!)&lt;/li&gt;
&lt;li&gt;Code quality and best practices&lt;/li&gt;
&lt;li&gt;How well you've met (or exceeded!) the requirements&lt;/li&gt;
&lt;li&gt;README quality – seriously, be sure to focus on this!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Stage 3: Community vote
&lt;/h3&gt;

&lt;p&gt;The five shortlisted solutions go to a public vote where you all choose the top three winners!&lt;/p&gt;

&lt;h2&gt;
  
  
  Prizes
&lt;/h2&gt;

&lt;p&gt;We're keeping it simple, but meaningful, for our first hackathon:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🥇 &lt;strong&gt;1st place:&lt;/strong&gt; One-year Frontend Mentor Pro subscription ($96 value!)&lt;/li&gt;
&lt;li&gt;🥈 &lt;strong&gt;2nd place:&lt;/strong&gt; One-month Pro subscription&lt;/li&gt;
&lt;li&gt;🥉 &lt;strong&gt;3rd place:&lt;/strong&gt; One-month Pro subscription&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Weather App challenge
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa9q6gx6c96g8nsvjlapr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa9q6gx6c96g8nsvjlapr.jpg" alt="Design preview of the weather app challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll build a &lt;a href="https://www.frontendmentor.io/challenges/weather-app-K1FhddVm49" rel="noopener noreferrer"&gt;weather application&lt;/a&gt; using the free &lt;a href="https://open-meteo.com/" rel="noopener noreferrer"&gt;Open-Meteo API&lt;/a&gt;. At a minimum, users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search for weather information by entering a location in the search bar&lt;/li&gt;
&lt;li&gt;View current weather conditions including temperature, weather icon, and location details&lt;/li&gt;
&lt;li&gt;See additional weather metrics like "feels like" temperature, humidity percentage, wind speed, and precipitation amounts&lt;/li&gt;
&lt;li&gt;Browse a 7-day weather forecast with daily high/low temperatures and weather icons&lt;/li&gt;
&lt;li&gt;View an hourly forecast showing temperature changes throughout the day&lt;/li&gt;
&lt;li&gt;Switch between different days of the week using the day selector in the hourly forecast section&lt;/li&gt;
&lt;li&gt;Toggle between Imperial and Metric measurement units via the units dropdown &lt;/li&gt;
&lt;li&gt;Switch between specific temperature units (Celsius and Fahrenheit) and measurement units for wind speed (km/h and mph) and precipitation (millimeters) via the units dropdown&lt;/li&gt;
&lt;li&gt;View the optimal layout for the interface depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See hover and focus states for all interactive elements on the page&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But don't stop there! This is your moment to push yourself! Add features, polish the UI, add delightful animations – show us what makes your solution special. You can check out "Ideas to test yourself" on the challenge page for inspiration, but we'll add them here as well:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add geolocation detection to automatically show weather for the user's current location on first visit&lt;/li&gt;
&lt;li&gt;Implement a favorites/saved locations system where users can bookmark frequently checked locations&lt;/li&gt;
&lt;li&gt;Implement a "Compare Locations" feature to view weather side-by-side for multiple locations&lt;/li&gt;
&lt;li&gt;Include UV index, visibility, and air pressure data (available via Open-Meteo)&lt;/li&gt;
&lt;li&gt;Add sunrise/sunset times with visual indicators&lt;/li&gt;
&lt;li&gt;Add animated weather backgrounds that change based on current conditions&lt;/li&gt;
&lt;li&gt;Implement voice search functionality&lt;/li&gt;
&lt;li&gt;Create dark/light mode themes that adapt to the time of day&lt;/li&gt;
&lt;li&gt;Add progressive web app (PWA) capabilities for mobile installation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Open-Meteo API is free, requires no API key, and has generous rate limits, so you can focus on building rather than dealing with authentication hassles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips for success
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start today, not tomorrow&lt;/strong&gt;: Beginning early gives you time to experiment, iterate, and polish. Plus, you can help others who get stuck on things you've already solved!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document your journey&lt;/strong&gt;: Share progress on your socials with #FM30Hackathon. We love seeing work-in-progress shots, lessons learned, and those "aha!" moments. We'll keep an eye on the hashtag and reshare selected posts. You might just inspire someone else to keep going!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Engage with others&lt;/strong&gt;: The hackathon is as much about community as competition. Help others in Discord, share resources, and celebrate each other's wins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality beats complexity&lt;/strong&gt;: A clean, well-documented, accessible solution that nails the basics will beat a complex but buggy app every time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make it yours&lt;/strong&gt;: While meeting the requirements, add your personal touch. What would make YOU want to use this weather app daily?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Can I use any framework or library?&lt;/strong&gt; Yes! React, Vue, vanilla JS, whatever you're comfortable with. This is about the final result, not the tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Just one submission per person?&lt;/strong&gt; Correct – pour all your energy into making one stellar solution rather than several rushed ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can I team up?&lt;/strong&gt; This is a solo challenge, but helping each other learn and debug in Discord is strongly encouraged.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I'm new to coding – should I participate?&lt;/strong&gt; Absolutely! Hackathons are fantastic learning experiences. Focus on completing a working solution and writing a great README. Simple, clean, and well-documented can definitely win!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can I use AI tools?&lt;/strong&gt; Yes, but make sure you understand and can explain every line of code in your solution. The README should reflect your learning journey and working process.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Important details
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🗓️ Key dates
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Starts:&lt;/strong&gt; Friday, September 5th&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Submissions close:&lt;/strong&gt; Monday, October 6th at 09:00 AM BST&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Winners announced:&lt;/strong&gt; Thursday, October 9th&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔗 Quick links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.frontendmentor.io/challenges/weather-app-K1FhddVm49" rel="noopener noreferrer"&gt;Weather App challenge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.frontendmentor.io/community" rel="noopener noreferrer"&gt;Discord server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com/channels/824970620529279006/1413542151010123836" rel="noopener noreferrer"&gt;Hackathon submissions channel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com/channels/824970620529279006/1098309837907038260" rel="noopener noreferrer"&gt;Help channel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ready to start?
&lt;/h2&gt;

&lt;p&gt;We can't wait to see what you build! Our hackathons are a fun chance to push yourself to create something you’re proud to share. We hope you enjoy the process and learn something new along the way!&lt;/p&gt;

&lt;p&gt;Got questions? Remember to drop them in our Discord #help channel, and we'll be there to support you.&lt;/p&gt;

&lt;p&gt;Happy coding! 🎉&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>frontend</category>
      <category>challenge</category>
    </item>
    <item>
      <title>Build a multi-page recipe website with search and filtering</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Wed, 06 Aug 2025 15:53:50 +0000</pubDate>
      <link>https://dev.to/frontendmentor/build-a-multi-page-recipe-website-with-search-and-filtering-4hpe</link>
      <guid>https://dev.to/frontendmentor/build-a-multi-page-recipe-website-with-search-and-filtering-4hpe</guid>
      <description>&lt;p&gt;We're excited to introduce our new Recipe Finder Website challenge. This project is perfect for developers looking to build a complete multi-page website with real-world functionality like search, filtering, and responsive layouts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you'll build
&lt;/h2&gt;

&lt;p&gt;Homepage and about page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr61yz0lsau1bzblbnzjd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr61yz0lsau1bzblbnzjd.jpg" alt="Desktop design preview of the homepage and about page" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recipes index and detail pages:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vwt08ky2a892rfk2pp3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vwt08ky2a892rfk2pp3.jpg" alt="Desktop design preview of the recipes index and detail pages" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this challenge, you'll create a recipe finder website that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Features four distinct pages: home, about, recipes index, and detailed recipe views&lt;/li&gt;
&lt;li&gt;Allows users to search for recipes by name or ingredient&lt;/li&gt;
&lt;li&gt;Lets users filter recipes by maximum prep or cook time&lt;/li&gt;
&lt;li&gt;Displays recipes in a clean, organized layout&lt;/li&gt;
&lt;li&gt;Shows detailed recipe information including ingredients, instructions, and cooking times&lt;/li&gt;
&lt;li&gt;Provides an optimal viewing experience across all device sizes&lt;/li&gt;
&lt;li&gt;Includes hover and focus states for all interactive elements&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to start
&lt;/h2&gt;

&lt;p&gt;To get started, visit the &lt;a href="https://www.frontendmentor.io/challenges/recipe-finder-website--Ui-TZTPxN" rel="noopener noreferrer"&gt;Recipe Finder challenge page&lt;/a&gt;. There, you'll find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Figma design file to guide your project&lt;/li&gt;
&lt;li&gt;Layouts for mobile, tablet, and desktop screens&lt;/li&gt;
&lt;li&gt;A professional design system with details on colors, fonts, and spacings&lt;/li&gt;
&lt;li&gt;Images optimized for the web&lt;/li&gt;
&lt;li&gt;A README file to help you set up&lt;/li&gt;
&lt;li&gt;A HTML file with pre-written content to get you started&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a premium challenge, so you'll need a &lt;a href="https://www.frontendmentor.io/pro" rel="noopener noreferrer"&gt;Pro subscription&lt;/a&gt; to start the project. Our premium challenges are of the highest quality and are designed to give you hands-on experience building industry-standard projects. They make excellent portfolio pieces!&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge yourself further
&lt;/h2&gt;

&lt;p&gt;If you want to push yourself and customize the project, try adding features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implementing responsive images using the provided small and large image variations&lt;/li&gt;
&lt;li&gt;Creating smooth page transitions and micro-interactions without heavy frameworks
&lt;/li&gt;
&lt;li&gt;Updating the data and adding new filters for dietary restrictions or difficulty levels&lt;/li&gt;
&lt;li&gt;Letting users adjust serving sizes and automatically recalculating ingredient quantities&lt;/li&gt;
&lt;li&gt;Allowing visitors to save favorite recipes that persist between sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Join the community
&lt;/h2&gt;

&lt;p&gt;Need help or want to share your work? Join our &lt;a href="https://www.frontendmentor.io/community" rel="noopener noreferrer"&gt;Discord community&lt;/a&gt;, where many developers discuss projects, share resources, and support each other.&lt;/p&gt;

&lt;p&gt;We look forward to seeing what you create. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>frontend</category>
      <category>challenge</category>
    </item>
    <item>
      <title>Practice your JavaScript skills by building a Character Counter app</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Fri, 31 Jan 2025 14:36:18 +0000</pubDate>
      <link>https://dev.to/frontendmentor/practice-your-javascript-skills-by-building-a-character-counter-app-5a07</link>
      <guid>https://dev.to/frontendmentor/practice-your-javascript-skills-by-building-a-character-counter-app-5a07</guid>
      <description>&lt;p&gt;We’re excited to introduce our new Character Counter challenge. This project is a great way to practice your JavaScript skills by building a tool that counts characters, words, and sentences in a text.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you'll build
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11jcrngr5gji2f3m5pri.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11jcrngr5gji2f3m5pri.jpg" alt="Desktop layout design preview of the character counter Frontend Mentor challenge." width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this challenge, you'll create a character counter app that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Counts characters, words, and sentences in the user's text.&lt;/li&gt;
&lt;li&gt;Allows users to include or exclude spaces in the character count.&lt;/li&gt;
&lt;li&gt;Lets users set a character limit and warns them if they go over it.&lt;/li&gt;
&lt;li&gt;Shows an estimated reading time for the text.&lt;/li&gt;
&lt;li&gt;Displays a graph showing how often each letter appears in the text.&lt;/li&gt;
&lt;li&gt;Offers different color themes for users to choose from.&lt;/li&gt;
&lt;li&gt;Is fully usable with just a keyboard.&lt;/li&gt;
&lt;li&gt;Looks good on devices of all sizes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to start
&lt;/h2&gt;

&lt;p&gt;To get started, visit the &lt;a href="https://www.frontendmentor.io/challenges/character-counter-znSgeWs_i6" rel="noopener noreferrer"&gt;Character Counter challenge page&lt;/a&gt;. There, you'll find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Figma design file to guide your project.&lt;/li&gt;
&lt;li&gt;Layouts for mobile, tablet, and desktop screens.&lt;/li&gt;
&lt;li&gt;A design system with details on colors and fonts.&lt;/li&gt;
&lt;li&gt;Images optimized for the web.&lt;/li&gt;
&lt;li&gt;A README file to help you set up.&lt;/li&gt;
&lt;li&gt;A HTML file with some starter content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a premium challenge, so you’ll need a &lt;a href="https://www.frontendmentor.io/pro" rel="noopener noreferrer"&gt;Pro subscription&lt;/a&gt; to start the project. Our premium challenges are of the highest quality and are designed to give you hands-on experience building industry-standard projects. They make excellent portfolio pieces!&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge yourself further
&lt;/h2&gt;

&lt;p&gt;If you want to push yourself and customize the project, try adding features like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Counting lines or spaces.&lt;/li&gt;
&lt;li&gt;Creating a graph that shows how often each word appears (similar to the letter density graph).&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Join the community
&lt;/h2&gt;

&lt;p&gt;Need help or want to share your work? Join our &lt;a href="https://www.frontendmentor.io/community" rel="noopener noreferrer"&gt;Discord community&lt;/a&gt;, where many developers discuss projects, share resources, and support each other.&lt;/p&gt;

&lt;p&gt;We look forward to seeing what you create. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>frontend</category>
      <category>challenge</category>
    </item>
    <item>
      <title>Introducing Frontend Mentor for Teams!</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Fri, 06 Sep 2024 10:42:46 +0000</pubDate>
      <link>https://dev.to/frontendmentor/introducing-frontend-mentor-for-teams-52e0</link>
      <guid>https://dev.to/frontendmentor/introducing-frontend-mentor-for-teams-52e0</guid>
      <description>&lt;p&gt;Since starting Frontend Mentor, we've helped individual developers around the world improve their coding skills by building realistic projects. Seeing the transformations in both competence and confidence is always amazing as people move away from passive learning (e.g., tutorials) and towards active skill application.&lt;/p&gt;

&lt;p&gt;And now, we're delighted to launch &lt;a href="https://teams.frontendmentor.io/" rel="noopener noreferrer"&gt;Frontend Mentor for Teams&lt;/a&gt;, where we aim to help companies and educators incorporate project-based learning into their developer training!&lt;/p&gt;

&lt;p&gt;Here's the full announcement article, which you can also &lt;a href="https://www.frontendmentor.io/articles/introducing-frontend-mentor-for-teams" rel="noopener noreferrer"&gt;read on the Frontend Mentor platform&lt;/a&gt; 👇&lt;/p&gt;




&lt;p&gt;Over the past five years, we’ve helped tens of thousands of developers (886,604 at the time of writing, to be precise!) improve their skills and confidence through project-based learning.&lt;/p&gt;

&lt;p&gt;Something magical happens when people stop passively consuming content and start focusing on active skill application instead. After all, there’s only one way to truly master a skill: &lt;strong&gt;practice&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There really is no better way to boost skills than consistent, repetitive, intentional practice. It doesn’t sound overly glamorous, but it’s true. It’s true for any skill you aim to master, and it’s no different with coding: intentional practice will take you further than any video tutorial ever can.&lt;/p&gt;

&lt;p&gt;Since we started Frontend Mentor, we’ve helped developers rack up hundreds of hours of hands-on keyboard, pulling your hair out over a bug only to realize you’re missing a semicolon, real-life &lt;em&gt;experience&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;And there’s nothing better than experience—not even a shiny certificate (although they’re nice, too)!&lt;/p&gt;

&lt;p&gt;Our core focus has so far been helping developers get into the industry. However, over the years, we’ve noticed that more and more professional developers are subscribed to Frontend Mentor Pro as part of their professional training. Their companies want to use Frontend Mentor to help upskill their developers by making it easier to clock up productive hours building projects.&lt;/p&gt;

&lt;p&gt;It’s not just companies with in-house developers, though. We’ve worked with coding bootcamps to incorporate Frontend Mentor challenges into their curriculum. They’ve realized that adding realistic projects can massively boost their students skills and help get them ready for life as professional developers. It also provides an easy way for teachers to give feedback on student submissions.&lt;/p&gt;

&lt;p&gt;So, we’re excited to announce a new offering to help companies and educators efficiently manage multiple Pro licenses: &lt;a href="https://teams.frontendmentor.io" rel="noopener noreferrer"&gt;Frontend Mentor for Teams&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4h68y8oyreuusw5z5qdw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4h68y8oyreuusw5z5qdw.jpg" alt="Frontend Mentor for Teams - Upskill your developers faster with project-based learning" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The first version is &lt;em&gt;extremely&lt;/em&gt; simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An admin (perhaps an engineering manager, team lead, CTO, or instructor) creates an account on the Teams platform.&lt;/li&gt;
&lt;li&gt;They add the required number of seats for their team.&lt;/li&gt;
&lt;li&gt;The admin then fills the seats with Frontend Mentor users, unlocking access to Pro on their accounts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Admins can easily manage their learners through the Teams platform. This includes easily checking activity and progress through each learner’s public profile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future plans
&lt;/h2&gt;

&lt;p&gt;We wanted to keep the first version as simple as possible, but we have exciting plans for the Teams platform going forward.&lt;/p&gt;

&lt;p&gt;Our mission remains the same: to help people worldwide become confident, competent developers. Our combination of project-based learning and community mentorship is a powerful skill multiplier for developers of all experience levels.&lt;/p&gt;

&lt;p&gt;We want more developers in our community to give helpful advice and feedback to people seeking support. The benefits go both ways: the recipient learns from the feedback provided, and the person giving the feedback reinforces their knowledge and improves their communication and mentorship skills…all valuable for career progression!&lt;/p&gt;

&lt;p&gt;So, not only do we see loads of value in professional developers completing our projects for skill progression, but it is also an incredible opportunity for companies to level up their developers by embedding them in the Frontend Mentor community so they can both give and receive feedback to progress even further.&lt;/p&gt;

&lt;p&gt;We haven't finalized details yet, but features like customizable learning paths, team branding, and progress tracking are areas we're exploring. If you’re in a company or coding school and think project-based learning could be helpful as part of your training, why not give &lt;a href="https://teams.frontendmentor.io" rel="noopener noreferrer"&gt;Frontend Mentor for Teams&lt;/a&gt; a try!&lt;/p&gt;

&lt;p&gt;Also, if you work as a professional developer at a company, your company may be happy to support your professional development through a Teams subscription. We wrote a guide on &lt;a href="https://www.frontendmentor.io/articles/how-to-get-manager-approval-for-frontend-mentor-for-teams" rel="noopener noreferrer"&gt;how to get manager approval for Frontend Mentor for Teams&lt;/a&gt; that may help you pitch the idea inside your company 🙂&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>learning</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Introducing the new Frontend Mentor Hiring platform!</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Tue, 28 Nov 2023 16:52:44 +0000</pubDate>
      <link>https://dev.to/frontendmentor/introducing-the-new-frontend-mentor-hiring-platform-10e0</link>
      <guid>https://dev.to/frontendmentor/introducing-the-new-frontend-mentor-hiring-platform-10e0</guid>
      <description>&lt;p&gt;It's been over two years since I first &lt;a href="https://dev.to/frontendmentor/a-better-way-to-discover-junior-front-end-developers-58e6"&gt;mentioned our plans to create a Hiring Platform for Frontend Mentor&lt;/a&gt;. In hindsight, I announced it way too early in our thinking process, but the response was extremely encouraging. As we started building, we realised Frontend Mentor there was a lot we needed to improve on the main platform, which took priority. But we kept chipping away at it, and today, I'm absolutely delighted to &lt;em&gt;finally&lt;/em&gt; announce that we have officially launched our Hiring Platform and are actively finding companies who hire early-career developers to connect them with developers in our community. &lt;/p&gt;

&lt;p&gt;Here's our full announcement, which you can also &lt;a href="https://www.frontendmentor.io/articles/introducing-the-new-frontend-mentor-hiring-platform-CArx9kNMB-" rel="noopener noreferrer"&gt;read on our platform&lt;/a&gt; 👇&lt;/p&gt;




&lt;p&gt;At Frontend Mentor, we firmly believe that project-based learning is a powerful way to grow your skills. Over the years, we've found a place in the web development learning space, helping developers worldwide gain hands-on experience building projects using a professional workflow.&lt;/p&gt;

&lt;p&gt;As we've grown, our mission as a company has evolved, with our focus now on helping create equal opportunity for people worldwide to become developers. Our professionally designed projects have already helped many people get hired and become confident front-end developers.&lt;/p&gt;

&lt;p&gt;The focus on a professional workflow uniquely positions our community to understand more about the expectations of life as a developer. With over 10,000 solutions submitted each month, we have a lot of project-based data to help companies discover exceptional early-career developers who meet their hiring needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, I am unbelievably excited to announce the next step in our mission with the official launch of the &lt;a href="https://hiring.frontendmentor.io/" rel="noopener noreferrer"&gt;Frontend Mentor Hiring platform&lt;/a&gt;!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This project has been in the works for quite a while now, so it feels great to announce it fully. Since we first started planning it, the tech landscape has changed drastically. With many large tech companies laying off employees and the rise of AI tooling raising many questions about what the future of web development will look like, there's been a palpable air of uncertainty in the community.&lt;/p&gt;

&lt;p&gt;However, based on our own internal experience and &lt;a href="https://github.blog/2022-09-07-research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/" rel="noopener noreferrer"&gt;research from companies like GitHub&lt;/a&gt;, we are extremely optimistic and feel that the rise of AI tooling only makes early-career developers more hireable and productive than ever. Because everyone now has access to an AI pair programmer, like GitHub Copiliot, or large language model-based chatbots like ChatGPT, Bard, and Claude, answers and help are much easier to come by. As we move into the company's next phase, we aim to help our community stand out in the job market as much as possible and create the most hireable early-career developers around.&lt;/p&gt;

&lt;h2&gt;
  
  
  How our approach helps developers prepare for life as a professional
&lt;/h2&gt;

&lt;p&gt;As I mentioned above, we believe the best way to learn web development is by actually doing it. That's why our platform is all about giving our community realistic projects where they take a professional design, use industry-standard tools and workflows (e.g., VS Code and Git version control), and build portfolio-ready projects.&lt;/p&gt;

&lt;p&gt;By working on our challenges, learners get a taste of what it's like to be a professional developer. They learn how to build a design and brief, fix problems, use modern tools and frameworks, and write clean code that others can understand.&lt;/p&gt;

&lt;p&gt;A huge part of Frontend Mentor is our community. Developers can share their projects, give and receive feedback, and work with others. All this helps improve their coding skills while developing the soft skills necessary to become a valuable team member.&lt;/p&gt;

&lt;p&gt;These are all skills we aim to keep helping our community develop to prepare them for life as a professional developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hiring Platform: connecting companies with exceptional early-career developers
&lt;/h2&gt;

&lt;p&gt;This brings me to the new Hiring Platform! With thousands of incredibly talented developers in our community, we aim to make discovering and hiring exceptional early-career talent as simple as possible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fegvbmee6nzp9upevh3wn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fegvbmee6nzp9upevh3wn.jpg" alt="Screenshot of the Frontend Mentor Hiring platform homepage with the heading 'Hire exceptional early-career developers who know how to build projects'"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Hiring Platform helps companies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start talking to skilled candidates in minutes&lt;/strong&gt;: Our Talent Search helps companies find the best developers based on their requirements. They can filter candidates by experience, skills, location, contract type, and more. This will save a lot of time instead of wading through mountains of resumes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access a diverse, skilled, and passionate talent pool&lt;/strong&gt;: The Frontend Mentor community is global. We have high-quality developers from all backgrounds who hone their coding skills by building projects and giving each other feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluate proven skills, not self-reported claims&lt;/strong&gt;: Our project-based developer platform allows companies and recruiters to review candidates' work before making contact. They can evaluate their competency based on completed projects rather than relying on self-reported skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save time by contacting high-intent candidates&lt;/strong&gt;: All candidates on our Hiring Platform are actively looking for work. So they are ready and waiting to hear about opportunities. Recruiters can find developers who meet their needs in minutes and start chatting!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drastically reduce hiring costs&lt;/strong&gt;: Our flexible subscription options come with no hidden hiring fees and unlimited hiring, enabling companies to save significantly compared to other talent-sourcing channels. They can hire as many developers as they want with no additional expenses. We also offer a guided hire flat fee service for anyone who needs help discovering and screening high-quality candidates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We want to help companies cut through the noise and mountains of applications to find the perfect candidates who meet their needs. We already have a massive pool of exceptional talent and aim to grow considerably over the coming years.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, how does it all work?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  For developers
&lt;/h3&gt;

&lt;p&gt;Developers continue completing challenges, engaging with others through feedback, and growing skills on the main platform. When they reach 150 points, they can set themselves as available for work and complete their Talent Profile. This doesn't guarantee anything, but it means they're eligible to appear in searches on the Hiring Platform and receive messages from potential employers.&lt;/p&gt;

&lt;p&gt;If you're not already registered, &lt;a href="https://www.frontendmentor.io/" rel="noopener noreferrer"&gt;you can sign up to Frontend Mentor here and start taking challenges&lt;/a&gt; 🤗&lt;/p&gt;

&lt;h3&gt;
  
  
  For companies and recruiters
&lt;/h3&gt;

&lt;p&gt;Once signed up on the Hiring Platform, companies can use our Talent Search to find candidates who meet their hiring needs. Clicking through to a candidate takes them to their Talent Profile, where they can review all relevant hiring information, portfolio/GitHub/LinkedIn, and featured projects. If someone stands out, they can send them a direct message and start the conversation!&lt;/p&gt;

&lt;p&gt;Here's a preview of what the top half of the Talent Profile looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbh39i3n82hjiv14knqf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbh39i3n82hjiv14knqf.jpg" alt="Screenshot of the Talent Profile, showing key hiring information alongside a gallery of the developer's featured projects from their Frontend Mentor solutions"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We also offer our guided hire service for companies that don't have internal hiring processes and need a hand. Nobody knows our community like us, so, for a flat fee, we can help shortlist excellent candidates to save time and minimize hiring risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are you looking to hire exceptional early-career developers?
&lt;/h2&gt;

&lt;p&gt;If you're hiring now or think you might in the future, &lt;a href="https://hiring.frontendmentor.io/" rel="noopener noreferrer"&gt;check out our Hiring Platform&lt;/a&gt;. We have so many incredibly talented developers in our community looking for opportunities, and we can't wait to help you hire them.&lt;/p&gt;

</description>
      <category>career</category>
      <category>news</category>
      <category>webdev</category>
      <category>frontend</category>
    </item>
    <item>
      <title>A better way to discover junior front-end developers</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Wed, 17 Nov 2021 15:12:17 +0000</pubDate>
      <link>https://dev.to/frontendmentor/a-better-way-to-discover-junior-front-end-developers-58e6</link>
      <guid>https://dev.to/frontendmentor/a-better-way-to-discover-junior-front-end-developers-58e6</guid>
      <description>&lt;p&gt;Since launching the &lt;a href="https://www.frontendmentor.io/" rel="noopener noreferrer"&gt;Frontend Mentor platform&lt;/a&gt; in April 2019, our community has grown to over 250,000 members (🎉). The idea for Frontend Mentor came to me when I was teaching front-end web development at General Assembly. I wanted to make it easier for my students to practice and create projects for their portfolios.&lt;/p&gt;

&lt;p&gt;Our projects, or "challenges", mimic a real-life workflow for a front-end developer. In a professional setting, a designer would do the design work, and it would then be the developer’s job to recreate it in code.&lt;/p&gt;

&lt;p&gt;Our challenges help developers focus on what developers do best: writing code. We come up with the project ideas and the designs; our community builds the projects to help improve their coding skills. Not only does this mean they gain hands-on experience working from realistic designs, but it also means our community members end up with a professional-looking portfolio of beautiful projects!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fdz209s6jk%2Fimage%2Fupload%2Fv1637154220%2FArticles%2Fdesign-screenshot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fdz209s6jk%2Fimage%2Fupload%2Fv1637154220%2FArticles%2Fdesign-screenshot.png" alt="Example screenshot of a Frontend Mentor challenge Figma design file"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example screenshot of a Frontend Mentor challenge Figma design file&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It's been incredible to see Frontend Mentor grow into a vibrant, positive community where everyone supports each other. &lt;/p&gt;

&lt;p&gt;As we've looked for more ways to help our community, we found one common theme: &lt;strong&gt;it's hard to land junior roles&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Recurring sticking points include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Companies often have unrealistic expectations. For example, it's not uncommon to see junior roles advertised requiring several years of experience.&lt;/li&gt;
&lt;li&gt;Many interview processes include whiteboarding assessments based on algorithms, even for junior front-end roles.&lt;/li&gt;
&lt;li&gt;Good junior job listings are often hyper-competitive. Some even receive hundreds of applications in the first day or two of being advertised.&lt;/li&gt;
&lt;li&gt;Companies are often vague about their salary ranges, interview process, and training paths.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Helping our community find work has always been a goal of Frontend Mentor. To better understand the problem, we started talking to people in hiring positions to see if they also experienced difficulties hiring juniors. &lt;/p&gt;

&lt;p&gt;It very quickly became apparent that they did! Common issues people in hiring positions highlighted when hiring juniors include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There’s no clear “best” strategy for discovering junior talent. Companies often use a mixture of job listings, partnerships with educational institutions, trawling LinkedIn, and getting recommendations from existing employees. &lt;/li&gt;
&lt;li&gt;Large numbers of applicants, many of whom don't meet the specified criteria. This means companies are often drowning in a sea of resumés and cover letters.&lt;/li&gt;
&lt;li&gt;The resumé and cover letter review process is often very high level and error-prone, so it's easy for talented developers to slip through the net.&lt;/li&gt;
&lt;li&gt;GitHub profiles can be hard to navigate when trying to find suitable projects to assess skills.&lt;/li&gt;
&lt;li&gt;Portfolio projects can often be old, and the developer might have only had a small role in the codebase.&lt;/li&gt;
&lt;li&gt;Portfolio projects for juniors often don't look great (after all, developers are not designers), so it can be hard to see past the UI/UX and focus on the code.&lt;/li&gt;
&lt;li&gt;There's no track record to base decisions on, so finding the right developer can be a lottery.&lt;/li&gt;
&lt;li&gt;The process is often bloated and inefficient. There can be many stages, including initial applications, resumé review, screening calls, technical tests, in-person interviews, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After talking to a wide range of people, we believe we're in a unique position: we have an opportunity to help both the developers within our community and companies looking to hire juniors.&lt;/p&gt;
&lt;h2&gt;
  
  
  Introducing the Frontend Mentor Hiring platform
&lt;/h2&gt;

&lt;p&gt;Due to launch in early 2022, we've started working on a hiring platform to complement our learning platform. Our mission will be to help connect great companies with our incredible developer community.&lt;/p&gt;

&lt;p&gt;Our first offering within the hiring platform will be called Talent Search, which will enable companies to search for developers using specific criteria. This includes attributes like experience, skills, and location. Talent Search will then surface the developers on our platform that best match these criteria.&lt;/p&gt;

&lt;p&gt;Talent Search will make it possible to proactively search for developers instead of waiting for people to apply to open roles. In a sea of resumés and cover letters, so many talented developers can slip through the cracks with traditional job applications. Our goal is to let the completed projects and code reviews posted speak for themselves. This will provide incredible insights into developers' talent, knowledge, and written communication skills.&lt;/p&gt;

&lt;p&gt;It might even help bypass a stage or two of the hiring process, saving time and money. We've had numerous developers in the community who have been hired based on the strength of their Frontend Mentor projects. After a technical conversation about their projects and an interview, they've received job offers. We’d love to make this a regular occurrence!&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1429791321703829513-331" src="https://platform.twitter.com/embed/Tweet.html?id=1429791321703829513"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1429791321703829513-331');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1429791321703829513&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;The developers will have to state that they're available for work through their settings. If a developer doesn't opt-in, they won't show up on the hiring platform. Showing only the developers looking for work will filter out the noise for hiring managers. It will also ensure our developers aren't receiving unsolicited messages when they're not looking for a new job.&lt;/p&gt;

&lt;p&gt;We have lots of ideas for the hiring platform, but we'll start with our Talent Search offering and evolve it from there based on feedback.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can you do?
&lt;/h2&gt;

&lt;p&gt;If you're involved in your company's hiring process, please &lt;a href="https://www.frontendmentor.io/hiring" rel="noopener noreferrer"&gt;check out the hiring platform page on Frontend Mentor&lt;/a&gt;, where you can learn more and sign up for our waitlist.&lt;/p&gt;

&lt;p&gt;If you're already a professional developer, please share with anyone in your organization who is part of the developer hiring process.&lt;/p&gt;

&lt;p&gt;We'll launch a closed beta before our public launch. We'd love to get as much feedback as possible to provide a great solution that works for everyone. Also, if you've got any questions, please feel free to ask!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>news</category>
      <category>beginners</category>
    </item>
    <item>
      <title>16 front-end projects (with designs) to help improve your coding skills</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Thu, 26 Mar 2020 14:45:04 +0000</pubDate>
      <link>https://dev.to/frontendmentor/16-front-end-projects-with-designs-to-help-improve-your-coding-skills-5ajl</link>
      <guid>https://dev.to/frontendmentor/16-front-end-projects-with-designs-to-help-improve-your-coding-skills-5ajl</guid>
      <description>&lt;p&gt;There's nothing quite like building projects to grow as a developer. Tutorials are a brilliant learning tool. But at some point, the training wheels need to come off and you need to start building. &lt;/p&gt;

&lt;p&gt;The problem is, as developers, we're often not the best at making things look great ourselves 😅&lt;/p&gt;

&lt;p&gt;I wouldn't even know where to begin if someone asked me to create something beautiful from scratch! But, if a designer hands me a design I'll more than happily code it up.&lt;/p&gt;

&lt;p&gt;If you're in the same boat, we've got some great projects for you at Frontend Mentor. Each one includes mobile &amp;amp; desktop designs, a front-end style guide (for fonts, colors, etc) and a basic brief. The assets are all provided and pre-optimized meaning all you need to focus on is writing the code!&lt;/p&gt;

&lt;p&gt;You can use any tools you like while building each project. So if you're wanting to practice things like React, Vue, Sass, Tailwind you get to choose your setup. &lt;/p&gt;

&lt;p&gt;So, without further ado let's get started on the first challenge:&lt;/p&gt;

&lt;h2&gt;
  
  
  1) Single price grid component
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3y0bhisv135j7979dk3m.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3y0bhisv135j7979dk3m.jpg" alt="Design preview for the Single Price Grid Component challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS&lt;/td&gt;
&lt;td&gt;Newbie&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/single-price-grid-component-5ce41129d0ff452fec5abbbc" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This challenge is a perfect starting point. Instead of building an entire landing page, your task is to build a single component. &lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the component depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See a hover state on desktop for the Sign Up call-to-action&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;Although small, this project presents some nice layout challenges. It's a great opportunity to practice Flexbox or CSS Grid. You'll also get the basics of building a responsive component.&lt;/p&gt;

&lt;h2&gt;
  
  
  2) Four card feature section
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6nr064pgbqxp9mxzu1l5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6nr064pgbqxp9mxzu1l5.jpg" alt="Design preview for the Four card feature section challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS&lt;/td&gt;
&lt;td&gt;Newbie&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/four-card-feature-section-weK1eFYK" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You'll face an interesting layout test in this project. How would you approach the vertically centered cards? &lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the site depending on their device's screen size&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;This will be another useful challenge to build up your confidence when laying out elements. You'll have to choose the best approach to align the cards and make them re-align down to mobile screen size.&lt;/p&gt;

&lt;h2&gt;
  
  
  3) Huddle landing page with a single introductory section
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdnd2mir4y5jrh5fodz0k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdnd2mir4y5jrh5fodz0k.jpg" alt="Design preview for the Huddle landing page with a single introductory section challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS&lt;/td&gt;
&lt;td&gt;Newbie&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/huddle-landing-page-with-a-single-introductory-section-B_2Wvxgi0" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This challenge will build on the other two and take it up a notch. You'll need to think about how best to position and space the elements out on the page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the component depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See hover states on desktop for all interactive elements&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;Think about positioning images and content next to one another. Scaling the content down to mobile without it looking too squashed will be a challenge as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  4) Base Apparel coming soon page
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiv2dvcba7h7jgaun54w0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiv2dvcba7h7jgaun54w0.jpg" alt="Design preview for the Base Apparel coming soon page challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS&lt;/td&gt;
&lt;td&gt;Newbie&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/base-apparel-coming-soon-page-5d46b47f8db8a7063f9331a0" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You'll get your first sprinkling of JavaScript in this challenge. You'll need to validate the form when it's submitted. Oh, and there's a sneaky layout order swap with the written content and the image from desktop to mobile.&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the site depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See hover states for all interactive elements on the page&lt;/li&gt;
&lt;li&gt;Receive an error message when the form is submitted if:

&lt;ul&gt;
&lt;li&gt;The input field is empty&lt;/li&gt;
&lt;li&gt;The email address is not formatted correctly&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;You'll learn how to do basic form validation on a single field. This project will also take a bit of layout planning, so be sure to take some time, in the beginning, to think it through.&lt;/p&gt;

&lt;h2&gt;
  
  
  5) Intro component with sign-up form
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm6um70gb28iy7p73lvpt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm6um70gb28iy7p73lvpt.jpg" alt="Design preview for the Intro component with sign-up form challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS&lt;/td&gt;
&lt;td&gt;Newbie&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/intro-component-with-signup-form-5cf91bd49edda32581d28fd1" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now that you've done form validation on a single field, how about doing it on four? Also, don't forget to make sure the inputs are accessible to screen reader users!&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the site depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See hover states for all interactive elements on the page&lt;/li&gt;
&lt;li&gt;Receive an error message when the form is submitted if:

&lt;ul&gt;
&lt;li&gt;Any input field is empty&lt;/li&gt;
&lt;li&gt;The email address is not formatted correctly&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;By now you should have a good handle on basic layout. So the main learning outcome here will be how to write reusable JavaScript code to check the validity of the different form fields.&lt;/p&gt;

&lt;h2&gt;
  
  
  6) Pricing component with toggle
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fuyyuyf611t8elhug4tt0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fuyyuyf611t8elhug4tt0.jpg" alt="Design preview for the Pricing component with toggle challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS&lt;/td&gt;
&lt;td&gt;Junior&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/pricing-component-with-toggle-8vPwRMIC" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This pricing component challenge will present a nice layout challenge for you. Especially if you go for the bonus mentioned below! &lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the component depending on their device's screen size&lt;/li&gt;
&lt;li&gt;Control the toggle with both their mouse/trackpad and their keyboard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus&lt;/strong&gt;: Complete the challenge with just HTML and CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;If you go for the bonus you'll need to think through your HTML structure carefully. You'll need the perfect markup to be able to make use of pseudo-classes and sibling selectors for the toggle.&lt;/p&gt;

&lt;h2&gt;
  
  
  7) Insure landing page
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp935ob8ei744sp2bedby.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp935ob8ei744sp2bedby.jpg" alt="Design preview for the Insure landing page challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS&lt;/td&gt;
&lt;td&gt;Junior&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/insure-landing-page-uTU68JV8" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There's only a tiny bit of JavaScript for this challenge with the mobile navigation toggle. But it will be the first time that you're building a multi-section landing page on this track. &lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the site depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See hover states for all interactive elements on the page&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;Take some time to plan this out before diving into the code. You'll be faced with some interesting tests placing the background patterns.&lt;/p&gt;

&lt;h2&gt;
  
  
  8) Fylo dark theme landing page
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxyt83ew0p5q8blvmh5x6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxyt83ew0p5q8blvmh5x6.jpg" alt="Design preview for the Fylo dark theme landing page challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS&lt;/td&gt;
&lt;td&gt;Junior&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/fylo-dark-theme-landing-page-5ca5f2d21e82137ec91a50fd" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Back to pure HTML and CSS for this one. It's quite a long landing page, so your layout skills will be really tested. &lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the site depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See hover states for all interactive elements on the page&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;This challenge is all about the layout. Try to pay attention to the responsiveness and get it looking good at all screen sizes. &lt;/p&gt;

&lt;h2&gt;
  
  
  9) URL shortening API landing page
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frd575jvknxdiphinwmuj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frd575jvknxdiphinwmuj.jpg" alt="Design preview for the URL shortening API landing page challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS, API&lt;/td&gt;
&lt;td&gt;Intermediate&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/url-shortening-api-landing-page-2ce3ob-G" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This challenge will give you the first taste of pulling data from an API. You'll be integrating with the &lt;a href="https://rel.ink/" rel="noopener noreferrer"&gt;rel.ink API&lt;/a&gt; to build a fully-functional URL shortener.&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the site depending on their device's screen size&lt;/li&gt;
&lt;li&gt;Shorten any valid URL&lt;/li&gt;
&lt;li&gt;See a list of their shortened links, even after refreshing the browser&lt;/li&gt;
&lt;li&gt;Copy the shortened link to their clipboard in a single click&lt;/li&gt;
&lt;li&gt;Receive an error message when the form is submitted if:

&lt;ul&gt;
&lt;li&gt;The input field is empty&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;Learn how to make HTTP requests and integrate with an external API. This could also be a good project to start diving into JS libraries/frameworks like React or Vue. Also, have a go at using localStorage to save the list of shortened links if the user refreshes their browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  10) Manage landing page
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw8dl2clghqhc0mxm4be3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw8dl2clghqhc0mxm4be3.jpg" alt="Design preview for the Manage landing page challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS&lt;/td&gt;
&lt;td&gt;Intermediate&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/manage-landing-page-SLXqC6P5" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This landing page will give your CSS skills a nice test. There are some background patterns that need to be positioned accurately and some little details in the switch from desktop to mobile. There are also a few areas that will require some JS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the site depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See hover states for all interactive elements on the page&lt;/li&gt;
&lt;li&gt;See all testimonials in a horizontal slider&lt;/li&gt;
&lt;li&gt;Receive an error message when the newsletter sign-up form is submitted if:

&lt;ul&gt;
&lt;li&gt;The input field is empty&lt;/li&gt;
&lt;li&gt;The email address is not formatted correctly&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;Your major takeaways from this challenge will be related to CSS and layout. If you haven't done so by now, you might want to try out a pre-processor, like Sass, to help keep your code maintainable.&lt;/p&gt;

&lt;h2&gt;
  
  
  11) Bookmark landing page
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fieork0qcwe5oaw4ao31h.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fieork0qcwe5oaw4ao31h.jpg" alt="Design preview for the Bookmark landing page challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS&lt;/td&gt;
&lt;td&gt;Intermediate&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/bookmark-landing-page-5d0b588a9edda32581d29158" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Another landing page challenge to reinforce what you learned in the last challenge. This one includes a couple of trickier elements though. Firstly, the background patterns aren't included as assets in the download, so you need to code them yourself. Secondly, we've got a couple of JS-based components with the feature tabs and FAQs section.&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the site depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See hover states for all interactive elements on the page&lt;/li&gt;
&lt;li&gt;Receive an error message when the newsletter form is submitted if:

&lt;ul&gt;
&lt;li&gt;The input field is empty&lt;/li&gt;
&lt;li&gt;The email address is not formatted correctly&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;This challenge will help solidify your knowledge and refine workflow when creating a fairly complex layout. This is another good opportunity to use a pre-processor. You might even want to have a go at using a UI framework, like Tailwind, if you're feeling comfortable with pure CSS/Sass by now.&lt;/p&gt;

&lt;h2&gt;
  
  
  12) Job listings with filtering
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyruacppjz9p4i10nevab.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyruacppjz9p4i10nevab.jpg" alt="Design preview for the Job listings with filtering challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS&lt;/td&gt;
&lt;td&gt;Intermediate&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/job-listings-with-filtering-ivstIPCt" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now that you've got a bit more comfortable with JavaScript, let's practice some filtering. In this challenge, you'll need to filter the job listings by the categories selected. There are two options to choose from for how to approach it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Option 1&lt;/strong&gt;: Filter job listings based on the categories using the HTML &lt;code&gt;data-&lt;/code&gt; attribute. In this option, you'd use the hardcoded content that already exists in the &lt;code&gt;index.html&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Option 2&lt;/strong&gt;: Use the local &lt;code&gt;data.json&lt;/code&gt; file to pull the data and then dynamically add the content. This would be perfect if you're looking to practice a JS library/framework like React, Vue, or Svelte.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the site depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See hover states for all interactive elements on the page&lt;/li&gt;
&lt;li&gt;Filter job listings based on the categories selected&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;You'll learn how to use JavaScript to filter items in the DOM. This is a key skill when building client-side applications, so this challenge will be great practice!&lt;/p&gt;

&lt;h2&gt;
  
  
  13) Rock, Paper, Scissors game
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Foaxro2ob5kppla9cxhdu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Foaxro2ob5kppla9cxhdu.jpg" alt="Design preview for the Rock, Paper, Scissors game challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS&lt;/td&gt;
&lt;td&gt;Advanced&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/rock-paper-scissors-game-pTgwgvgH" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Let's move away from landing pages and filters for a moment and build a game. This Rock, Paper, Scissors game will test both your CSS skills and your JS chops. There's even a bonus game of Rock, Paper, Scissors, Lizard, Spock if you're feeling adventurous!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj5h6b8mpx116fo2s94dh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj5h6b8mpx116fo2s94dh.jpg" alt="Design preview for the Rock, Paper, Scissors, Lizard, Spock bonus challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For those of you who don't know about Rock, Paper, Scissors, Lizard, Spock, take a look at this:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/iSHPVCBsnLw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for the game depending on their device's screen size&lt;/li&gt;
&lt;li&gt;Play Rock, Paper, Scissors against the computer&lt;/li&gt;
&lt;li&gt;Maintain the state of the score after refreshing the browser &lt;em&gt;(optional)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bonus&lt;/strong&gt;: Play Rock, Paper, Scissors, Lizard, Spock against the computer &lt;em&gt;(optional)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;This challenge will give your logic-based problem-solving skills a nice run-out. Try to push yourself to build the bonus game if you can. This is another opportunity to practice using localStorage to maintain the state of the game if the user refreshes their browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  14) REST Countries API with color theme switcher
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9jtayutkzsxlv2ab91s6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9jtayutkzsxlv2ab91s6.jpg" alt="Design preview for the REST Countries API with color theme switcher challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS&lt;/td&gt;
&lt;td&gt;Advanced&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/rest-countries-api-with-color-theme-switcher-5cacc469fec04111f7b848ca" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is a perfect challenge to start really testing your skills and integrating with a 3rd-party API. You'll be using the &lt;a href="https://restcountries.com/" rel="noopener noreferrer"&gt;REST Countries&lt;/a&gt; API to pull data from. This one is perfect for practicing JS libraries/frameworks!&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;See all countries from the API on the homepage&lt;/li&gt;
&lt;li&gt;Search for a country using an &lt;code&gt;input&lt;/code&gt; field&lt;/li&gt;
&lt;li&gt;Filter countries by region&lt;/li&gt;
&lt;li&gt;Click on a country to see more detailed information on a separate page&lt;/li&gt;
&lt;li&gt;Click through to the border countries on the detail page&lt;/li&gt;
&lt;li&gt;Toggle the color scheme between light and dark mode &lt;em&gt;(optional)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;You'll learn a lot during this challenge. You can use it to practice anything you like, so try to push yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  15) myteam multi-page website
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7u1j89u99yiqs3nyiirw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7u1j89u99yiqs3nyiirw.jpg" alt="Design preview for the myteam multi-page website challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS&lt;/td&gt;
&lt;td&gt;Advanced&lt;/td&gt;
&lt;td&gt;Premium&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/myteam-multipage-website-mxlEauvW" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is one of our premium (paid) challenges and it offers an awesome chance to build a multi-page website that would look great in your portfolio. If you want to experience the closest feeling to being a professional developer, our premium challenges are where it's at. Our premium challenges come with mobile, tablet, and desktop designs. They also include the original Sketch design file and a simple, but professional design system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for each page depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See hover states for all interactive elements throughout the site&lt;/li&gt;
&lt;li&gt;See the correct content for each team member on the About page when the &lt;code&gt;+&lt;/code&gt; icon is clicked&lt;/li&gt;
&lt;li&gt;Receive an error message when the contact form is submitted if:

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;Name&lt;/code&gt;, &lt;code&gt;Email Address&lt;/code&gt; or &lt;code&gt;Message fields&lt;/code&gt; are empty should show "This field is required"&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;Email Address&lt;/code&gt; is not formatted correctly should show "Please use a valid email address"&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;If you've never built a multi-page website you should learn loads by completing this challenge. Because it's a larger site, planning it out first is a must. Focus on structuring your CSS/Sass/Styles (or whatever) to keep your code scalable. Some great patterns to look into here are ITCSS, SMACSS, and 7:1. They're all great approaches and will help massively when building larger websites.&lt;/p&gt;

&lt;h2&gt;
  
  
  16) Minimalist portfolio website
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd5ga5zdv3nyw9y8hvoty.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd5ga5zdv3nyw9y8hvoty.jpg" alt="Design preview for the Minimalist portfolio website challenge" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML, CSS, JS&lt;/td&gt;
&lt;td&gt;Intermediate&lt;/td&gt;
&lt;td&gt;Premium&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.frontendmentor.io/challenges/minimalist-portfolio-website-LMy-ZRyiE" rel="noopener noreferrer"&gt;View Project&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you've got this far then you're definitely going to need a great looking portfolio site to show off your hard work! That's exactly what you can use this challenge for. Build it to the design and then customise it to make it your own.&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief
&lt;/h3&gt;

&lt;p&gt;Your users should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View the optimal layout for each page depending on their device's screen size&lt;/li&gt;
&lt;li&gt;See hover states for all interactive elements throughout the site&lt;/li&gt;
&lt;li&gt;Click the "About Me" call-to-action on the homepage and have the screen scroll down to the next section&lt;/li&gt;
&lt;li&gt;Receive an error message when the contact form is submitted if:

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;Name&lt;/code&gt;, &lt;code&gt;Email Address&lt;/code&gt; or &lt;code&gt;Message&lt;/code&gt; fields are empty should show "This field is required"&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;Email Address&lt;/code&gt; is not formatted correctly should show "Please use a valid email address"&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Outcomes
&lt;/h3&gt;

&lt;p&gt;This challenge is another great opportunity to practice writing reusable and maintainable code. As I mentioned above, premium challenges come with mobile, tablet, and desktop designs and include the original Sketch design file. So you can really practice building a fully-responsive website.&lt;/p&gt;

&lt;h2&gt;
  
  
  Go forth and code!
&lt;/h2&gt;

&lt;p&gt;If you've got this far, well done! There are more free challenges on &lt;a href="https://www.frontendmentor.io/" rel="noopener noreferrer"&gt;Frontend Mentor&lt;/a&gt;, so please check it out and browse around.&lt;/p&gt;

&lt;p&gt;Whenever you submit a solution on the platform you receive an automated report that includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An accessibility audit&lt;/li&gt;
&lt;li&gt;A HTML validation check&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These can help you find issues with your code. You'll also be able to receive feedback from the community, so be sure to ask questions when you submit your solution! &lt;/p&gt;

&lt;p&gt;Another great way to learn more is to actually write some code reviews yourself! So please feel free to dive in and start answering questions and giving feedback. You'll learn loads and it also has the nice benefit of helping others! 🙂&lt;/p&gt;

&lt;p&gt;I hope you find the challenges useful to practice on and build up your portfolio and confidence as a developer.&lt;/p&gt;

&lt;p&gt;I always love hearing feedback and suggestions, so please feel free to let me know if you have any!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Introducing Frontend Mentor - Supercharge your front-end skills by building real projects</title>
      <dc:creator>Matt Studdert</dc:creator>
      <pubDate>Wed, 03 Oct 2018 13:13:59 +0000</pubDate>
      <link>https://dev.to/frontendmentor/introducing-frontend-mentor---supercharge-your-front-end-skills-by-building-real-projects-5h7j</link>
      <guid>https://dev.to/frontendmentor/introducing-frontend-mentor---supercharge-your-front-end-skills-by-building-real-projects-5h7j</guid>
      <description>&lt;p&gt;During the summer I had an idea that I thought would help people improve their front-end skills.&lt;/p&gt;

&lt;p&gt;There are so many incredible sites and services out there for helping people learn to code. Companies like &lt;a href="https://generalassemb.ly/" rel="noopener noreferrer"&gt;General Assembly&lt;/a&gt;, where I teach in London, and sites like &lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt; do an amazing job at teaching people from the ground up.&lt;/p&gt;

&lt;p&gt;But, I wanted to create a resource for people who already knew some HTML, CSS, and JavaScript. Not a step-by-step course, or code along, but a hands-off, project-based resource that emulates a real-life workflow as much as possible.&lt;/p&gt;

&lt;p&gt;So, I'd like to introduce you to &lt;a href="https://www.frontendmentor.io" rel="noopener noreferrer"&gt;Frontend Mentor&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1h97znii1205nolwr0y1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1h97znii1205nolwr0y1.png" alt="Screenshot of the Frontend Mentor homepage" width="161" height="81"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've had a mini-site up for a few months to test the idea and get feedback. But now it's full-steam ahead with a new brand and full re-design of the site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges on Frontend Mentor
&lt;/h2&gt;

&lt;p&gt;For the challenges, I've created fictional brands to build the designs around. This helps each challenge mimic a real-life workflow. It's like building a site for an actual client!&lt;/p&gt;

&lt;p&gt;The challenges include mobile and desktop designs, starter code (including optimised assets).  A front-end style guide is also provided, which includes colours, fonts etc. &lt;/p&gt;

&lt;p&gt;Here’s a screenshot of the desktop preview for one of the challenges:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhh1mjahkdl37dxrgc5a7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhh1mjahkdl37dxrgc5a7.png" alt="Desktop design preview of the Huddle coding challenge on Frontend Mentor" width="161" height="81"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the mobile preview:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55ziz44ot6tzc393mqgg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55ziz44ot6tzc393mqgg.png" alt="Mobile design preview of the Huddle coding challenge on Frontend Mentor" width="161" height="81"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you would like to take a challenge, simply download a starter code from the site and you're away. I've decided to keep the starter code as downloads, instead of using a browser-based editor. This is because I want people to use the text editor and tools that they're most comfortable with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plans for the future
&lt;/h2&gt;

&lt;p&gt;Over the coming weeks, I'm going to be adding new challenges to the site. I'll build out a proper &lt;code&gt;/challenges&lt;/code&gt; index page to allow for filtering etc.&lt;/p&gt;

&lt;p&gt;I'm also thinking about the different types of challenges to offer on Frontend Mentor. I like the thought of having smaller components for quicker challenges and even multi-page sites for people who want a real challenge. &lt;/p&gt;

&lt;p&gt;I'll be adding some challenges that involve a bit of JavaScript as well. One of my goals is to offer ‘Bring Your Own Frontend’ (BYOF) challenges. For these challenges, Frontend Mentor would provide the designs and a documented public API. People can then choose which JavaScript library/framework to practice with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Please give your feedback and share it around
&lt;/h2&gt;

&lt;p&gt;This is the absolute beginning for Frontend Mentor, so please do let me know your thoughts. There are so many different directions I could take this in and I'd love to hear your ideas.&lt;/p&gt;

&lt;p&gt;Feel free to join the Slack community on the site as well to get help on the challenges and to help others out. &lt;/p&gt;

&lt;p&gt;Also, &lt;a href="https://twitter.com/frontendmentor" rel="noopener noreferrer"&gt;follow Frontend Mentor (@frontendmentor) on Twitter&lt;/a&gt; for the latest updates.&lt;/p&gt;

&lt;p&gt;I look forward to hearing everyone’s feedback! Please share the site with anyone who you think it could help 🙌&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>css</category>
    </item>
  </channel>
</rss>
