<?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: Geusan Edurais</title>
    <description>The latest articles on DEV Community by Geusan Edurais (@geusanedurais).</description>
    <link>https://dev.to/geusanedurais</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%2F3743011%2Fa34e6600-6435-4746-9d73-3ea6517eb794.png</url>
      <title>DEV Community: Geusan Edurais</title>
      <link>https://dev.to/geusanedurais</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/geusanedurais"/>
    <language>en</language>
    <item>
      <title>Stop Building Your Portfolio from Scratch: I Built a High-Performance Next.js Template So You Don't Have To</title>
      <dc:creator>Geusan Edurais</dc:creator>
      <pubDate>Sat, 31 Jan 2026 03:02:30 +0000</pubDate>
      <link>https://dev.to/geusanedurais/stop-building-your-portfolio-from-scratch-i-built-a-high-performance-nextjs-template-so-you-dont-28d0</link>
      <guid>https://dev.to/geusanedurais/stop-building-your-portfolio-from-scratch-i-built-a-high-performance-nextjs-template-so-you-dont-28d0</guid>
      <description>&lt;p&gt;As developers, we all suffer from the same problem: &lt;strong&gt;"The Portfolio Paradox."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We can build complex full-stack applications for clients, but when it comes to our own personal website? We procrastinate. We spend weeks obsessing over which font to use, or we get stuck in "tutorial hell" trying to animate a navbar.&lt;/p&gt;

&lt;p&gt;Last weekend, I decided to fix this.&lt;/p&gt;

&lt;p&gt;I wanted a portfolio that was:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fast (100% Lighthouse Score).&lt;/li&gt;
&lt;li&gt;Easy to maintain (No digging through HTML to change text).&lt;/li&gt;
&lt;li&gt;Clean (Recruiters love minimalism).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, I built &lt;strong&gt;GrowUI&lt;/strong&gt; — a production-ready template using the modern stack I use daily. Here is how I built it, and why you might want to use it too.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 The Tech Stack
&lt;/h2&gt;

&lt;p&gt;I chose the tools that offer the best balance between developer experience and performance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 16 (App Router):&lt;/strong&gt; For server-side rendering and SEO.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS:&lt;/strong&gt; For rapid styling without leaving the HTML.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript:&lt;/strong&gt; Because catching bugs at compile time is better than at runtime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lucide React:&lt;/strong&gt; For beautiful, lightweight icons.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💡 The "Secret Sauce": Config-Driven Content
&lt;/h2&gt;

&lt;p&gt;The most annoying part of maintaining a portfolio is updating it. I didn't want to edit 5 different components just to add a new project.&lt;/p&gt;

&lt;p&gt;So, I centralized everything into a single &lt;code&gt;site.ts&lt;/code&gt; config file.&lt;/p&gt;

&lt;p&gt;Here is a snippet of the code structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// src/config/site.ts

export const siteConfig = {
  name: "Geusan Dev",
  description: "Frontend Developer &amp;amp; UI Enthusiast.",
  skills: ["Next.js", "React", "Tailwind", "Figma"],
  projects: [
    {
      title: "Zenith Todo",
      tech: ["Tauri", "React", "SQLite"],
      link: "https://github.com/geusan/zenith",
    },
    // Adding a new project is just adding an object here!
  ],
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way, the UI components (Hero.tsx, Projects.tsx) are completely separated from the data. You can redesign the entire site without touching the content, or update the content without breaking the design.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚡ Performance First
&lt;/h2&gt;

&lt;p&gt;We all know performance matters. I optimized the images, fonts, and script loading to ensure it hits high green scores globally.&lt;/p&gt;

&lt;p&gt;Here is the real-world performance test from multiple regions:&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%2Fgd9a3qb260ci6h7aaktr.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%2Fgd9a3qb260ci6h7aaktr.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It consistently hits &lt;strong&gt;90-95+ scores&lt;/strong&gt; across the US, Europe, and Australia, ensuring your portfolio loads instantly for recruiters anywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Want to use this?
&lt;/h2&gt;

&lt;p&gt;I built this primarily for myself, but I realized many other developers are stuck in the same loop.&lt;/p&gt;

&lt;p&gt;If you want to save 20+ hours of design and coding time, I’ve packaged this into a premium template.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;✅ Complete Source Code&lt;/li&gt;
&lt;li&gt;✅ Dark Mode Ready&lt;/li&gt;
&lt;li&gt;✅ Responsive Grid Layout&lt;/li&gt;
&lt;li&gt;✅ SEO Meta Tags Setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can grab it for just $5 (the price of a coffee ☕️).&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://raisanstore.gumroad.com/l/modern-portfolio" rel="noopener noreferrer"&gt;Get the Template on Gumroad&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or check out the live demo here: &lt;a href="https://minimal-nextjs-portfolio.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks for reading! If you have any questions about the code structure, let me know in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>tailwindcss</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
