<?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: Mathew</title>
    <description>The latest articles on DEV Community by Mathew (@gkg0).</description>
    <link>https://dev.to/gkg0</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%2F3777898%2F3a25e217-638b-474c-b71e-bceff0ed82d9.png</url>
      <title>DEV Community: Mathew</title>
      <link>https://dev.to/gkg0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gkg0"/>
    <language>en</language>
    <item>
      <title>Blazor Blueprint, nine months on: what I've learned from my first open source project</title>
      <dc:creator>Mathew</dc:creator>
      <pubDate>Tue, 22 Sep 2026 11:10:31 +0000</pubDate>
      <link>https://dev.to/gkg0/blazor-blueprint-nine-months-on-what-ive-learned-from-my-first-open-source-project-2nmn</link>
      <guid>https://dev.to/gkg0/blazor-blueprint-nine-months-on-what-ive-learned-from-my-first-open-source-project-2nmn</guid>
      <description>&lt;p&gt;Back in February, I wrote about why I built Blazor Blueprint: I wanted the modern, clean look of shadcn/ui in Blazor, and nothing out there gave me that. You can read that post &lt;a href="https://dev.to/gkg0/bringing-shadcnui-to-blazor-why-i-built-blazor-blueprint-21pl"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That post covered the what. This one covers what has happened since, and a bit of the backstory I didn't share at the time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I nearly gave up on Blazor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In December 2025, my company decided to build its own commercial product, and I had to choose the technology. I wanted the whole stack in one technology, so I took a serious look at Blazor.&lt;/p&gt;

&lt;p&gt;I liked it straight away. Building with C# end to end felt right. Making it look good didn't. I tried the existing Blazor UI libraries and just didn't like their style, and I seriously considered going back to a JavaScript frontend.&lt;/p&gt;

&lt;p&gt;Instead, I started building my own components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building it alongside a real product&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Looking back, the best decision was building the components while building a real product. Every component went straight into real use, so I got instant feedback on what worked and what didn't. After a while, I wondered whether other Blazor developers felt the same way I did, so I released it as open source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The good moments&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first GitHub star. Well, the second one. The first was from me.&lt;/p&gt;

&lt;p&gt;Then came the Reddit post. I got a lot of really positive comments and feedback, and within a week the project had passed 160 stars. For a first open source project, that meant a lot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The part I wasn't ready for&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Soon after the release, someone forked the repo and started building on my work in parallel.&lt;/p&gt;

&lt;p&gt;I wouldn't call it stress or anxiety, but it was an uncomfortable feeling, and it stayed with me for a while. It was my first time releasing open source code, and watching someone take what I'd made and head off in their own direction felt strange.&lt;/p&gt;

&lt;p&gt;Nine months after I started building it, and having watched Blazor Blueprint grow into what it is today, I see that moment as part of the learning curve that comes with being in the open source community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it's used now&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Blazor Blueprint now runs in my company's new commercial product, in several client projects and in internal tools. Here are a couple of examples I can share:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://beaacon.com/" rel="noopener noreferrer"&gt;Beaacon&lt;/a&gt;, an anonymous analytics tool for monitoring websites without needing Google Analytics or PostHog.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://merlinassure.com" rel="noopener noreferrer"&gt;Merlin&lt;/a&gt;, a tool for managing ISO 27001 requirements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both are built in Blazor. Having a large library of ready-made, good-looking components to reach into makes building fast and, honestly, fun. That's all I wanted when I started.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it is today&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The project has gone from 160 stars in its first week to over 600. Version 4 added a lot of new components and brought it much closer to the major Blazor libraries in coverage. Version 4.1 adds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A fully functional Scheduler&lt;/li&gt;
&lt;li&gt;A Pivot Data Grid&lt;/li&gt;
&lt;li&gt;Rose, Sankey and Map charts&lt;/li&gt;
&lt;li&gt;A Signature Pad&lt;/li&gt;
&lt;li&gt;Barcode and QR Code components&lt;/li&gt;
&lt;li&gt;Speed and stability improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Spreadsheet component is coming soon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you've been where I was&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you've looked at Blazor and thought, "I like this, but I can't make it look the way I want," that's exactly why this exists. Give it a try, and let me know what works and what doesn't. Feedback from real projects has shaped it from day one.&lt;/p&gt;

&lt;p&gt;Docs: &lt;a href="//blazorblueprintui.com"&gt;blazorblueprintui.com&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="//github.com/blazorblueprintui/ui"&gt;github.com/blazorblueprintui/ui&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blazor</category>
      <category>dotnet</category>
      <category>opensource</category>
      <category>webcomponents</category>
    </item>
    <item>
      <title>Bringing shadcn/ui to Blazor — Why I Built Blazor Blueprint</title>
      <dc:creator>Mathew</dc:creator>
      <pubDate>Tue, 17 Feb 2026 15:57:19 +0000</pubDate>
      <link>https://dev.to/gkg0/bringing-shadcnui-to-blazor-why-i-built-blazor-blueprint-21pl</link>
      <guid>https://dev.to/gkg0/bringing-shadcnui-to-blazor-why-i-built-blazor-blueprint-21pl</guid>
      <description>&lt;p&gt;I've been writing C# for over 20 years, mostly backend implementations, APIs, services, infrastructure etc… I built frontend too, but it always meant switching to a completely different world. C# on the backend, JavaScript on the frontend. Different patterns, different tooling, different mental models. Every project meant context switching between two ecosystems.&lt;/p&gt;

