The backend your next project already needs
Content, users, roles, permissions, workflow, audit history and multi-tenancy. Every project needs them. BarakoCMS is an open-source .NET 8 base that brings them along on day one, so your time goes to what the customer asked for.
dotnet add package BarakoCMSBrowse 13 modulesNot only for content sites
A blog, an events platform, a membership system and a treasury are different products with the same foundations underneath. Each one needs somewhere to define records, decide who may read which field, keep an audit trail, and serve it over an API.
BarakoCMS is that layer. Your frontend stays yours, in whatever framework you like, and so do your domain rules. What you inherit is the part that comes out the same every time.
The accounting module is the proof. A double-entry ledger with accounts, balanced journal entries, immutable postings and statements is not a content feature by any reading. It turned out to be a content type with rules attached, and it needed no changes to the core.
Especially if you build for other people
An agency starts most projects the same way. A database, an admin, logins, roles, rules about who may edit what, and an API for the frontend. It is weeks of work that no client ever asked for and none of them can tell apart.
Run one deployment and give each customer a tenant. Model what they asked for as content types, without a rebuild. Point any frontend at the delivery API, and hand the whole thing over as an export when the engagement ends.
- One deployment, many customersTenants share a database and stay scoped apart.
- A new client is an API callPOST /api/tenants, then model their content.
- Their site, their contentEditors work in the admin, so you are not the bottleneck.
- Nobody is locked inExport content and schema as JSON at any time.
Blueprints, form submissions, SEO fields and redirects are the pieces still missing from that story. They are tracked in the open.
What tends to sit behind a licence
Umbraco is the closest reference point in .NET and a good one. The CMS itself is MIT and free. What an agency runs into is that several pieces a client project needs are separate commercial products.
This compares self-hosted Umbraco, which is the like-for-like case. Umbraco Cloud is a paid platform that bundles Forms and Deploy into its plans, so those two rows do not apply if you host there.
| Capability | Umbraco | BarakoCMS |
|---|---|---|
| The CMS itself | Free, MIT | Free, MPL-2.0 |
| Editorial workflow | Umbraco Workflow, licensed | In the core |
| Environment and content transfer | Umbraco Deploy, licensed | Portability module |
| Analytics | Umbraco Engage, licensed | Analytics module |
| Forms | Umbraco Forms, licensed | Planned, and it will be free |
To be fair about it, those licences are how Umbraco funds a mature product with real support behind it, and their add-ons are further along than ours. BarakoCMS is younger and comes with no support contract. Licensing details come from Umbraco’s own documentation and can change, so check theirs before you decide.
Three lines to start
No scaffolding step and no generated project to maintain. It is a service registration in an ASP.NET app you already have.
builder.Services.AddBarakoCMS(builder.Configuration);
var app = builder.Build();
app.UseBarakoCMS();
app.Run();Needs PostgreSQL. Content, authentication, roles, workflow and the delivery API come with it.
What you inherit
Records defined at runtime
Add a field without a rebuild or a migration. Types are data, not classes you deploy.
Sensitivity per field
Hide a phone number without hiding the record. The public API emits an allowlist, so a renamed field cannot leak by accident.
Publishing is a decision
Nothing is served anonymously until a content type opts in. Private is the default, so forgetting to choose is safe.
Real history
Event sourced on Marten and PostgreSQL, so a record has a past rather than one row that keeps being overwritten.
Multi-tenant
One deployment, many customers, one database, scoped per tenant.
Modules, not a monolith
Accounting, semantic search, feature flags, file storage, social sign-in. Take what you need and the core stays small.
And a way to run it
A base is only useful if you can keep it running. BaryoVM is a companion CLI that deploys a stack to a VM you already own, over SSH, with no agent to install. It takes a backup before it updates, checks the site is healthy afterwards, and puts the previous images back if it is not.
Optional, and separate on purpose. BarakoCMS is an ordinary .NET app and runs anywhere .NET runs.
BaryoVM on GitHubBuilt in the open
Issues labelled good first issue carry enough context to start without asking, and not all of them are C#. Module icons, documentation and examples all count. A README is the package page on NuGet, so a clearer one is a real improvement.
Building a module is the other way in. Publish it under your own name with the barakocms-module tag and it appears in the marketplace on its own. There is no submission queue.