Digital Allies · CMS Specification

The Digital Allies CMS

What the CMS must do, and the plan to build it.

One CMS, one interface. The canonical CMS is the side-navigation dashboard at cms/dashboard.html (served by cms/app.js + cms/style.css). Point every developer, collaborator, and doc here. Earlier prototypes live in cms/_archive/ for reference only — don't build against them.

What the CMS Must Include

Beyond managing records, the CMS has to run the website. It does three core jobs, plus a set of supporting modules. The dashboard shell and basic create/edit/delete already exist as a front-end prototype; the items marked To build are the functional scope to implement against a real backend.

1 · Website page editing Partially built

Full visual website editing — not a single text box. Editors build and change pages by stacking sections they pick from a library, the same way a real website builder works.

2 · Global design-system editing Partially built

Edit the brand tokens the entire website reads from one place, so a change updates every page and template at once — no code edits.

3 · Blog & article publishing Partially built

The Press Office / The Journal — write, schedule, and publish long-form content that appears on the site.

Supporting modules (already in the dashboard shell)

Build status, honestly. cms/dashboard.html + cms/app.js are a working front-end prototype with in-memory sample data — the shell, navigation, and basic CRUD are real and clickable. The page builder, the section library, the full design-token editor, and live publishing are specified above and get built against the backend in the phases that follow.

The three public surfaces it feeds

Technology Stack

Backend Node.js + Express / Firebase / Supabase
Database PostgreSQL / MongoDB / Firebase
Frontend (Dashboard) React + Tailwind CSS
API REST / GraphQL
Authentication JWT / OAuth 2.0
Hosting Vercel / Netlify / AWS / Heroku

Implementation Phases

Phase 1: Database Setup (Week 1)

Collections to Create

Collection Purpose Key Fields
Tools Individual service offerings name, slug, description, icon, features, pricing, problemStatement, solutionStatement, faqs, cta
Services Department/service categories name, slug, description, icon, featuredTools[], order
ContentCalendar 30-day social + email schedule day, week, category, topic, hook, caption, cta, promptRef, status, scheduledDate
Users CMS editors & admins email, password (hashed), role, permissions, createdAt
Settings Global configuration siteName, tagline, contactEmail, socialLinks, brandColors

Setup Instructions

Phase 2: Backend API (Week 2)

Core Endpoints to Build

Tools

GET /api/tools # List all tools GET /api/tools/:slug # Get single tool POST /api/tools # Create (admin) PUT /api/tools/:slug # Update (admin) DELETE /api/tools/:slug # Delete (admin)

Services

GET /api/services # List all services GET /api/services/:slug # Get single service + tools POST /api/services # Create (admin) PUT /api/services/:slug # Update (admin) DELETE /api/services/:slug # Delete (admin)

Content Calendar

GET /api/calendar # List all entries (30 days) GET /api/calendar?status=scheduled # Filter by status GET /api/calendar?category=... # Filter by category POST /api/calendar # Create entry (editor) PUT /api/calendar/:day # Update entry (editor) DELETE /api/calendar/:day # Delete entry (admin)

Authentication

POST /api/auth/login # Login (returns JWT) POST /api/auth/logout # Logout (invalidate token) POST /api/auth/refresh # Refresh token GET /api/auth/me # Get current user

Response Format Example

{ "success": true, "data": { "id": "tool-001", "name": "Brand Discovery", "slug": "brand-discovery", "description": "From brief to brand board in one session", "icon": "🎨", "features": ["Logo variations", "Color palette", ...], "pricing": "From $475", "status": "published", "createdAt": "2026-06-18T14:30:00Z", "updatedAt": "2026-06-18T14:30:00Z" }, "timestamp": "2026-06-18T14:35:00Z" }

Setup Instructions

Phase 3: Dashboard Frontend (Week 3)

Main Dashboard Views

Key Features

Setup Instructions

Phase 4: Design System Integration (Week 4)

How Templates Connect

The design system's CMS-ready templates (ServicesIndex.dc.html, ToolDetail.dc.html) consume data from Barcelona via API:

// In your Design Component (DC): <sc-for list="{{ tools }}" as="tool"> <!-- renders each tool from /api/tools --> </sc-for> // Props passed from API: {{ toolName }} # from /api/tools/:slug {{ features }} # from /api/tools/:slug {{ pricingDisplay }} # from /api/tools/:slug {{ faqs }} # from /api/tools/:slug

Integration Checklist

Example Integration Code

// In ToolDetail.dc.html logic class: async componentDidMount() { const slug = window.location.pathname.split('/').pop(); const res = await fetch(`/api/tools/${slug}`); const { data } = await res.json(); this.setState({ tool: data }); } renderVals() { const { tool } = this.state; return { toolName: tool?.name || '', features: tool?.features || [], pricingDisplay: tool?.pricing || '', faqs: tool?.faqs || [] }; }
Phase 5: Deployment & Launch (Week 5)

Deployment Checklist

Post-Launch

User Roles & Permissions

Role Permissions
Admin Create/edit/delete tools, services, users. View all. Change settings.
Editor Create/edit content (tools, calendar). Can't delete. Can't manage users.
Viewer Read-only access. See all content but can't make changes.

Data Flow Diagram

┌─────────────────┐ │ CMS Dashboard │ (React frontend) │ (Barcelona) │ └────────┬────────┘ │ POST/PUT/GET │ ┌────────▼────────┐ │ Backend API │ (Express.js) │ /api/tools │ │ /api/services │ │ /api/calendar │ └────────┬────────┘ │ Read/Write │ ┌────────▼────────┐ │ Database │ (PostgreSQL) │ - Tools │ │ - Services │ │ - Calendar │ │ - Users │ └────────────────┘ ▲ │ GET /api/tools/:slug │ ┌────────┴────────┐ │ Design System │ │ Templates │ (Shows live data) │ (Services, │ │ Tools, etc) │ └─────────────────┘

Timeline Summary

Week Phase Deliverables
1 Database Setup 5 collections, indexes, seed data
2 Backend API 15 endpoints, authentication, testing
3 Dashboard Frontend 6 main views, forms, validation
4 Design System Integration Live API connections, end-to-end testing
5 Deployment & Launch Live platform, user accounts, monitoring

Next Steps

  1. Decide on tech stack (database, backend framework, hosting)
  2. Start Phase 1: Database Setup (this week)
  3. Once API is ready, I can build the dashboard UI mockup (jump to Phase 3)
  4. Wire up design system templates to API (Phase 4)
  5. Deploy to production (Phase 5)

Questions?

Ready to proceed? Next, I can create: