<?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: ouraihub</title>
    <description>The latest articles on DEV Community by ouraihub (@ouraihub).</description>
    <link>https://dev.to/ouraihub</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%2F3952156%2F4ca023cb-c170-4485-85ed-318653ab74c4.jpeg</url>
      <title>DEV Community: ouraihub</title>
      <link>https://dev.to/ouraihub</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ouraihub"/>
    <language>en</language>
    <item>
      <title>Finish-Up-A-Thon: How I Turned a Half-Finished Hugo Theme into a Standalone Shiki + Tailwind v4 Project</title>
      <dc:creator>ouraihub</dc:creator>
      <pubDate>Mon, 01 Jun 2026 09:29:29 +0000</pubDate>
      <link>https://dev.to/ouraihub/finish-up-a-thon-how-i-turned-a-half-finished-hugo-theme-into-a-standalone-shiki-tailwind-v4-2lcp</link>
      <guid>https://dev.to/ouraihub/finish-up-a-thon-how-i-turned-a-half-finished-hugo-theme-into-a-standalone-shiki-tailwind-v4-2lcp</guid>
      <description>&lt;h1&gt;
  
  
  From Shared Modules to Fully Inlined: Finishing a Hugo Theme with Shiki, Tailwind v4, and CI Fixes
&lt;/h1&gt;

&lt;p&gt;Every developer has at least one project that looks “almost done” for far too long.&lt;/p&gt;

&lt;p&gt;For me, that project was &lt;code&gt;hugo-theme-paper&lt;/code&gt; - a minimalist, responsive Hugo theme inspired by &lt;strong&gt;Astro Paper&lt;/strong&gt;. It was built with a stack I still like a lot: &lt;strong&gt;Hugo v0.120+ Extended&lt;/strong&gt;, &lt;strong&gt;Tailwind CSS v4&lt;/strong&gt;, &lt;strong&gt;TypeScript v5.8+&lt;/strong&gt;, &lt;strong&gt;esbuild&lt;/strong&gt;, and &lt;strong&gt;Vitest&lt;/strong&gt;. The intent was always clear: keep it elegant, keep it lightweight, and keep the reading experience clean.&lt;/p&gt;

&lt;p&gt;But over time, the project accumulated the usual kind of finish-line debt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;too many external dependencies for something that should feel self-contained&lt;/li&gt;
&lt;li&gt;code blocks that looked wrong in light mode&lt;/li&gt;
&lt;li&gt;render hooks and workflow hacks that were only there to compensate for earlier decisions&lt;/li&gt;
&lt;li&gt;a two-repository release flow that worked, but not smoothly enough&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why I used the &lt;strong&gt;GitHub Finish-Up-A-Thon Challenge&lt;/strong&gt; as the deadline to stop circling and finally finish the thing properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Finished
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Removing &lt;code&gt;@ouraihub/hugo-shared&lt;/code&gt; and inlining what the theme needs
&lt;/h3&gt;

&lt;p&gt;The biggest refactor was architectural: I removed the external &lt;code&gt;@ouraihub/hugo-shared&lt;/code&gt; dependency and inlined the needed modules directly into the theme.&lt;/p&gt;

&lt;p&gt;This was a deliberate tradeoff in favor of simplicity.&lt;/p&gt;

&lt;p&gt;Why it matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the theme is now truly standalone&lt;/li&gt;
&lt;li&gt;users do not need to chase extra shared packages&lt;/li&gt;
&lt;li&gt;cloning, testing, and installing are simpler&lt;/li&gt;
&lt;li&gt;the theme is less exposed to version drift from another repo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I applied the same direction to the remaining shared pieces that previously lived outside the theme. The result is a theme that is much easier to consume as a Hugo Module without knowing anything about my internal workspace layout.&lt;/p&gt;

&lt;p&gt;That is not the kind of refactor that gets applause in a screenshot. It is the kind that saves people time when they actually try to use the project.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Fixing light-mode code blocks with Shiki
&lt;/h3&gt;

&lt;p&gt;The second big fix was visual.&lt;/p&gt;

&lt;p&gt;The theme already had code highlighting, but the light-mode experience was not where it should be. Colors felt off, backgrounds did not blend naturally with the prose, and some old render-hook logic was still hanging around from testing days.&lt;/p&gt;

&lt;p&gt;I tightened the syntax-highlighting path around &lt;strong&gt;Shiki&lt;/strong&gt; and cleaned up the leftover rendering layer.&lt;/p&gt;

&lt;p&gt;What changed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;light-mode token colors were corrected&lt;/li&gt;
&lt;li&gt;code block backgrounds were aligned with the theme&lt;/li&gt;
&lt;li&gt;redundant test render hooks were removed&lt;/li&gt;
&lt;li&gt;prose and code now feel more cohesive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was one of those refactors where the goal was not just “working output.” The real goal was polish.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Greasing the wheels of CI/CD
&lt;/h3&gt;

&lt;p&gt;Because this project uses a &lt;strong&gt;dual-repository workflow&lt;/strong&gt;, the release pipeline matters almost as much as the theme code itself.&lt;/p&gt;

&lt;p&gt;The development repo handles source work and testing. The distribution repo, &lt;code&gt;hugo-theme-paper-dist&lt;/code&gt;, carries the precompiled output that users can import through Hugo Modules.&lt;/p&gt;

&lt;p&gt;That setup is fine in theory, but only if the automation behaves.&lt;/p&gt;

&lt;p&gt;So I also fixed the GitHub Actions workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;corrected the clone and sync path for shared assets&lt;/li&gt;
&lt;li&gt;removed brittle assumptions in the release process&lt;/li&gt;
&lt;li&gt;aligned workflow steps with the current toolchain&lt;/li&gt;
&lt;li&gt;reduced the chance of distribution-time failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That turned the pipeline from “works most of the time” into something I can actually trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Finishing It Felt Good
&lt;/h2&gt;

&lt;p&gt;The best part of this challenge was not adding more surface area. It was removing confusion.&lt;/p&gt;

&lt;p&gt;After the refactor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the architecture is simpler&lt;/li&gt;
&lt;li&gt;the theme is more self-contained&lt;/li&gt;
&lt;li&gt;the code blocks look right in light mode&lt;/li&gt;
&lt;li&gt;the release workflow is less fragile&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the tests still hold up: &lt;strong&gt;176 test cases pass&lt;/strong&gt;, with &lt;strong&gt;85%+ coverage&lt;/strong&gt;. That is the kind of number that tells me this project is no longer just presentable, but actually healthy.&lt;/p&gt;

&lt;p&gt;That is what finishing a project should feel like. Not just “I shipped something,” but “I finally made it coherent.”&lt;/p&gt;

&lt;p&gt;If you like clean Hugo themes, readable syntax highlighting, and a pragmatic Tailwind v4 + Shiki setup, give &lt;code&gt;hugo-theme-paper&lt;/code&gt; a star and try it out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repository
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/ouraihub-hugo-themes/hugo-theme-paper" rel="noopener noreferrer"&gt;https://github.com/ouraihub-hugo-themes/hugo-theme-paper&lt;/a&gt;&lt;/p&gt;

</description>
      <category>finishupathon</category>
      <category>ai</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
