<?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>Forem: Shashwat Pritish</title>
    <description>The latest articles on Forem by Shashwat Pritish (@pritish_academy).</description>
    <link>https://forem.com/pritish_academy</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%2Fuser%2Fprofile_image%2F3592436%2Fbc256d34-b645-49be-a84c-c5810b803886.png</url>
      <title>Forem: Shashwat Pritish</title>
      <link>https://forem.com/pritish_academy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/pritish_academy"/>
    <language>en</language>
    <item>
      <title>Your UI Isn’t Ugly — It’s Inconsistent (Here’s How to Fix That)”</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Thu, 12 Feb 2026 02:59:16 +0000</pubDate>
      <link>https://forem.com/pritish_academy/your-ui-isnt-ugly-its-inconsistent-heres-how-to-fix-that-3kme</link>
      <guid>https://forem.com/pritish_academy/your-ui-isnt-ugly-its-inconsistent-heres-how-to-fix-that-3kme</guid>
      <description>&lt;p&gt;Most developers think their UI looks bad because they’re “not good at design”.&lt;br&gt;&lt;br&gt;
That’s rarely the real problem.&lt;/p&gt;

&lt;p&gt;More often, the UI feels &lt;em&gt;off&lt;/em&gt; because it’s &lt;strong&gt;inconsistent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not ugly.&lt;br&gt;&lt;br&gt;
Not broken.&lt;br&gt;&lt;br&gt;
Just quietly inconsistent — and your users &lt;em&gt;feel&lt;/em&gt; it instantly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Inconsistency Is Invisible (Until It’s Not)
&lt;/h2&gt;

&lt;p&gt;Users usually can’t explain &lt;em&gt;why&lt;/em&gt; your product feels uncomfortable.&lt;/p&gt;

&lt;p&gt;But they notice things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buttons that don’t behave the same&lt;/li&gt;
&lt;li&gt;Spacing that randomly changes&lt;/li&gt;
&lt;li&gt;Fonts that almost match, but not quite&lt;/li&gt;
&lt;li&gt;Colors that mean different things in different places&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Their brain keeps asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Wait… is this the same thing or not?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That mental friction is what makes a UI feel amateur.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Cost of Inconsistency
&lt;/h2&gt;

&lt;p&gt;Inconsistent UI doesn’t just look bad — it &lt;strong&gt;slows users down&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users hesitate before clicking
&lt;/li&gt;
&lt;li&gt;Trust drops subconsciously
&lt;/li&gt;
&lt;li&gt;Learning time increases
&lt;/li&gt;
&lt;li&gt;Your product feels harder than it actually is
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good UI reduces thinking.&lt;br&gt;&lt;br&gt;
Inconsistent UI &lt;em&gt;demands&lt;/em&gt; it.&lt;/p&gt;




&lt;h2&gt;
  
  
  5 Places Where Inconsistency Sneaks In
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Spacing
&lt;/h3&gt;

&lt;p&gt;Margins and padding change screen to screen.&lt;/p&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pick a spacing scale (4, 8, 16, 24, 32)&lt;/li&gt;
&lt;li&gt;Never eyeball spacing again&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Typography
&lt;/h3&gt;

&lt;p&gt;Same text type, different font size or weight.&lt;/p&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define text roles: heading, subheading, body, caption&lt;/li&gt;
&lt;li&gt;Use them everywhere — no exceptions&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Colors
&lt;/h3&gt;

&lt;p&gt;The same color means different things.&lt;/p&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One color = one purpose&lt;/li&gt;
&lt;li&gt;Success, warning, error, primary — be strict&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. Buttons
&lt;/h3&gt;

&lt;p&gt;Different shapes, sizes, or hover behaviors.&lt;/p&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create button variants (primary, secondary, danger)&lt;/li&gt;
&lt;li&gt;Reuse, don’t redesign&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. Interaction Patterns
&lt;/h3&gt;

&lt;p&gt;Same action behaves differently across pages.&lt;/p&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Decide patterns once&lt;/li&gt;
&lt;li&gt;Apply them everywhere&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Consistency Is a Design Skill — Not Talent
&lt;/h2&gt;

&lt;p&gt;Great designers aren’t magically creative.&lt;/p&gt;

&lt;p&gt;They’re &lt;strong&gt;boringly consistent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repeat decisions&lt;/li&gt;
&lt;li&gt;Reuse components&lt;/li&gt;
&lt;li&gt;Avoid clever one-offs&lt;/li&gt;
&lt;li&gt;Prefer systems over screens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s why their UI feels calm.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Fix Your UI (Practically)
&lt;/h2&gt;

&lt;p&gt;Start small:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Audit one screen&lt;/li&gt;
&lt;li&gt;List all spacing values used&lt;/li&gt;
&lt;li&gt;Normalize them&lt;/li&gt;
&lt;li&gt;Repeat for typography and buttons&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You don’t need a redesign.&lt;br&gt;
You need &lt;strong&gt;discipline&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Your UI probably isn’t ugly.&lt;/p&gt;

&lt;p&gt;It’s just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trying to be helpful&lt;/li&gt;
&lt;li&gt;Making too many decisions&lt;/li&gt;
&lt;li&gt;Asking users to think too much&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consistency removes that burden.&lt;/p&gt;

&lt;p&gt;And suddenly —&lt;br&gt;&lt;br&gt;
your UI feels &lt;em&gt;professional&lt;/em&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What’s one area of UI consistency you struggle with the most?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>ui</category>
      <category>design</category>
    </item>
    <item>
      <title>Is Learning CSS a Waste of Time in 2026?</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Tue, 03 Feb 2026 14:20:17 +0000</pubDate>
      <link>https://forem.com/pritish_academy/is-learning-css-a-waste-of-time-in-2026-44c9</link>
      <guid>https://forem.com/pritish_academy/is-learning-css-a-waste-of-time-in-2026-44c9</guid>
      <description>&lt;p&gt;With AI-generated UIs, component libraries, and design systems everywhere,&lt;br&gt;&lt;br&gt;
a real question is starting to appear:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is learning CSS still worth it in 2026?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Short answer: &lt;strong&gt;yes&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
But probably not for the reason you think.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why people think CSS is becoming irrelevant
&lt;/h2&gt;

&lt;p&gt;Today, you can build UIs using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;component libraries
&lt;/li&gt;
&lt;li&gt;prebuilt design systems
&lt;/li&gt;
&lt;li&gt;AI-generated layouts
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without writing much CSS at all.&lt;/p&gt;

&lt;p&gt;So it &lt;em&gt;feels&lt;/em&gt; like CSS is optional.&lt;/p&gt;

&lt;p&gt;And for shipping something quickly — it often is.&lt;/p&gt;




&lt;h2&gt;
  
  
  The uncomfortable truth
&lt;/h2&gt;

&lt;p&gt;Tools don’t remove CSS.&lt;/p&gt;

&lt;p&gt;They &lt;strong&gt;hide it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every component library, every AI-generated UI, every design system&lt;br&gt;&lt;br&gt;
is still powered by CSS underneath.&lt;/p&gt;

&lt;p&gt;When something looks wrong, breaks, or feels “off” —&lt;br&gt;&lt;br&gt;
you don’t debug the tool.&lt;/p&gt;

&lt;p&gt;You debug CSS.&lt;/p&gt;




&lt;h2&gt;
  
  
  What changes in 2026 isn’t CSS — it’s &lt;em&gt;why&lt;/em&gt; you learn it
&lt;/h2&gt;

&lt;p&gt;You don’t learn CSS to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;memorize properties
&lt;/li&gt;
&lt;li&gt;write everything from scratch
&lt;/li&gt;
&lt;li&gt;avoid libraries
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You learn CSS to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;understand layout behavior
&lt;/li&gt;
&lt;li&gt;control spacing and hierarchy
&lt;/li&gt;
&lt;li&gt;reason about UI problems
&lt;/li&gt;
&lt;li&gt;make intentional design decisions
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CSS becomes a &lt;strong&gt;thinking skill&lt;/strong&gt;, not a syntax skill.&lt;/p&gt;




&lt;h2&gt;
  
  
  The developers who struggle the most
&lt;/h2&gt;

&lt;p&gt;In 2026, the weakest frontend developers won’t be the ones who don’t know React.&lt;/p&gt;

&lt;p&gt;They’ll be the ones who:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rely blindly on components
&lt;/li&gt;
&lt;li&gt;can’t fix layout issues
&lt;/li&gt;
&lt;li&gt;can’t customize design systems
&lt;/li&gt;
&lt;li&gt;don’t understand why UIs feel bad
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They ship faster — until something breaks.&lt;/p&gt;




&lt;h2&gt;
  
  
  The developers who stand out
&lt;/h2&gt;

&lt;p&gt;They don’t write more CSS.&lt;/p&gt;

&lt;p&gt;They write &lt;strong&gt;less&lt;/strong&gt;, but with confidence.&lt;/p&gt;

&lt;p&gt;They understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;flow vs positioning
&lt;/li&gt;
&lt;li&gt;intrinsic sizing
&lt;/li&gt;
&lt;li&gt;responsive constraints
&lt;/li&gt;
&lt;li&gt;visual hierarchy
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So when tools fail, they don’t panic.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;Learning CSS in 2026 isn’t about writing more styles.&lt;/p&gt;

&lt;p&gt;It’s about &lt;strong&gt;understanding the language of the web&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can ignore CSS for a while.&lt;br&gt;&lt;br&gt;
But eventually, every UI problem leads back to it.&lt;/p&gt;

&lt;p&gt;And when it does,&lt;br&gt;&lt;br&gt;
you’ll either understand what’s happening — or you won’t.&lt;/p&gt;

</description>
      <category>css</category>
      <category>frontend</category>
      <category>webdev</category>
      <category>career</category>
    </item>
    <item>
      <title>My UI Looked Fine — But It Was Asking Users to Think Too Much</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Wed, 21 Jan 2026 14:48:01 +0000</pubDate>
      <link>https://forem.com/pritish_academy/my-ui-looked-fine-but-it-was-asking-users-to-think-too-much-2180</link>
      <guid>https://forem.com/pritish_academy/my-ui-looked-fine-but-it-was-asking-users-to-think-too-much-2180</guid>
      <description>&lt;p&gt;Nothing was broken.&lt;/p&gt;

&lt;p&gt;Buttons worked.&lt;br&gt;&lt;br&gt;
Layouts were clean.&lt;br&gt;&lt;br&gt;
The UI even looked &lt;em&gt;good&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;And yet — users hesitated.&lt;/p&gt;

&lt;p&gt;Not because they were confused,&lt;br&gt;&lt;br&gt;
but because the UI kept asking them questions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What should I click first?
&lt;/li&gt;
&lt;li&gt;Is this important?
&lt;/li&gt;
&lt;li&gt;Can I ignore this?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every extra choice added friction.&lt;/p&gt;

&lt;p&gt;That’s when I realized something uncomfortable:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good UI doesn’t ask users to think.&lt;br&gt;&lt;br&gt;
It decides for them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When an interface feels “off”,&lt;br&gt;&lt;br&gt;
it’s often because it’s making users do mental work&lt;br&gt;&lt;br&gt;
they never signed up for.&lt;/p&gt;

&lt;p&gt;Once you notice this,&lt;br&gt;&lt;br&gt;
you’ll start seeing it everywhere.&lt;/p&gt;

&lt;p&gt;In your apps.&lt;br&gt;&lt;br&gt;
In polished products.&lt;br&gt;&lt;br&gt;
In UIs you thought were well-designed.&lt;/p&gt;

</description>
      <category>ui</category>
      <category>uidesign</category>
      <category>frontend</category>
      <category>design</category>
    </item>
    <item>
      <title>3 Mistakes Most Beginner Developers Make</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Tue, 20 Jan 2026 04:12:08 +0000</pubDate>
      <link>https://forem.com/pritish_academy/3-mistakes-most-beginner-developers-make-48l7</link>
      <guid>https://forem.com/pritish_academy/3-mistakes-most-beginner-developers-make-48l7</guid>
      <description>&lt;p&gt;Everyone talks about frameworks, tools, and tutorials.&lt;/p&gt;

&lt;p&gt;But most beginner developers don’t struggle because of a lack of knowledge.&lt;br&gt;&lt;br&gt;
They struggle because of &lt;strong&gt;how they think while building&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here are three mistakes almost every beginner makes — often without realizing it.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Trying to be “advanced” too early
&lt;/h2&gt;

&lt;p&gt;Beginners often chase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;complex architectures
&lt;/li&gt;
&lt;li&gt;premature abstractions
&lt;/li&gt;
&lt;li&gt;“industry-level” patterns
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before they’ve built enough simple things.&lt;/p&gt;

&lt;p&gt;The result isn’t better code.&lt;br&gt;&lt;br&gt;
It’s slower progress and more confusion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simple code that works beats clever code you can’t explain.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Treating tutorials as understanding
&lt;/h2&gt;

&lt;p&gt;Finishing a tutorial feels productive.&lt;/p&gt;

&lt;p&gt;But copying code isn’t the same as understanding it.&lt;/p&gt;

&lt;p&gt;If you can’t:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rebuild it without looking
&lt;/li&gt;
&lt;li&gt;explain &lt;em&gt;why&lt;/em&gt; something exists
&lt;/li&gt;
&lt;li&gt;break it and fix it
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You haven’t really learned it yet.&lt;/p&gt;

&lt;p&gt;Tutorials should be a starting point — not the finish line.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Ignoring fundamentals while chasing tools
&lt;/h2&gt;

&lt;p&gt;Frameworks change.&lt;br&gt;&lt;br&gt;
Libraries evolve.&lt;br&gt;&lt;br&gt;
Trends fade.&lt;/p&gt;

&lt;p&gt;But fundamentals don’t.&lt;/p&gt;

&lt;p&gt;Beginners often skip:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;core JavaScript concepts
&lt;/li&gt;
&lt;li&gt;basic CSS layout understanding
&lt;/li&gt;
&lt;li&gt;how data flows in an app
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And rely too much on tools to “handle it”.&lt;/p&gt;

&lt;p&gt;Tools help.&lt;br&gt;&lt;br&gt;
Fundamentals carry you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;Most beginner mistakes aren’t about writing bad code.&lt;/p&gt;

&lt;p&gt;They’re about &lt;strong&gt;learning in the wrong order&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Slow down.&lt;br&gt;&lt;br&gt;
Build smaller.&lt;br&gt;&lt;br&gt;
Understand deeper.&lt;/p&gt;

&lt;p&gt;That’s how real progress happens.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>development</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why Your UI Looks “Off” -- Part 2</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Tue, 23 Dec 2025 17:04:06 +0000</pubDate>
      <link>https://forem.com/pritish_academy/why-your-ui-looks-off-part-2-2ho1</link>
      <guid>https://forem.com/pritish_academy/why-your-ui-looks-off-part-2-2ho1</guid>
      <description>&lt;h2&gt;
  
  
  You’re Probably Doing This
&lt;/h2&gt;

&lt;p&gt;Be honest.&lt;/p&gt;

&lt;p&gt;Your UI isn’t bad.&lt;br&gt;&lt;br&gt;
It’s not broken.&lt;br&gt;&lt;br&gt;
It’s not ugly.&lt;/p&gt;