&lt;p&gt;Then I properly dug into Blazor, and something clicked.&lt;/p&gt;

&lt;p&gt;Being able to build full stack with C# end-to-end was genuinely enjoyable in a way I didn't expect. No more jumping between languages. No separate JS ecosystem to maintain. Just C# all the way through.&lt;/p&gt;

&lt;p&gt;But one thing was missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Gap
&lt;/h2&gt;

&lt;p&gt;If you've worked with React, you've seen libraries like shadcn/ui and Radix UI. They just look and work great out of the box. They are modern, clean, composable. The kind of UI that makes you want to build things because you know that it’ll actually look good once built!&lt;/p&gt;

&lt;p&gt;Blazor didn't have that.&lt;/p&gt;

&lt;p&gt;Most Blazor UI libraries either look like enterprise software from 2015 or lock you into a rigid design system with their own opinions about everything. I wanted something that looked modern, felt flexible, and didn't fight me when I needed to customize it.&lt;/p&gt;

&lt;p&gt;So I built my own.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Blazor Blueprint?
&lt;/h2&gt;

&lt;p&gt;Blazor Blueprint is a component library inspired by shadcn/ui. It brings that same design philosophy to Blazor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;80+ styled components&lt;/strong&gt; — buttons, dialogs, data tables, forms, charts, and more&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;15 headless primitives&lt;/strong&gt; — unstyled building blocks for when you need full control&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1,640+ Lucide icons&lt;/strong&gt; — same icon set shadcn uses. I’ve also included heroicons and feather icons too&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Theme compatibility&lt;/strong&gt; — drop in any theme from shadcn/ui or tweakcn.com and it’ll just work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key idea is a two-tier architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two-Tier Architecture
&lt;/h2&gt;

&lt;p&gt;Most component libraries give you one thing: styled components. Take them or leave them.&lt;/p&gt;

&lt;p&gt;I wanted something more flexible. So Blazor Blueprint has two layers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primitives&lt;/strong&gt; - headless components that handle behavior, accessibility, and keyboard navigation with zero styling. They're the bones. Use them when you need complete control over how things look.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Components&lt;/strong&gt; - pre-styled components built on top of the primitives. They follow shadcn/ui design patterns and work out of the box. Use them when you want to move fast.&lt;/p&gt;

&lt;p&gt;You can use the styled components for 90% of your UI and drop down to primitives when you need something custom. Best of both worlds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Patterns That Worked
&lt;/h2&gt;

&lt;p&gt;A few implementation patterns that made the architecture work:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cascading values for context&lt;/strong&gt; — Parent components pass state down to children without prop drilling. An accordion item knows its parent's state without explicit wiring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;@bind- for controlled/uncontrolled state&lt;/strong&gt; — Components work out of the box (uncontrolled) but can be fully controlled when you need it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AsChild pattern&lt;/strong&gt; — Lets you delegate rendering to a child element. Useful for things like making a button render as a link while keeping all the button behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Theme Compatibility
&lt;/h2&gt;

&lt;p&gt;One thing I really wanted was compatibility with existing shadcn themes. The React ecosystem has years of beautiful themes built for shadcn/ui. I thought it would be a waste not to tap into that.&lt;/p&gt;

&lt;p&gt;Blazor Blueprint uses the same CSS variable structure as shadcn. You can grab a theme from shadcn/ui or tweakcn.com, drop it into your project, and it just works. No conversion needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Week In
&lt;/h2&gt;

&lt;p&gt;I posted about Blazor Blueprint on Reddit last week and the response genuinely surprised me. 160+ GitHub stars, mass of feedback, people actually using it in real projects.&lt;/p&gt;

&lt;p&gt;The .NET community has been incredibly supportive. It's given me a lot of motivation to keep building. I just shipped v3 with performance improvements, new components, and fixes based on community feedback.&lt;/p&gt;

&lt;p&gt;This is a passion project I've been pouring my evenings and weekends into. Seeing people find it useful makes all that time worth it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;Blazor Blueprint is free, open-source, and available now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet new &lt;span class="nb"&gt;install &lt;/span&gt;BlazorBlueprint.Templates
dotnet new blazorblueprint &lt;span class="nt"&gt;-n&lt;/span&gt; MyApp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or add to an existing project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet add package BlazorBlueprint.Components
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;📚 &lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://blazorblueprintui.com" rel="noopener noreferrer"&gt;blazorblueprintui.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/blazorblueprintui/ui" rel="noopener noreferrer"&gt;github.com/blazorblueprintui/ui&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building Blazor apps and want modern UI without the enterprise aesthetic, give it a try. Feedback and contributions welcome.&lt;/p&gt;

</description>
      <category>blazor</category>
      <category>dotnet</category>
      <category>opensource</category>
      <category>csharp</category>
    </item>
  </channel>
</rss>
