In Part 3, we built a beautiful visual editor. But our workflows only run when we manually trigger them. In this final post, we'll make workflows truly autonomous using Hangfire for: Scheduled execution - Run workflows on a schedule API polling - Monitor…
In Part 2, we built a powerful workflow engine. But workflows defined in JSON aren't very user-friendly. In this post, we'll create a stunning visual workflow editor - think "dummy's Node-RED" - using HTMX, Alpine.js, TailwindCSS, and DaisyUI. By the end of…
In Part 1, we introduced the concept of building a custom workflow system. Now it's time to get our hands dirty! In this post, we'll build the core workflow engine - the heart of our system that executes node-based workflows. By the end of this post, you'll…
Workflow systems are everywhere in modern applications - from simple approval processes to complex multi-step automations. While there are excellent commercial solutions like Temporal, Airflow, and n8n, sometimes you need something tailored to your specific…
In my previous post I spoke about the difficulties of being a contractor and how sometimes you can be left high and dry when a customer doesn't pay. This can happen for a few reasons; They CANNOT pay - this is common in startups when they run out of money,…
As a freelance developer one of the skill-sets you need to learn quickly is how to work on existing codebases effectively. I've been lucky to have built a bunch of from--scratch systems; this is a JOY as an experienced developer however it's not always the…
Logging is OF COURSE a critical part of applications however I often see it misunderstood / misused in ASP.NET applications. This is part post and part manifesto on how to effectively log in ASP.NET Applications. This is not a complete guide to logging;…
You may noticed my frantic frequency of posts (I was at two a day for a while month!) has slowed down of late so I thought I'd give a quick update. NOTE: Translation seems to have broken along the way, when I get a chance I'll fix that. Why the Slowdown? I…
In this site I use Hightlight.js to render code snippets client side. I like this as it keeps my server side code clean and simple. However, I wanted to add a copy button to each code snippet so that users could easily copy the code to their clipboard. This is…
It seems like everyone has a version of this code, I first came across this approach from Filip W and recently my old colleague Phil Haack has his version. Just for completion this is how I do it. Why? The why is to make it easier to work with configuration.…