<?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: Muhammad Shawaiz Tahir</title>
    <description>The latest articles on DEV Community by Muhammad Shawaiz Tahir (@shawaiz).</description>
    <link>https://dev.to/shawaiz</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3987812%2Fa0918f7b-e6c5-488e-a247-494cfb55a0ec.png</url>
      <title>DEV Community: Muhammad Shawaiz Tahir</title>
      <link>https://dev.to/shawaiz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shawaiz"/>
    <language>en</language>
    <item>
      <title>I Spent 3 Days Building a SaaS Admin Dashboard Template in Next.js — Here's Everything I Learned</title>
      <dc:creator>Muhammad Shawaiz Tahir</dc:creator>
      <pubDate>Tue, 16 Jun 2026 19:08:58 +0000</pubDate>
      <link>https://dev.to/shawaiz/i-spent-3-days-building-a-saas-admin-dashboard-template-in-nextjs-heres-everything-i-learned-76m</link>
      <guid>https://dev.to/shawaiz/i-spent-3-days-building-a-saas-admin-dashboard-template-in-nextjs-heres-everything-i-learned-76m</guid>
      <description>&lt;p&gt;After 3 days of coding, debugging, and obsessing over pixel-perfect UI, I shipped Nexus UI — a free SaaS Admin Dashboard template built with Next.js 16, TypeScript, and SCSS Modules.&lt;/p&gt;

&lt;p&gt;Here's what I built, why I made certain decisions, and what I'd do differently.&lt;/p&gt;

&lt;p&gt;What I Built&lt;/p&gt;

&lt;p&gt;Nexus UI is a fully responsive SaaS admin dashboard template with:&lt;/p&gt;

&lt;p&gt;📊 Multiple chart types — Revenue line chart, Donut chart, Area chart (Recharts)&lt;br&gt;
🗂️ Collapsible sidebar with mobile support&lt;br&gt;
📄 5 pre-built pages — Dashboard, Analytics, Users, Orders, Settings&lt;br&gt;
🌗 Dark/Light mode toggle&lt;br&gt;
🧩 Reusable UI components — StatCard, Badge, Button, Table, ProgressBar, Input, Avatar&lt;br&gt;
🔐 Auth pages — Login &amp;amp; Register&lt;br&gt;
⚡ Framer Motion animations throughout&lt;br&gt;
📱 Fully responsive layout&lt;/p&gt;

&lt;p&gt;Tech Stack &amp;amp; Why&lt;/p&gt;

&lt;p&gt;Next.js 16 + TypeScript&lt;/p&gt;

&lt;p&gt;App Router is the future. I wanted to build something production-ready, not a toy project. TypeScript means every component is typed — no runtime surprises.&lt;/p&gt;

&lt;p&gt;SCSS Modules (not Tailwind)&lt;/p&gt;

&lt;p&gt;Hot take: Tailwind is great for prototyping, but for a template you sell, SCSS Modules are better. Why?&lt;/p&gt;

&lt;p&gt;Buyers can actually understand and customize the styles&lt;br&gt;
No purge config headaches&lt;br&gt;
Each component has its own .module.scss — clean, isolated, no global conflicts&lt;/p&gt;

&lt;p&gt;Recharts over Chart.js&lt;/p&gt;

&lt;p&gt;Recharts is React-native. No useEffect hacks to initialize a canvas. Just components. The ResponsiveContainer wrapper handles resizing automatically — this saved me hours of responsive debugging.&lt;/p&gt;

&lt;p&gt;Framer Motion&lt;/p&gt;

&lt;p&gt;Every dashboard feels the same without animation. I added subtle fadeUp and stagger animations on page load. The result? It feels alive. Buyers notice this immediately.&lt;/p&gt;

&lt;p&gt;The Hardest Part: Collapsible Sidebar&lt;/p&gt;

&lt;p&gt;The sidebar was the most complex piece. It needed to:&lt;/p&gt;

&lt;p&gt;Collapse to icon-only mode on desktop&lt;br&gt;
Open as an overlay on mobile&lt;br&gt;
Remember state across page navigation&lt;br&gt;
Not break the layout when toggling&lt;/p&gt;

&lt;p&gt;The solution was lifting state to DashboardLayout and passing isCollapsed + isMobileOpen as props. Simple in hindsight, but it took trial and error to get the CSS transitions right without layout shift.&lt;/p&gt;

&lt;p&gt;tsx// DashboardLayout.tsx&lt;br&gt;
const [isCollapsed, setIsCollapsed] = useState(false);&lt;br&gt;
const [isMobileOpen, setIsMobileOpen] = useState(false);&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
  &lt;/p&gt;
&lt;br&gt;
    
      isCollapsed={isCollapsed}&lt;br&gt;
      onToggle={() =&amp;gt; setIsCollapsed(!isCollapsed)}&lt;br&gt;
      isMobileOpen={isMobileOpen}&lt;br&gt;
    /&amp;gt;&lt;br&gt;
    &lt;br&gt;
      {children}&lt;br&gt;
    &lt;br&gt;
  &lt;br&gt;
);

&lt;p&gt;Dark Mode Without a Library&lt;/p&gt;

&lt;p&gt;I skipped next-themes and built a simple ThemeContext myself:&lt;/p&gt;

&lt;p&gt;tsx// theme-context.tsx&lt;br&gt;
const [theme, setTheme] = useState&amp;lt;'light' | 'dark'&amp;gt;('dark');&lt;/p&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
  document.documentElement.setAttribute('data-theme', theme);&lt;br&gt;
}, [theme]);&lt;/p&gt;

&lt;p&gt;Then in SCSS:&lt;/p&gt;

&lt;p&gt;scss:root[data-theme='dark'] {&lt;br&gt;
  --bg-primary: #0f1117;&lt;br&gt;
  --text-primary: #ffffff;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;:root[data-theme='light'] {&lt;br&gt;
  --bg-primary: #f8fafc;&lt;br&gt;
  --text-primary: #0f1117;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Zero dependencies. Full control. Works perfectly.&lt;/p&gt;

&lt;p&gt;What I'd Do Differently&lt;/p&gt;

&lt;p&gt;Add a package.json with all deps listed — buyers asked about this&lt;br&gt;
Include a README with setup instructions — obvious in hindsight&lt;br&gt;
Add more chart variations — I underestimated how much people want different chart styles&lt;br&gt;
Build a live demo first — screenshots sell less than a live URL&lt;/p&gt;

&lt;p&gt;I Also Built a Paid Template&lt;/p&gt;

&lt;p&gt;After Nexus UI, I built MediBook Pro — a Doctor Booking System template ($79).&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;p&gt;Full multi-step booking flow with Framer Motion transitions&lt;br&gt;
Doctor listing &amp;amp; profile pages&lt;br&gt;
Admin dashboard with appointment management&lt;br&gt;
Patient dashboard&lt;br&gt;
Auth pages (Login + Register)&lt;br&gt;
Animated counters, testimonials, feature sections&lt;/p&gt;

&lt;p&gt;Both templates use the same stack: Next.js 16 + TypeScript + SCSS Modules + Framer Motion.&lt;/p&gt;

&lt;p&gt;Get the Templates&lt;/p&gt;

&lt;p&gt;🆓 Nexus UI (Free) → irtaza78.gumroad.com/l/kuahry | Live Demo&lt;br&gt;
💊 MediBook Pro ($79) → irtaza78.gumroad.com/l/cuvuqwn | Live Demo&lt;/p&gt;

&lt;p&gt;If you use either template, drop a comment — I'd love to see what you build with it.&lt;/p&gt;

&lt;p&gt;Building more templates. Follow me here for updates&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
