dot CMS

Scaling dotCMS: Lessons from Building PartnerCMS as a UX-First Layer

Scaling dotCMS: Lessons from Building PartnerCMS as a UX-First Layer

Share this article on:

In the previous articles of this series, Solvisse explored how they replatformed thousands of partner websites onto dotCMS and how they engineered a multi‑site, multi‑tenant content architecture that could scale without losing control. But architecture alone doesn’t solve the real problem.

Once you’re operating at this level of scale, the CMS itself becomes a constraint if it’s not designed for the people who actually use it. That realization led us to build PartnerCMS.


The Real Bottleneck: CMS UX at Scale

dotCMS is a powerful and flexible platform. It excels as a centralized content repository and governance engine. However, its native UI is designed for trained marketing teams—not for thousands of non‑technical partners who need to make frequent, small updates without risking brand integrity.

 

Early on, Solvisse saw the friction:

  • Partners were overwhelmed by options they didn’t need.

  • Minor mistakes could easily lead to off‑brand content or broken layouts.

  • Training and support costs would only grow as the network expanded.

Rather than forcing partners to adapt to a tool that wasn’t built for them, Solvisse flipped the model.

They kept dotCMS exactly where it shines—behind the scenes—and introduced a purpose‑built experience in front of it. That experience became PartnerCMS.


PartnerCMS: A Purpose‑Built Control Layer

PartnerCMS is not a CMS replacement. It’s a UX‑driven control layer that sits between partners and dotCMS, using dotCMS purely as a content engine accessed through APIs.

 

The guiding principles were simple:

  • Make it impossible to go off‑brand.

  • Remove any need to understand CMS internals.

  • Optimize for speed, clarity, and safety.

Partners manage only what they’re allowed to manage. Everything else—templates, shared containers, global components, and governance—remains centrally controlled.


Frontend Architecture: Angular, Designed for Guardrails

The PartnerCMS frontend is a single‑page application built with Angular. We chose Angular for its strong modularity, predictable structure, and suitability for large, long‑lived enterprise applications.

Key frontend characteristics:

  • Feature‑based modular architecture, allowing us to evolve sections independently

  • RxJS‑driven state management, keeping UI state reactive and consistent

Responsive design using Bootstrap and SCSS for predictable theming.

 

Editing Without Risk

Instead of exposing raw HTML or generic CMS fields, PartnerCMS provides form‑driven editors tied directly to approved content models:

  • Articles

  • Banners

  • Tiles and cards

  • Contact and profile components

For richer experiences, we selectively introduced visual tooling:

  • TinyMCE for structured rich text (with strict formatting rules)

  • GrapesJS for visual page composition, limited to pre‑approved components only

At no point can a partner break layout, inject unsafe markup, or bypass brand rules—by design.


Accessibility and Usability

Accessibility wasn’t treated as an afterthought:

  • Semantic HTML and ARIA roles are used throughout

  • Keyboard navigation is supported across core flows

  • Components are designed to align with ADA expectations enforced at the template level


Backend Architecture: Reactive by Design

Behind PartnerCMS sits a reactive Java backend built with Spring WebFlux. The decision to go reactive was intentional.

At peak, the system needs to support:

  • Thousands of concurrent users

  • High‑frequency reads and writes

  • Continuous API interaction with dotCMS and internal services

WebFlux allows us to handle this load efficiently using non‑blocking I/O and a small thread footprint.


Layered Backend Design

The backend is organized into clearly defined layers:

  1. Controllers: REST endpoints grouped by feature (articles, banners, analytics, publishing, etc.)

  2. Published Services Layer: Core business logic - validation, guardrails, content limits, and workflows

  3. Feature Services & Clients:

    • Direct dotCMS REST clients

    • Optional proxy APIs when abstraction or transformation is required

  4. Domain & Mapping Layer: DTOs and assemblers mapping PartnerCMS models to dotCMS content types

This separation keeps the system testable, maintainable, and resilient to change.


Authentication, Authorization, and Safety

PartnerCMS integrates with the parent company’s identity platform using OAuth2. Authentication is fully stateless and token‑based.

Security highlights:

  • Role‑based access enforced at the endpoint level

  • Automatic token refresh via silent re‑authentication

  • Strict scoping so partners only ever see their own content

Even destructive actions are guarded. For example:

  • Content deletion is implemented as archiving, not hard deletes

  • True deletes are handled asynchronously via controlled background jobs

This ensures content safety while preserving operational flexibility.


Reliability and Operational Discipline

From day one, PartnerCMS was treated as a production‑critical system.

That meant:

  • 75%+ unit test coverage on core business and mapping layers

  • Centralized error handling using reactive patterns like onErrorResume

  • Environment‑specific configuration via externalized YAML files

  • Predictable deployment behavior across environments

The goal wasn’t just to ship features—it was to build something that could be trusted at scale.


What Partners Actually Experience

From the partner’s point of view, none of the underlying complexity exists.

They see:

  • A clean dashboard showing what can be edited

  • Simple forms instead of CMS screens

  • Live preview and safe publishing workflows

  • Built‑in visibility into analytics

They don’t see:

  • dotCMS internals

  • Content modeling decisions

  • Workflow mechanics

  • Rendering logic

And that’s exactly the point.


Closing the Loop

PartnerCMS completes the architectural story we started in the first two articles.

  • dotCMS provides the content backbone

  • The multi‑site architecture enforces scale and governance

  • PartnerCMS delivers usability without compromise

Together, they form a system where thousands of independent partners can confidently manage their digital presence—without ever putting the brand, performance, or platform at risk.

In the final article of this series, we’ll dive into how we keep this entire ecosystem synchronized daily using scheduled jobs, Redis caching, proxy APIs, and programmatic publishing at scale.


Visit Solvisse to read more Insights and Stories like this.

Recommended Reading
  • AI Content Governance for Content Teams: A Practical Framework
    9 Mar 26
    AI in CMS

    AI Content Governance for Content Teams: A Practical Framework

    Learn why AI content governance is essential for content teams. Discover how to protect brand consistency, reduce legal risk, and manage AI across dozens of sites with dotCMS’s built-in governance tools.

    Fatima

    Fatima Nasir Tareen

    Marketing Specialist

  • 7 Business Benefits of Content Governance Done Right
    9 Mar 26
    Content Management

    7 Business Benefits of Content Governance Done Right

    Discover how strong content governance drives faster time to market, reduces compliance risk, and ensures brand consistency for compliance-led organizations managing content across dozens of sites.

    Fatima

    Fatima Nasir Tareen

    Marketing Specialist

  • AI Search Made Easy
    8 Mar 26
    Technical Guides

    AI Search Made Easy

    dotAI Search is now built into the @dotcms/client SDK. One method call gives your headless app semantic AI-powered search in under 15 minutes.

    Marc

    Marc Boutillette

    Director Outbound Product

  • Java 25 is Here — Try It Today
    4 Mar 26
    Innovation

    Java 25 is Here — Try It Today

    Give your dotCMS a test drive on modern Java. Our new Java 25-based containers are live, easy to spin up with a single Docker command, and already showing faster startup, leaner memory use, and a stronger security footing. In this post, I’ll walk you through how to try the ‎`java-25` images locally, what to expect from the upgrade, how to rebuild your plugins in a few minutes, and why we’re asking you to kick the tires now, long before Java 11 support sunsets.

    Stephen

    Stephen Freudenthaler

    Director of Engineering

Explore dotCMS for your organization

image

dotCMS Named a Major Player

In the IDC MarketScape: Worldwide AI-Enabled Headless CMS 2025 Vendor Assessment

image

Explore an interactive tour

See how dotCMS empowers technical and content teams at compliance-led organizations.

image

Schedule a custom demo

Schedule a custom demo with one of our experts and discover the capabilities of dotCMS for your business.