Workflow Engine
Define states, transitions, and role-gated approvals as a state machine on any collection. The engine enforces the process; editors see only the transitions they're allowed to take.
Nivaro puts a metadata layer, workflow engine, and full React admin on top of your existing MSSQL tables. Your schema stays yours. No migration required.
Most CMS tools force your data into their schema. Nivaro maps to yours — and adds the operational infrastructure your teams need to run complex approval and ownership workflows.
Define states, transitions, and role-gated approvals as a state machine on any collection. The engine enforces the process; editors see only the transitions they're allowed to take.
Route records through multi-dimensional ownership chains. Assign responsibility by field value, department, or workflow state. Priority and inheritance rules handle edge cases.
Fine-grained access control at the collection and field level. Roles, policies, and Microsoft Entra group sync without a separate identity store.
Auto-generated schema from your metadata registry. GraphQL subscriptions via WebSocket. REST for everything else. Rebuilt live with one request.
A typed client for reading, writing, and filtering records. Real-time subscriptions via Socket.io. Ships as @nivaro/sdk.
Every mutation logged with a full snapshot and field-level delta. Compare any two versions side-by-side. Immutable history that holds up to compliance requirements.
The TypeScript SDK wraps the Nivaro API with full type safety, filter helpers, and real-time subscriptions. One import replaces hundreds of ad-hoc fetch calls.
subscribe()
@nivaro/sdk
import { createNivaro, readItems, createItem } from '@nivaro/sdk'
const cms = createNivaro({
url: 'https://cms.example.com',
token: process.env.CMS_TOKEN
})
// Fetch published articles with filters
const articles = await cms.request(
readItems('articles', {
filter: {
status: { _eq: 'published' },
department: { _in: ['engineering', 'product'] }
},
sort: ['-published_at'],
limit: 20
})
)
// Subscribe to real-time updates
const unsub = cms.subscribe('articles', (event) => {
console.log(event.action, event.item)
})
Nivaro sits between your existing database and your applications. It adds a permission-aware API layer without altering your table structure.
Nivaro was built to replace a paid enterprise CMS. Every feature exists because a real team needed it, not because a roadmap demanded it.
Nivaro is open source and self-hosted. Bring your own MSSQL database and deploy with Docker in minutes.