&lt;p&gt;But you &lt;em&gt;know&lt;/em&gt; something’s wrong.&lt;/p&gt;

&lt;p&gt;And chances are — &lt;strong&gt;you caused it without realizing&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  You keep adding instead of removing
&lt;/h2&gt;

&lt;p&gt;When something feels wrong, you add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;another border
&lt;/li&gt;
&lt;li&gt;another color
&lt;/li&gt;
&lt;li&gt;another shadow
&lt;/li&gt;
&lt;li&gt;another animation
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Reality
&lt;/h3&gt;

&lt;p&gt;More UI never fixes bad UI.&lt;br&gt;&lt;br&gt;
It only hides the problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  You don’t trust whitespace
&lt;/h2&gt;

&lt;p&gt;You feel uncomfortable leaving space empty.&lt;/p&gt;

&lt;p&gt;So you fill it.&lt;br&gt;&lt;br&gt;
Text. Icons. Lines. Boxes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reality
&lt;/h3&gt;

&lt;p&gt;Whitespace isn’t empty.&lt;br&gt;&lt;br&gt;
It’s what makes everything else look intentional.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;None of these decisions felt wrong at the time.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  You treat everything as equally important
&lt;/h2&gt;

&lt;p&gt;Every button looks primary.&lt;br&gt;&lt;br&gt;
Every card wants attention.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reality
&lt;/h3&gt;

&lt;p&gt;Good UI has hierarchy.&lt;br&gt;&lt;br&gt;
Bad UI has democracy.&lt;/p&gt;




&lt;h2&gt;
  
  
  You change styles “just this once”
&lt;/h2&gt;

&lt;p&gt;Different radius here.&lt;br&gt;&lt;br&gt;
Different shadow there.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reality
&lt;/h3&gt;

&lt;p&gt;That “just once” happens 20 times.&lt;br&gt;&lt;br&gt;
That’s why your UI feels messy.&lt;/p&gt;




&lt;h2&gt;
  
  
  You design screens, not experiences
&lt;/h2&gt;

&lt;p&gt;Each screen looks fine alone.&lt;br&gt;&lt;br&gt;
Together, they don’t belong.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reality
&lt;/h3&gt;

&lt;p&gt;Good UI feels familiar across screens.&lt;/p&gt;




&lt;h2&gt;
  
  
  Truth
&lt;/h2&gt;

&lt;p&gt;If your UI looks off, it’s rarely the framework.&lt;/p&gt;

&lt;p&gt;It’s usually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;too much added
&lt;/li&gt;
&lt;li&gt;too little removed
&lt;/li&gt;
&lt;li&gt;no hierarchy
&lt;/li&gt;
&lt;li&gt;broken consistency
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you think these are the real problems — they’re not.&lt;/p&gt;

&lt;p&gt;Those are just the symptoms.&lt;/p&gt;

&lt;p&gt;The real issue lives one layer deeper.&lt;/p&gt;

&lt;p&gt;It has nothing to do with colors.&lt;br&gt;
Or spacing.&lt;br&gt;
Or components.&lt;/p&gt;

&lt;p&gt;Once you see it,&lt;br&gt;
you’ll start noticing it everywhere.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In apps you admire.&lt;/li&gt;
&lt;li&gt;In products you thought were “well designed”.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And uncomfortably —&lt;br&gt;
in your own UI.&lt;/p&gt;

&lt;p&gt;To be continued....&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ui</category>
      <category>uidesign</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Our UI Is Fine — So Why Does It Feel Bad?</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Fri, 19 Dec 2025 13:24:10 +0000</pubDate>
      <link>https://forem.com/pritish_academy/our-ui-is-fine-so-why-does-it-feel-bad-3ia2</link>
      <guid>https://forem.com/pritish_academy/our-ui-is-fine-so-why-does-it-feel-bad-3ia2</guid>
      <description>&lt;p&gt;Your app works.&lt;br&gt;&lt;br&gt;
No bugs.&lt;br&gt;&lt;br&gt;
No broken layouts.&lt;/p&gt;

&lt;p&gt;Yet… it doesn’t &lt;em&gt;feel&lt;/em&gt; right.&lt;/p&gt;

&lt;p&gt;Here’s why 👇&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Everything is competing for attention
&lt;/h2&gt;

&lt;p&gt;When everything is “important”, nothing is.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Pick &lt;strong&gt;one primary action per screen&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Everything else should quietly support it.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. There’s no visual rhythm
&lt;/h2&gt;

&lt;p&gt;Your UI has content, but no flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Repeat patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Same spacing
&lt;/li&gt;
&lt;li&gt;Same card styles
&lt;/li&gt;
&lt;li&gt;Same button sizes
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consistency creates comfort.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Too much information at once
&lt;/h2&gt;

&lt;p&gt;Users feel overwhelmed — even if nothing is technically wrong.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Hide details by default.&lt;br&gt;&lt;br&gt;
Reveal only when needed.&lt;/p&gt;

&lt;p&gt;Less visible ≠ less powerful.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. UI elements feel heavy
&lt;/h2&gt;

