<?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: Patience Philip</title>
    <description>The latest articles on DEV Community by Patience Philip (@thequeenofeverything).</description>
    <link>https://dev.to/thequeenofeverything</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%2F3852481%2F03f2860c-1f3a-4b13-88b7-449ce98e8375.jpeg</url>
      <title>DEV Community: Patience Philip</title>
      <link>https://dev.to/thequeenofeverything</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thequeenofeverything"/>
    <language>en</language>
    <item>
      <title>I built a free dark portfolio template you can set up in 5 minutes [no React, no npm, no headache]</title>
      <dc:creator>Patience Philip</dc:creator>
      <pubDate>Tue, 31 Mar 2026 01:02:35 +0000</pubDate>
      <link>https://dev.to/thequeenofeverything/i-built-a-free-dark-portfolio-template-you-can-set-up-in-5-minutes-no-react-no-npm-no-headache-hok</link>
      <guid>https://dev.to/thequeenofeverything/i-built-a-free-dark-portfolio-template-you-can-set-up-in-5-minutes-no-react-no-npm-no-headache-hok</guid>
      <description>&lt;p&gt;Most free portfolio templates have the same problem.&lt;/p&gt;

&lt;p&gt;You download them excited, open the folder, and then spend the next 45 minutes ctrl+F-ing through 400 lines of HTML trying to find where your name is supposed to go. You change one thing and break three others. You give up and use a website builder instead.&lt;/p&gt;

&lt;p&gt;I've been there. So I built something different.&lt;/p&gt;




&lt;h2&gt;
  
  
  The idea: edit one file, never touch the HTML
&lt;/h2&gt;

&lt;p&gt;The template has two files: &lt;code&gt;index.html&lt;/code&gt; and &lt;code&gt;config.js&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You open &lt;code&gt;config.js&lt;/code&gt;. You fill in your details. You're done.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PORTFOLIO&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your Name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;designer &amp;amp; developer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;location&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Lagos, Nigeria&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;available&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello@yourname.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

  &lt;span class="na"&gt;bio&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;First paragraph about yourself.&lt;/span&gt;&lt;span class="dl"&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;Second paragraph — optional.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;

  &lt;span class="na"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;   &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Your Project&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="na"&gt;desc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;What it does and why it matters.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;tags&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;React&lt;/span&gt;&lt;span class="dl"&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;Design&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://yourproject.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;featured&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;

  &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;accent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#c8a96e&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// change this one line to rebrand the whole site&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;That's it. The HTML reads from the config and builds the entire page — hero, about, work, experience, contact, footer, copyright year, everything. You never open &lt;code&gt;index.html&lt;/code&gt; at all.&lt;/p&gt;

&lt;p&gt;Set &lt;code&gt;available: false&lt;/code&gt; and the "Available for work" badge disappears. Set a social link to &lt;code&gt;null&lt;/code&gt; and it vanishes with no empty space. Change &lt;code&gt;theme.accent&lt;/code&gt; to your brand color and the whole site rebrands in one line.&lt;/p&gt;




&lt;h2&gt;
  
  
  The design
&lt;/h2&gt;

&lt;p&gt;I wanted something that actually looked good; not "free template" good, but genuinely polished.&lt;/p&gt;

&lt;p&gt;Dark background. Editorial typography: Cormorant Garamond for the serif moments, Syne for the bold display text, DM Mono for the technical details. A noise texture overlay for depth. A custom animated cursor with a lagging ring on desktop. Scroll-reveal animations on every section. A sticky nav that picks up a backdrop blur as you scroll.&lt;/p&gt;

&lt;p&gt;No gradients slapped on a white background. No Inter font. No purple-and-white color scheme that every AI-generated design seems to default to. Just a considered, intentional aesthetic from top to bottom.&lt;/p&gt;




&lt;h2&gt;
  
  
  No frameworks. No npm. No build step.
&lt;/h2&gt;

&lt;p&gt;Open &lt;code&gt;index.html&lt;/code&gt; in your browser. It works.&lt;/p&gt;

&lt;p&gt;There's something genuinely refreshing about that. No node_modules folder eating your disk space. No &lt;code&gt;npm run dev&lt;/code&gt;. No Webpack config to fight with. No dependencies that break six months later when something upstream changes.&lt;/p&gt;

&lt;p&gt;Just HTML, CSS, and vanilla JavaScript doing exactly what they were designed to do.&lt;/p&gt;

&lt;p&gt;This was a deliberate choice, not a limitation. The people who need a portfolio template are often students, junior developers, and designers who just want something that works. Making them install a JavaScript runtime to view a webpage is the wrong call.&lt;/p&gt;




&lt;h2&gt;
  
  
  It's open source... and I want your templates
&lt;/h2&gt;

&lt;p&gt;This is the first template in what I'm building into a collection. SaaS landing page and documentation site are coming next.&lt;/p&gt;

&lt;p&gt;But more importantly, contributions are open.&lt;/p&gt;

&lt;p&gt;If you want to add a template, the rules are simple: pure HTML/CSS/JS, fully responsive, and config-driven (users edit a &lt;code&gt;config.js&lt;/code&gt;, never the HTML). That last rule is the one I care about most. The whole point of this repo is that it's actually usable by real people, not just developers who are comfortable digging through source code.&lt;/p&gt;

&lt;p&gt;Fork it, build something, open a PR. The more templates in here, the more useful it becomes for everyone.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/patiencephilip/responsive-templates" rel="noopener noreferrer"&gt;github.com/patiencephilip/responsive-templates&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://patiencephilip.github.io/responsive-templates/portfolio/" rel="noopener noreferrer"&gt;patiencephilip.github.io/responsive-templates/portfolio/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Star it if it's useful. And if you build something with it, I'd genuinely love to see it.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
