&lt;?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Daniel's Blog</title><link>https://daniholzer.github.io/my-blog/posts/</link><description>Recent content in Posts on Daniel's Blog</description><generator>Hugo -- gohugo.io</generator><language>en-gb</language><managingEditor>daniel@example.com (Daniel Holzer)</managingEditor><webMaster>daniel@example.com (Daniel Holzer)</webMaster><lastBuildDate>Tue, 24 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://daniholzer.github.io/my-blog/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Designing My Portfolio with Penpot</title><link>https://daniholzer.github.io/my-blog/posts/profilepage-fourthpost/</link><pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate><author>daniel@example.com (Daniel Holzer)</author><guid>https://daniholzer.github.io/my-blog/posts/profilepage-fourthpost/</guid><description>&lt;h1 id="designing-my-portfolio-with-penpot"&gt;Designing My Portfolio with Penpot&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;Part 4 of my &amp;ldquo;First Complete Project&amp;rdquo; series.
&lt;a href="https://daniholzer.github.io/my-blog/posts/profilepage-thirdpost/"&gt;← Part 3: Development Environment&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;With the development pipeline ready, I moved to &lt;strong&gt;design&lt;/strong&gt;.
This was my first time creating a complete UI design system from scratch.&lt;/p&gt;
&lt;h2 id="design-tool-decision-figma-vs-penpot"&gt;Design Tool Decision: Figma vs Penpot&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Pros&lt;/th&gt;
&lt;th&gt;Cons&lt;/th&gt;
&lt;th&gt;Why Not?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Figma&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Familiar, collaborative&lt;/td&gt;
&lt;td&gt;Generic layout tools&lt;/td&gt;
&lt;td&gt;Wanted CSS-like layouts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Penpot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;CSS Grid/Flexbox native&lt;/strong&gt;, new and I want to test it out&lt;/td&gt;
&lt;td&gt;Learning curve&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Winner&lt;/strong&gt; - Perfect for developers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Why Penpot won:&lt;/strong&gt; Layout system mimics &lt;strong&gt;CSS Grid, Flexbox, justify-items,
gap&lt;/strong&gt; — direct translation to Tailwind code.&lt;/p&gt;</description></item><item><title>Implementing Content &amp; Visuals</title><link>https://daniholzer.github.io/my-blog/posts/profilepage-fifthpost/</link><pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate><author>daniel@example.com (Daniel Holzer)</author><guid>https://daniholzer.github.io/my-blog/posts/profilepage-fifthpost/</guid><description>&lt;h1 id="implementing-content--visuals"&gt;Implementing Content &amp;amp; Visuals&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;Part 5 of my &amp;ldquo;First Complete Project&amp;rdquo; series. &lt;a href="https://daniholzer.github.io/my-blog/posts/profilepage-fourthpost/"&gt;← Part 4: Designing with Penpot&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Designs ready, now time to &lt;strong&gt;build&lt;/strong&gt;. I followed a structured approach:
layout first, components second, content last.&lt;/p&gt;
&lt;h2 id="implementation-workflow"&gt;Implementation Workflow&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Navigation Pages (Home, Skills, Documents, Projects, Contact)&lt;/li&gt;
&lt;li&gt;Page Layout (shared across routes)
Header + Main + Footer structure&lt;/li&gt;
&lt;li&gt;Create Reusable Components (container, heading, button, link, card)&lt;/li&gt;
&lt;li&gt;Layout Components (header with logo + menu button)&lt;/li&gt;
&lt;li&gt;Page Assembly -&amp;gt; Penpot layout matching&lt;/li&gt;
&lt;li&gt;Real Content -&amp;gt; Replace lorem ipsum + placeholders&lt;/li&gt;
&lt;li&gt;Final Colors -&amp;gt; Design system palette&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="step-by-step-process"&gt;Step-by-Step Process&lt;/h2&gt;
&lt;h3 id="1-navigation-pages"&gt;1. Navigation Pages&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-tsx" data-lang="tsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;createRoot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;root&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;StrictMode&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;BrowserRouter&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;RootLayout&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Route&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Home&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Route&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/contact&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Contact&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Route&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/projects&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Projects&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Route&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/skills&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Skills&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Route&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/documents&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Documents&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;Route&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/sitenotice&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;SiteNotice&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;RootLayout&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;BrowserRouter&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;StrictMode&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-page-layout"&gt;2. Page Layout&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-tsx" data-lang="tsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&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="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;children&lt;/span&gt;: &lt;span class="kt"&gt;React.ReactNode&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;HeaderLayout&lt;/span&gt;&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;pt-[5.6rem] max-w-[50rem] my-0 mx-auto&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;children&lt;/span&gt; &lt;span class="p"&gt;}&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;FooterLayout&lt;/span&gt;&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-reusable-components"&gt;3. Reusable Components&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-tsx" data-lang="tsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Tag Styles
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;export&lt;/span&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tagStyles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;tv&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;base&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;py-[0.5rem] px-[1rem] text-[1.4rem] rounded-full
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; text-bgPrimary&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Tag Properties
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;export&lt;/span&gt; &lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;TagProps&lt;/span&gt; &lt;span class="kr"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;VariantProps&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;typeof&lt;/span&gt; &lt;span class="na"&gt;tagStyles&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;id?&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;className?&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;children&lt;/span&gt;: &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Tag - Component
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;Tag&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;className&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="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;TagProps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;generatedId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useId&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="nx"&gt;generatedId&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;tagStyles&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt; &lt;span class="p"&gt;})}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="4-development-with-bright-colors"&gt;4. Development with Bright Colors&lt;/h3&gt;
&lt;p&gt;Used random bright colors to distinguish components.
This made layout issues immediately visible.&lt;/p&gt;</description></item><item><title>My First Complete Project: From Idea to Live Deployment</title><link>https://daniholzer.github.io/my-blog/posts/profilepage-firstpost/</link><pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate><author>daniel@example.com (Daniel Holzer)</author><guid>https://daniholzer.github.io/my-blog/posts/profilepage-firstpost/</guid><description>&lt;p&gt;This post is part of my learning journey as a self‑taught developer and
documents my first complete project, from idea to deployment.&lt;/p&gt;
&lt;h1 id="my-first-complete-project--from-idea-to-deployment"&gt;My First Complete Project – From Idea to Deployment&lt;/h1&gt;
&lt;p&gt;Over the past year, I’ve gone from building small UI features to completing my
very first full project — designed, developed, and deployed completely on my own.
This post marks a major milestone in my learning journey, and I want to
share the process behind it.&lt;/p&gt;</description></item><item><title>Planning My First Project with Jira and Agile Mindset</title><link>https://daniholzer.github.io/my-blog/posts/profilepage-secondpost/</link><pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate><author>daniel@example.com (Daniel Holzer)</author><guid>https://daniholzer.github.io/my-blog/posts/profilepage-secondpost/</guid><description>&lt;h1 id="planning-my-first-project-with-jira-and-agile-mindset"&gt;Planning My First Project with Jira and Agile Mindset&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;Part 2 of my &amp;ldquo;First Complete Project&amp;rdquo; series. &lt;a href="https://daniholzer.github.io/my-blog/posts/profilepage-firstpost/"&gt;← Part 1: Project Overview&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Before writing a single line of code, I knew proper planning would make or
break this project. As a solo developer, I wanted to practice professional
workflows — so I set up &lt;strong&gt;Jira&lt;/strong&gt; with &lt;strong&gt;Scrum Model&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="why-jira-for-a-solo-project"&gt;Why Jira for a Solo Project?&lt;/h2&gt;
&lt;p&gt;Most developers jump straight into coding, but I wanted to learn
&lt;strong&gt;project management&lt;/strong&gt; alongside development. Jira let me:&lt;/p&gt;</description></item><item><title>Project Complete: Retrospective &amp; Lessons Learned</title><link>https://daniholzer.github.io/my-blog/posts/profilepage-sixthpost/</link><pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate><author>daniel@example.com (Daniel Holzer)</author><guid>https://daniholzer.github.io/my-blog/posts/profilepage-sixthpost/</guid><description>&lt;h1 id="project-complete-my-first-full-project-retrospective"&gt;Project Complete: My First Full Project Retrospective&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;Part 6 (Finale) of my &amp;ldquo;First Complete Project&amp;rdquo; series.
&lt;a href="https://daniholzer.github.io/my-blog/posts/profilepage-fifthpost/"&gt;← Part 5: Content Implementation&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Live site:&lt;/strong&gt; &lt;a href="https://dholzer.it"&gt;dholzer.it&lt;/a&gt;
&lt;br/&gt;
&lt;strong&gt;Source code:&lt;/strong&gt; &lt;a href="https://github.com/DaniHolzer/personal-profilepage"&gt;github.com/DaniHolzer/personal-profilepage&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;From empty Jira board to deployed portfolio — &lt;strong&gt;mission accomplished&lt;/strong&gt;.
Here&amp;rsquo;s what I learned from my first end-to-end project.&lt;/p&gt;
&lt;h2 id="what-went-right"&gt;What Went Right&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Jira structure&lt;/strong&gt; — Solo scrum kept me organized&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Netlify automation&lt;/strong&gt; — Git push = instant deploy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Penpot → Tailwind&lt;/strong&gt; — CSS layout translation was seamless&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bright color debugging&lt;/strong&gt; — Made component boundaries obvious&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Layout-first approach&lt;/strong&gt; — Shared header/footer across all pages&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-id-improve-next-time"&gt;What I&amp;rsquo;d Improve Next Time&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Testing&lt;/strong&gt; — Unit tests for reusable components&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance&lt;/strong&gt; — Lighthouse score optimization&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mobile testing&lt;/strong&gt; — More device testing beyond Chrome DevTools&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tech-stack-that-delivered"&gt;Tech Stack That Delivered&lt;/h2&gt;
&lt;p&gt;Frontend: React + TypeScript + Tailwind CSS + Vite
Design: Penpot (CSS Grid/Flexbox native)
Hosting: Netlify (free, automatic)
VCS: GitHub (develop → main workflow)
Planning: Jira (solo scrum)&lt;/p&gt;</description></item><item><title>Setting Up My Development Environment &amp; Deployment Pipeline</title><link>https://daniholzer.github.io/my-blog/posts/profilepage-thirdpost/</link><pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate><author>daniel@example.com (Daniel Holzer)</author><guid>https://daniholzer.github.io/my-blog/posts/profilepage-thirdpost/</guid><description>&lt;h1 id="setting-up-my-development-environment--deployment-pipeline"&gt;Setting Up My Development Environment &amp;amp; Deployment Pipeline&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;Part 3 of my &amp;ldquo;First Complete Project&amp;rdquo; series. &lt;a href="https://daniholzer.github.io/my-blog/posts/profilepage-secondpost/"&gt;← Part 2: Planning with Jira&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;With planning complete, my next epic was creating a professional
&lt;strong&gt;development environment&lt;/strong&gt; and &lt;strong&gt;deployment pipeline&lt;/strong&gt;.
This involved choosing domain registrars, hosting providers,
and setting up GitHub → Netlify automation.&lt;/p&gt;
&lt;h2 id="domain-registration-decision"&gt;Domain Registration Decision&lt;/h2&gt;
&lt;p&gt;I compared multiple providers:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;First Year&lt;/th&gt;
&lt;th&gt;Renewal&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dynadot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;€6.99&lt;/td&gt;
&lt;td&gt;€4.99&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Winner&lt;/strong&gt; - Cheapest long-term&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alfahosting&lt;/td&gt;
&lt;td&gt;€27&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Expensive domain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hetzner&lt;/td&gt;
&lt;td&gt;€24&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;WebHosting Bundle&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Choice: Dynadot&lt;/strong&gt; for the best price/performance.&lt;/p&gt;</description></item><item><title>My first Post</title><link>https://daniholzer.github.io/my-blog/posts/firstpost/</link><pubDate>Tue, 07 Oct 2025 00:00:00 +0000</pubDate><author>daniel@example.com (Daniel Holzer)</author><guid>https://daniholzer.github.io/my-blog/posts/firstpost/</guid><description>&lt;p&gt;&amp;hellip; My first blog post!&lt;/p&gt;</description></item></channel></rss>