&lt;p&gt;Large borders, dark shadows, strong colors = visual weight.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Soften everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lighter shadows
&lt;/li&gt;
&lt;li&gt;Fewer borders
&lt;/li&gt;
&lt;li&gt;Muted backgrounds
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Light UI = calm UI.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. No clear starting point
&lt;/h2&gt;

&lt;p&gt;Users don’t know &lt;em&gt;where to look first&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Use hierarchy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One strong heading
&lt;/li&gt;
&lt;li&gt;One clear action
&lt;/li&gt;
&lt;li&gt;Everything else secondary
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Guide the eyes.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Not enough breathing room
&lt;/h2&gt;

&lt;p&gt;Even a good layout feels bad when it’s cramped.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Add more spacing than feels necessary.&lt;br&gt;&lt;br&gt;
Whitespace is not wasted space.&lt;/p&gt;




&lt;h2&gt;
  
  
  In short
&lt;/h2&gt;

&lt;p&gt;Your UI feels bad because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Too many priorities
&lt;/li&gt;
&lt;li&gt;No rhythm
&lt;/li&gt;
&lt;li&gt;Too much information
&lt;/li&gt;
&lt;li&gt;Heavy visuals
&lt;/li&gt;
&lt;li&gt;Weak hierarchy
&lt;/li&gt;
&lt;li&gt;Lack of whitespace
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are bugs.&lt;br&gt;&lt;br&gt;
But fixing them changes &lt;em&gt;everything&lt;/em&gt;.&lt;/p&gt;

</description>
      <category>design</category>
      <category>ui</category>
      <category>ux</category>
    </item>
    <item>
      <title>Why Your UI Looks “Off” (And How to Fix It)</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Fri, 12 Dec 2025 15:23:12 +0000</pubDate>
      <link>https://forem.com/pritish_academy/why-your-ui-looks-off-and-how-to-fix-it-1o6l</link>
      <guid>https://forem.com/pritish_academy/why-your-ui-looks-off-and-how-to-fix-it-1o6l</guid>
      <description>&lt;p&gt;Sometimes your UI looks &lt;em&gt;fine&lt;/em&gt;… but still feels weird. Off. Not polished.&lt;br&gt;&lt;br&gt;
Here’s why — and how to fix it fast 👇&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Spacing is all over the place
&lt;/h2&gt;

&lt;p&gt;If your UI feels messy, it’s usually the spacing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Use one scale everywhere: &lt;code&gt;8 / 12 / 16 / 24 / 32&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
Just doing this makes the whole design cleaner instantly.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. No clear text hierarchy
&lt;/h2&gt;

&lt;p&gt;If all text looks the same, nothing stands out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Think simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Big = important
&lt;/li&gt;
&lt;li&gt;Medium = supportive
&lt;/li&gt;
&lt;li&gt;Small = details
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Colors are too strong
&lt;/h2&gt;

&lt;p&gt;Bright colors everywhere make your UI feel “beginner”.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Use soft neutrals.&lt;br&gt;&lt;br&gt;
Save bright colors only for ONE thing: &lt;strong&gt;actions&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Things don’t align
&lt;/h2&gt;

&lt;p&gt;Even a good UI looks amateur if items don’t line up.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Left-align. Use a grid.&lt;br&gt;&lt;br&gt;
Your entire UI looks 2× more professional immediately.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Shadows are heavy
&lt;/h2&gt;

&lt;p&gt;Harsh shadows = cheap UI feel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Use soft, barely-there shadows.&lt;br&gt;&lt;br&gt;
Or skip shadows and use spacing instead.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Too many borders
&lt;/h2&gt;

&lt;p&gt;Borders everywhere create noise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Use contrast instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slightly darker background
&lt;/li&gt;
&lt;li&gt;More spacing
&lt;/li&gt;
&lt;li&gt;Light shadows
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. Not enough breathing room
&lt;/h2&gt;

&lt;p&gt;If your UI feels cramped, this is why.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Add more padding than you think you need.&lt;br&gt;&lt;br&gt;
Whitespace = premium.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick summary
&lt;/h2&gt;

&lt;p&gt;If your UI looks “off”, fix these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spacing
&lt;/li&gt;
&lt;li&gt;Text hierarchy
&lt;/li&gt;
&lt;li&gt;Color saturation
&lt;/li&gt;
&lt;li&gt;Alignment
&lt;/li&gt;
&lt;li&gt;Shadows
&lt;/li&gt;
&lt;li&gt;Borders
&lt;/li&gt;
&lt;li&gt;Whitespace
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Small changes → 90% UI problems fixed✅&lt;/p&gt;

&lt;p&gt;For 10%, wait for part II&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ui</category>
      <category>uidesign</category>
      <category>frontend</category>
    </item>
    <item>
      <title>100x Your UI with One Simple Trick</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Fri, 05 Dec 2025 06:40:38 +0000</pubDate>
      <link>https://forem.com/pritish_academy/100x-your-ui-with-one-simple-trick-8en</link>
      <guid>https://forem.com/pritish_academy/100x-your-ui-with-one-simple-trick-8en</guid>
      <description>&lt;p&gt;When it comes to UI, less is often more. &lt;strong&gt;Negative spacing&lt;/strong&gt;—strategic use of empty space—can transform cluttered designs into clean, user-friendly experiences.  &lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Focus attention:&lt;/strong&gt; Users naturally gravitate to what’s important
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create hierarchy:&lt;/strong&gt; Whitespace separates sections without extra lines or borders
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feel premium:&lt;/strong&gt; Clean, airy interfaces feel modern and professional
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Increase padding around key elements
&lt;/li&gt;
&lt;li&gt;Remove buttons, icons, or text that aren’t essential
&lt;/li&gt;
&lt;li&gt;Let whitespace guide the eye instead of cramming everything in
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 Negative spacing isn’t “empty”—it’s &lt;strong&gt;intentional design breathing room&lt;/strong&gt; that makes your UI feel effortless.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>ui</category>
      <category>uidesign</category>
      <category>css</category>
    </item>
    <item>
      <title>3 UI Styles for your Next Project</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Wed, 26 Nov 2025 15:17:37 +0000</pubDate>
      <link>https://forem.com/pritish_academy/3-ui-styles-for-your-next-project-28c5</link>
      <guid>https://forem.com/pritish_academy/3-ui-styles-for-your-next-project-28c5</guid>
      <description>&lt;p&gt;Modern UI design evolves fast — but some styles stay timeless because they are versatile, beautiful, and easy to implement.&lt;br&gt;&lt;br&gt;
In this post, let’s explore &lt;strong&gt;three UI styles&lt;/strong&gt; you can try in your next project&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Glassmorphism
&lt;/h2&gt;

&lt;p&gt;Glassmorphism is inspired by frosted glass. It uses blur, transparency, and soft highlights to give elements a floating glass-like appearance.Recently it was made popular by apple&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Characteristics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Transparency (usually 10–40%)
&lt;/li&gt;
&lt;li&gt;Background blur
&lt;/li&gt;
&lt;li&gt;Soft borders with high contrast
&lt;/li&gt;
&lt;li&gt;Vibrant, layered backgrounds
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Dashboards
&lt;/li&gt;
&lt;li&gt;Cards
&lt;/li&gt;
&lt;li&gt;Login screens
&lt;/li&gt;
&lt;li&gt;Widgets overlaying colorful backgrounds
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quick CSS Sample
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.glass&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;backdrop-filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;12px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.15&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. Neumorphism
&lt;/h2&gt;

&lt;p&gt;Neumorphism combines flat design and skeuomorphism. It focuses on soft shadows that create elements that look “pressed” into the background.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Characteristics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Same background color as the element
&lt;/li&gt;
&lt;li&gt;Soft inner &amp;amp; outer shadows
&lt;/li&gt;
&lt;li&gt;Minimalist look
&lt;/li&gt;
&lt;li&gt;Smooth, tactile feel
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Buttons
&lt;/li&gt;
&lt;li&gt;Toggles
&lt;/li&gt;
&lt;li&gt;Cards
&lt;/li&gt;
&lt;li&gt;Music or utility apps
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quick CSS Sample
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.neumorph&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#e0e0e0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;12px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
      &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt; &lt;span class="m"&gt;#bebebe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;-8px&lt;/span&gt; &lt;span class="m"&gt;-8px&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt; &lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. Claymorphism
&lt;/h2&gt;

&lt;p&gt;A fun, friendly, modern style with thick shadows and rounded shapes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Characteristics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Extra rounded corners
&lt;/li&gt;
&lt;li&gt;Thick, solid shadows
&lt;/li&gt;
&lt;li&gt;Bright and playful colors
&lt;/li&gt;
&lt;li&gt;“Soft toy” look
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Landing pages
&lt;/li&gt;
&lt;li&gt;Avatar cards
&lt;/li&gt;
&lt;li&gt;Feature blocks
&lt;/li&gt;
&lt;li&gt;Mobile apps for kids or creative tools
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quick CSS Sample
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.clay&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ffb74d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#e69a3e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Different UI styles suit different types of apps — and experimenting with them can improve both your creativity and UI skills.&lt;/p&gt;

&lt;p&gt;Try mixing them or applying each one in small components to see what fits your project best.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>uidesign</category>
      <category>ui</category>
    </item>
    <item>
      <title>Unlock Better AI Outputs with These 3 Prompt Engineering Secrets</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Mon, 24 Nov 2025 12:39:54 +0000</pubDate>
      <link>https://forem.com/pritish_academy/unlock-better-ai-outputs-with-these-3-prompt-engineering-secrets-29ka</link>
      <guid>https://forem.com/pritish_academy/unlock-better-ai-outputs-with-these-3-prompt-engineering-secrets-29ka</guid>
      <description>&lt;h2&gt;
  
  
  ⭐ 1. Give &lt;strong&gt;Context + Goal + Constraints&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;LLMs perform best when they understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Who you are&lt;/strong&gt; (role)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you want&lt;/strong&gt; (goal)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to behave&lt;/strong&gt; (constraints)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
“You are a senior React mentor. Explain React Server Components in simple language, in under 150 words, with 1 example.”&lt;/p&gt;




