<?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: muganda dizo</title>
    <description>The latest articles on DEV Community by muganda dizo (@dizo11).</description>
    <link>https://dev.to/dizo11</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%2F1334499%2F085edee8-4cfd-4567-a2eb-cd7d8b376b91.jpg</url>
      <title>DEV Community: muganda dizo</title>
      <link>https://dev.to/dizo11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dizo11"/>
    <language>en</language>
    <item>
      <title>how I make my templates easy to reskin (probably overthought this)</title>
      <dc:creator>muganda dizo</dc:creator>
      <pubDate>Sun, 06 Sep 2026 10:52:15 +0000</pubDate>
      <link>https://dev.to/dizo11/how-i-make-my-templates-easy-to-reskin-probably-overthought-this-31no</link>
      <guid>https://dev.to/dizo11/how-i-make-my-templates-easy-to-reskin-probably-overthought-this-31no</guid>
      <description>&lt;p&gt;how I make my templates easy to reskin (probably overthought this)&lt;/p&gt;

&lt;p&gt;so I do client work - dashboards, landing pages, that kind of thing. and at some point I noticed I basically build the same 5-6 things over and over. stat card, some kind of table, a hero section, a pricing grid. just... different colors every time.&lt;/p&gt;

&lt;p&gt;eventually turned two of these into actual products - Ledger (dashboard template) and Fielder (landing page kit). wanted them to be easy to reskin without me having to rebuild half of it every time someone wants a different look. here's what that actually meant in practice.&lt;/p&gt;

&lt;p&gt;colors live in one file, period&lt;/p&gt;

&lt;p&gt;no hardcoded hex codes anywhere in a component. all of it goes through tailwind config:&lt;/p&gt;

&lt;p&gt;js&lt;br&gt;
colors: {&lt;br&gt;
  primary: { DEFAULT: '#2B6E63', light: '#3E8F80', dark: '#1E4E46' },&lt;br&gt;
  accent: '#C98A3B',&lt;br&gt;
},&lt;br&gt;
fontFamily: {&lt;br&gt;
  display: ['Fraunces', 'serif'],&lt;br&gt;
  body: ['Inter', 'sans-serif'],&lt;br&gt;
},&lt;/p&gt;

&lt;p&gt;components just say bg-primary or whatever. change the six lines above, whole product looks different. nothing else to touch.&lt;/p&gt;

&lt;p&gt;sounds obvious written out like that but I've def seen (and written) code before where someone just... types a hex code directly into a className because it was faster in the moment. don't do that if you want this to work later.&lt;/p&gt;

&lt;p&gt;don't name things after the client's industry&lt;/p&gt;

&lt;p&gt;easy trap - you're building a rental dashboard so you name the component TenantTable. don't. it's just DataTable. StatCard. StatusBadge. the rental-specific stuff lives in a mock data file, the component has zero idea what it's displaying.&lt;/p&gt;

&lt;p&gt;this one actually matters more than the color thing honestly, because renaming components later is way more annoying than renaming a hex code.&lt;/p&gt;

&lt;p&gt;the grid thing&lt;/p&gt;

&lt;p&gt;both templates avoid the classic 3-identical-cards-in-a-row layout. one card's just bigger:&lt;/p&gt;

&lt;p&gt;jsx&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{/* main thing */}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;{/* smaller stuff */}&lt;/p&gt;

&lt;p&gt;not a huge deal but it stops the thing from looking like it was assembled from some component library's defaults, which is a look I was trying pretty hard to avoid.&lt;/p&gt;

&lt;p&gt;the auth thing I almost skipped&lt;/p&gt;

&lt;p&gt;first version of Ledger's login page looked fine and did literally nothing. you click sign in, nothing happens, you're still on the login page. that's a pretty common shortcut for templates but someone pointed out to me that it's also the first thing a buyer will actually click, so if it's broken that's a bad first impression.&lt;/p&gt;

&lt;p&gt;fixed it with a plain react context, no auth library, nothing fancy - it actually redirects you if you try to hit a page without being logged in. took maybe an hour. probably should've done it from the start instead of after someone called it out.&lt;/p&gt;

&lt;p&gt;anyway that's roughly it. the two templates don't share code but they share this same setup - config for styling, generic component names, breaking the grid pattern once, and not leaving fake screens lying around. if you want to see it: Ledger / Fielder. happy to answer questions in the comments if anyone has them.&lt;/p&gt;

</description>
      <category>css</category>
      <category>frontend</category>
      <category>tailwindcss</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
