The Plugin Revolution: Architecture that Grows with You ⚡
December 5, 2025 • By Arnel Robles (Founder, BaryoDev)
Early on in the development of BarakoCMS, I hit a wall. And no, it wasn't a physical wall—though with the amount of coffee I'd had, I might have tried to walk through one. Every time I wanted to add a "simple" new feature—like sending a Slack notification when a content type was updated—I found myself digging deep into the core API code.
I was breaking my own sacred rule: The core should be untouchable. It was like trying to add a new room to a house by tearing down the foundation.
The "Hardcoded" Trap
As developers, we’ve all been there. You have a "Phase 1" requirement, so you write a quick if (status == "Published") { SendEmail(); } inside your handler. It works. You feel like a genius.
Then Phase 2 asks for an SMS. Then Phase 3 asks for a specialized webhook. Suddenly, your once-clean service is a spaghetti monster of external integrations, and you're the one holding the fork. It’s the "just this once" fallacy that turns beautiful architecture into a digital landfill.
I knew that if BarakoCMS was going to survive the "real world" (where requirements change faster than a celebrity's relationship status), it needed to be extensible without being fragile.
The Aha! Moment: DI-Driven Discovery
I spent a few restless nights refactoring the workflow engine. The goal was simple: Zero-Touch Extensibility.
I wanted a system where a developer could simply drop a new class into their project, and the CMS would "wake up," sniff around, and say, "Hey, I see you’ve added a Twilio SMS action. I’ll go ahead and add that to the dashboard for you. Also, your variable naming is slightly questionable, but I'll allow it."
We achieved this using a combination of:
- Unified Interface (
IWorkflowAction): A strict contract that every plugin must follow. It’s like a handshake—everyone knows what to expect. - Assembly Scanning: Using .NET's Dependency Injection to automatically discover every implementation of our interface at runtime. It’s like a search party that actually finds what it's looking for.
Why it Matters
Now, when we need to add a specialized business rule (like "Apply a 10% discount to all products in the 'Sale' category upon save"), we don't touch the BarakoCMS source. We write a Plugin.
This keeps the core lean, fast, and easy to update. It means you can upgrade your CMS version without the crushing dread that your custom logic is about to be overwritten into oblivion.
Craftsmanship Over Convenience
Designing this wasn't the "fastest" route. It would have been easier to keep things hardcoded and move on to the next task. But after 15 years in the industry, I’ve learned that "fast now" is usually just a down payment on "impossible later."
The Plugin Revolution isn't just a technical feature; it’s our commitment to longevity and sanity.
🌿 Life Lesson from the Baryo
In the baryo, we fix things to last. We don't just patch a roof with a leaf; we make sure the structure can breathe and grow. Life is the same—don't build your future on "quick patches." Build a foundation that allows you to add new "rooms" to your soul without collapsing the house.
Stay caffeinated,
Arnel Robles
Founder of BaryoDev