&lt;h2&gt;
  
  
  ⭐ 2. Use &lt;strong&gt;Step-by-Step Instructions&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Break the task into explicit steps.&lt;br&gt;&lt;br&gt;
Clear steps = predictable, controllable output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
“Rewrite this code.&lt;br&gt;&lt;br&gt;
Step 1: Explain the issue.&lt;br&gt;&lt;br&gt;
Step 2: Give the corrected version.&lt;br&gt;&lt;br&gt;
Step 3: Provide 2 alternative solutions.”&lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐ 3. Give &lt;strong&gt;Examples&lt;/strong&gt; (Few-Shot Prompting)
&lt;/h2&gt;

&lt;p&gt;Showing the model the &lt;em&gt;structure or style&lt;/em&gt; you want dramatically improves results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
“Write a bug report in this format:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Title:&lt;/strong&gt; …&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Steps to Reproduce:&lt;/strong&gt; …  &lt;/p&gt;

</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>prompt</category>
    </item>
    <item>
      <title>Next.JS Authentication with Clerk</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Fri, 21 Nov 2025 15:06:07 +0000</pubDate>
      <link>https://forem.com/pritish_academy/nextjs-authentication-with-clerk-73d</link>
      <guid>https://forem.com/pritish_academy/nextjs-authentication-with-clerk-73d</guid>
      <description>&lt;p&gt;Authentication is usually the most time-consuming part of any app… but it doesn’t have to be.&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;Clerk&lt;/strong&gt;, you can add a fully secure auth system to &lt;strong&gt;Next.js (App Router)&lt;/strong&gt; in minutes — and in this guide, we’ll build a &lt;strong&gt;custom Sign-In / Sign-Up UI&lt;/strong&gt; plus a &lt;strong&gt;protected dashboard route&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What we'll build
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔐 Sign In page (custom UI)
&lt;/li&gt;
&lt;li&gt;🆕 Sign Up page (custom UI)
&lt;/li&gt;
&lt;li&gt;🛡 Protected route: &lt;code&gt;/dashboard&lt;/code&gt; (only logged-in users can open it)
&lt;/li&gt;
&lt;li&gt;⚡ Using Clerk hooks (&lt;code&gt;useSignIn&lt;/code&gt;, &lt;code&gt;useSignUp&lt;/code&gt;, &lt;code&gt;useUser&lt;/code&gt;)
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1️⃣ Install Clerk in Next.js (App Router)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @clerk/nextjs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In &lt;code&gt;.env.local&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_XXXXXXXX
CLERK_SECRET_KEY=sk_test_XXXXXXXX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2️⃣ Wrap the app with ClerkProvider — &lt;code&gt;app/layout.tsx&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ClerkProvider&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@clerk/nextjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./globals.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;RootLayout&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;children&lt;/span&gt; &lt;span class="p"&gt;}:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ClerkProvider&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt; &lt;span class="na"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;ClerkProvider&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3️⃣ Build &lt;strong&gt;custom Sign-In page&lt;/strong&gt; — &lt;code&gt;app/sign-in/page.tsx&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;use client&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useSignIn&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@clerk/nextjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useRouter&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;next/navigation&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;SignInPage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;isLoaded&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;signIn&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useSignIn&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRouter&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setEmail&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setPassword&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isLoaded&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleSubmit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;preventDefault&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;signIn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;identifier&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;complete&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/dashboard&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt; &lt;span class="na"&gt;onSubmit&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleSubmit&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"max-w-sm mx-auto mt-20 flex flex-col gap-3"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-2xl font-semibold text-center"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Sign In&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"border px-3 py-2 rounded"&lt;/span&gt; &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Email"&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setEmail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"border px-3 py-2 rounded"&lt;/span&gt; &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Password"&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setPassword&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"bg-black text-white py-2 rounded"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Continue&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4️⃣ Build &lt;strong&gt;custom Sign-Up page&lt;/strong&gt; — &lt;code&gt;app/sign-up/page.tsx&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;use client&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useSignUp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@clerk/nextjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useRouter&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;next/navigation&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;SignUpPage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;isLoaded&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;signUp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useSignUp&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRouter&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setEmail&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setPassword&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isLoaded&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleSubmit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;preventDefault&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;signUp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;emailAddress&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;complete&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/dashboard&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt; &lt;span class="na"&gt;onSubmit&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleSubmit&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"max-w-sm mx-auto mt-20 flex flex-col gap-3"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-2xl font-semibold text-center"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Create Account&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"border px-3 py-2 rounded"&lt;/span&gt; &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Email"&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setEmail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"border px-3 py-2 rounded"&lt;/span&gt; &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Password"&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setPassword&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"bg-black text-white py-2 rounded"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Sign Up&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5️⃣ Create the &lt;strong&gt;protected Dashboard route&lt;/strong&gt; — &lt;code&gt;app/dashboard/page.tsx&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;UserButton&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@clerk/nextjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;DashboardPage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;userId&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-center mt-20"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Unauthorized&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"max-w-xl mx-auto mt-20 text-center"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;UserButton&lt;/span&gt; &lt;span class="na"&gt;afterSignOutUrl&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text-3xl font-bold mt-6"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Welcome to Dashboard 🎉&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  6️⃣ Protect the route with middleware — &lt;code&gt;middleware.ts&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;clerkMiddleware&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;createRouteMatcher&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@clerk/nextjs/server&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isProtectedRoute&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createRouteMatcher&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/dashboard(.*)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;clerkMiddleware&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isProtectedRoute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="nf"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;protect&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;matcher&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/((?!_next|.*&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;..*).*)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🎉 Done!
&lt;/h2&gt;

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

