Digital Allies

Connected CMS — Implementation Plan

Step-by-step guide to building and deploying the Barcelona CMS platform

Quick Overview

The Connected CMS (Barcelona) is a content management system that powers Digital Allies' three core platforms:

All content is managed through a single dashboard, with live updates to the design system templates.

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: