Skip to main content
clg-core · crumina-framework · crumina-agency

The foundation every module stands on.

Included with every install: a core infrastructure plugin that owns migrations, audit, storage, search, and secrets — plus a USWDS-inspired theme pair that gives staff one coherent admin and residents one accessible public site.

Try Crumina Civic All modules

View the dedicated Crumina Core plugin page

Highlights

Infrastructure that respects your data

A module manager, not an FTP session

Agencies install, update, and activate the curated clg-* plugins from one admin screen — via ZIP upload, no server access needed. A live status table shows exactly what's installed, active, and awaiting updates.

  • Install / update / activate / deactivate from the admin UI
  • System status card verifies core and both themes are loaded
  • WP-CLI toolkit for scripted installs, migrations, and audit pruning

Health checks — ready for uptime monitoring

/health/live200 OK
/health/ready — DB · migrations · storage · search · cache200 OK

Data Management — erase resident data

CRM contact + activity timeline1 contact, 38 events
Project subscriptions3 subscriptions
Feedback submissions2 submissions
Dry run complete Erase 44 records

Deletion is explicit — never a side effect

Every module registers its erasure callbacks with the core registry, and the Data Management screen shows a dry-run count preview before anything is removed. Uninstalling or deactivating a plugin never deletes customer data.

  • Platform-wide erasure registry with per-module callbacks
  • Dry-run count preview before every deletion
  • Central audit log records every sensitive mutation with actor, IP, and before/after state

Branding that can't break accessibility

Agencies brand their site in the native Customizer — primary, secondary, and accent colors — while the picker computes contrast ratios live and rejects combinations below 4.5:1. The public theme ships a high-contrast style variation on top.

  • Live contrast checking in the Customizer brand picker
  • Design tokens in theme.json: palette, type scale, spacing, layout widths
  • Documented template overrides — customize module output without forking plugins
Contrast 7.2:1. Navy on white passes — palette saved.
Contrast 2.9:1. Light gold on white fails 4.5:1 — this combination can't be saved.
clg-core

Core infrastructure services

Health-check API

/health/live and /health/ready validate DB, migrations, storage, search, and object cache.

WP-CLI toolkit

Install, migrate, list modules, and prune audit logs from the command line.

Central audit logging

One audit service for every module, with configurable retention pruning.

Storage driver contract

A working local driver out of the box, with a registry for swapping in S3 or Google Drive.

Search provider contract

WordPress-native search by default, with a registry for the Meilisearch provider.

Package installer

Install and update curated modules from the admin UI — no server access required.

Data-erasure registry

The backend for platform-wide "delete my data" workflows with dry-run previews.

Encrypted secrets

Versioned, libsodium-based storage for API keys, OAuth tokens, and service credentials.

Agency profile service

Name, jurisdiction, timezone, and contact info — one place of record for every module.

Comment kill-switch

One click disables WordPress blog comments platform-wide for agencies that don't want them.

Shared document processing

Text extraction for PDF/Word/Excel/PowerPoint/CSV and Office-to-PDF rendering, reused by Documents and Meetings.

REST permission helpers

Reusable admin-only, capability-gated, and logged-in-only checks for every module's endpoints.

crumina-framework + crumina-agency

One design system, two themes

crumina-framework — the admin & design system

  • Central "Crumina Civic" admin menu: Agency Settings, Modules, Data Management, and every module's settings page
  • React Agency Settings screen: name, short name, jurisdiction, timezone, contact info
  • System status card confirming core and both themes are loaded correctly
  • Customizer branding with built-in contrast checking
  • Design tokens in theme.json plus CSS variables for focus rings and brand colors
  • USWDS-inspired components: forms, buttons, alerts, cards, summary boxes
  • Five reusable block patterns: alert, three-card grid, summary box, agency hero, footer identifier
  • Accessible by default: visible focus rings and semantic landmark roles

crumina-agency — the public presentation layer

  • Civic color palette and layout widths tuned for public agency sites
  • Built-in high-contrast style variation for residents who need it
  • Documented template-override system — customize module output without forking plugin code
  • Reserved, presentation-only CSS hooks for every module (.clg-projects__, .clg-documents__, .clg-meetings__, .clg-feedback__)

Style variations

Default civic High contrast Agency brand

Residents can always fall back to high contrast — branding never removes it.

Try it

See the foundation in action

Open the demo admin: install a module, run a dry-run erasure, and try to save an inaccessible brand color — you can't.