Request a Demo
Shared Functional

CMS Engine

Block-based, headless content management engine — bilingual page authoring, media library, emergency banners, and approval workflows powering every public-facing municipal website and portal.

≤500ms

Page Load

≤2s

Editor Load

Unlimited

Versioning

99.95%

Availability

Purpose-Built for Canadian Municipalities

Ontario Compliant
MFIPPA Ready
AODA Accessible
Bilingual Support
Canadian Hosted
SOC 2 Aligned

Purpose & Scope

What this module owns

Clear ownership boundaries prevent duplication and ensure every capability has exactly one authoritative home.

Owns

9

Delegated to

4

Accessibility compliance checking

accessibility-i18n

User authentication & authorization

security-iam

Content approval routing logic

workflow-automation

AI-powered translation suggestions

ai-ml-engine

These capabilities are handled by dedicated modules and consumed via stable API contracts — keeping boundaries clean and ownership unambiguous.

Core Capabilities

What it does

3 capability groups comprising 6 discrete capabilities — each with API surface, business rules, and data ownership.

Drag-and-drop blocks: text, image, video, accordion, tabs, cards, callout, table, map embed, form embed, event listing, service directory; responsive preview.

Block Types

Text, image, video, accordion, tabs, cards, callout, table, map embed, form embed, event listing, and service directory blocks.

Drag-and-Drop

Visual drag-and-drop editor for block arrangement; reorder, nest, and configure blocks without code.

Responsive Preview

Preview pages at desktop, tablet, and mobile breakpoints before publishing to ensure responsive layout.

Headless Architecture

Content stored as structured JSON block tree; decoupled from presentation layer for multi-channel delivery.

Side-by-side EN/FR editing; translation status tracking; incomplete translation flagging; automated translation suggestions (via ai-ml-engine).

Side-by-Side Editor

EN/FR content authored in parallel with side-by-side editing view; changes in one language flagged for translation in the other.

Translation Status

Per-page and per-block translation completeness tracking; incomplete translations flagged before publication.

AI Translation Suggestions

Automated translation suggestions via ai-ml-engine; staff review and approve before publishing.

Every module owns a single bounded context, exposes stable APIs, and can be composed into any Civic product — that's the architecture that scales.

Krutik Parikh

Creator of Civic

Data Model

Entity Architecture

3 entities with 2 relationships — the authoritative schema for this bounded context.

Entities

Select an entity to explore its fields and relationships

API Surface

Integration Endpoints

10 RESTful endpoints across 4 resource groups — plus 4 domain events for async integration.

|
GET

/api/v1/cms/pages

List pages (filter: status, parent, author)

GET

/api/v1/cms/pages/{slug}

Get page by slug (published)

POST

/api/v1/cms/pages

Create page

PATCH

/api/v1/cms/pages/{id}

Update page content

POST

/api/v1/cms/pages/{id}/publish

Publish page

Technical Specifications

Performance, Compliance & Configuration

Page Load (published)

Target≤ 500ms (CDN cached)

Editor Load

Target≤ 2 seconds

Media Upload

Target≤ 5 seconds per file

Content Versioning

TargetUnlimited history

WCAG 2.1 AA

TargetAll published content

Availability

Target99.95%

FAQ

Frequently Asked Questions

Ready to Integrate

Build on CMS Engine

Request an architecture brief, integration guide, or live demo environment for your team.