&lt;ul&gt;
&lt;li&gt;🔐 Custom Sign-In page
&lt;/li&gt;
&lt;li&gt;🆕 Custom Sign-Up page
&lt;/li&gt;
&lt;li&gt;🛡 Protected Dashboard route
&lt;/li&gt;
&lt;li&gt;🚫 Automatic access blocking via middleware
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>javascript</category>
      <category>clerk</category>
    </item>
    <item>
      <title>Improve Your UI with These 3 Simple Changes</title>
      <dc:creator>Shashwat Pritish</dc:creator>
      <pubDate>Fri, 21 Nov 2025 14:07:38 +0000</pubDate>
      <link>https://forem.com/pritish_academy/3-ui-mistakes-every-beginner-frontend-developer-makes-and-quick-fixes-29no</link>
      <guid>https://forem.com/pritish_academy/3-ui-mistakes-every-beginner-frontend-developer-makes-and-quick-fixes-29no</guid>
      <description>&lt;p&gt;Ever look at your UI and feel like something's just... &lt;em&gt;off&lt;/em&gt;? You've followed the specs, the logic works, but it just doesn't &lt;em&gt;feel&lt;/em&gt; good. Chances are, you're falling for a few subtle design traps.&lt;/p&gt;

&lt;p&gt;Forget boring theory. Let's fix it. Here are three tiny changes that make a massive impact.&lt;/p&gt;




&lt;h3&gt;
  
  
  Tip 1: Let It Breathe!
&lt;/h3&gt;

&lt;p&gt;Does your UI feel like a crowded room where everyone's shouting? That's what happens when you don't use enough whitespace. Your content can't breathe, and your users feel stressed trying to find what they need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Trap:&lt;/strong&gt; Jamming elements together or using random &lt;code&gt;margin: 11px;&lt;/code&gt; values.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Magic Fix:&lt;/strong&gt; Treat empty space as the most important element on the page. Create a simple spacing system and stick to it.&lt;/p&gt;

&lt;p&gt;Think of it like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;8px&lt;/code&gt; for small gaps (like between an icon and text).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;16px&lt;/code&gt; for medium gaps (like separating items in a list).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;32px&lt;/code&gt; for big gaps (like separating whole sections).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use these consistently, and your UI will instantly feel more organized, calm, and professional.&lt;/p&gt;




&lt;h3&gt;
  
  
  Tip 2: Use Color Like a Pro, Not a Rainbow
&lt;/h3&gt;

&lt;p&gt;Remember using every color in the crayon box on a drawing? It was fun, but it was also a mess. The same thing happens in UI. When every element is a different color, nothing stands out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Trap:&lt;/strong&gt; Using a bunch of colors because you can. Your "Sign Up" button is blue, your "Learn More" is green, your nav bar is orange... Help!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Magic Fix:&lt;/strong&gt; The 60-30-10 rule. It’s a secret recipe for perfect color balance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;60%&lt;/strong&gt; of your UI should be your main, neutral color (like a light gray or white).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;30%&lt;/strong&gt; should be your secondary color, adding some personality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10%&lt;/strong&gt; is your HERO color. This is your accent, your star player. Use it &lt;em&gt;only&lt;/em&gt; for the most important things, like your main call-to-action button.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This tells your user's brain exactly where to look.&lt;/p&gt;




&lt;h3&gt;
  
  
  Tip 3: Soften Up! (Lose the Sharp Edges)
&lt;/h3&gt;

&lt;p&gt;Think about the real world. Very few things have perfect, razor-sharp 90-degree corners. Our brains are wired to see rounded shapes as safer and more friendly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Trap:&lt;/strong&gt; Every button, card, and input field is a perfect, sharp rectangle. It can make your whole site feel a bit... aggressive and dated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Magic Fix:&lt;/strong&gt; A tiny &lt;code&gt;border-radius&lt;/code&gt;. Seriously, that's it.&lt;br&gt;
You don't need giant, bubbly circles. Just a little softness goes a long way.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c"&gt;/* Just a touch of friendliness */&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’s a simple change that makes your entire interface feel more modern and approachable. It’s like saying "Hey, come on in!" instead of "DO NOT TRESPASS."&lt;/p&gt;




&lt;h3&gt;
  
  
  You're Not Just a Coder, You're a Designer
&lt;/h3&gt;

&lt;p&gt;See? No complex theory needed. By giving your layout &lt;strong&gt;space&lt;/strong&gt;, using color with &lt;strong&gt;purpose&lt;/strong&gt;, and &lt;strong&gt;softening&lt;/strong&gt; your corners, you're already thinking like a designer. Try these out—your users (and your eyes) will thank you.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>webdev</category>
      <category>ui</category>
      <category>design</category>
    </item>
  </channel>
</rss>
