← All work

Live Products

Rytass CMS

Design Systems · UI

RoleDesign Systems Lead
TimelineFeb – Jul 2024
CompanyRytass
StatusActive in production
Rytass CMS system overview

Overview

A shared CMS and design system, standardised

Standardized Rytass's client-by-client CMS into a shared, role-based publishing product, supported by a rebuilt Mezzanine design system.

Rytass maintained multiple client sites with a CMS that was intentionally configurable. Over time, each project drifted into a different structure and editing flow. The result was repeated rebuild work and an admin experience that was hard to learn and maintain.

This project defined a shared CMS model and rebuilt the Mezzanine design system to make the experience consistent across projects while keeping necessary flexibility.

Rytass CMS interface overview

Problem

No shared foundation, high rework cost

The CMS needed to support different site structures and content types without requiring a redesign for every new client.

Key issues

  • No shared information architecture across projects
  • Inconsistent editor/admin workflows between client instances
  • High rework cost when starting new websites

Impact

  • Slower delivery due to repeated CMS setup and UX decisions
  • Higher training and support overhead for admins and editors
Before and after comparison
Legacy editorial flow vs. redesigned shared CMS

My Role

Design lead for standardisation

I led product and UX design for the standardisation work and partnered closely with a PM and engineering leadership.

Mezzanine design system

Mezzanine is developed internally, open source, and used across the CMS.

Mezzanine work

  • Rebuilt design system foundations and key UI patterns to support a shared CMS
  • Defined components and interaction patterns for content creation and publishing (navigation, forms, tables, states, empty/error patterns)
  • Documented variants and usage guidelines so teams could ship consistently across client configurations

Storybook: storybook.mezzanine-ui.org

Button component system
Button: all states, all variants
Mezzanine: light/dark mode via semantic token swap
Component examples
Component library overview

Quadrant (open-source embedded article editor)

Quadrant is the CMS's embedded article editing system for composing and managing content blocks within an article.
Demo: demo.quadrats.io

My focus: designed and integrated a table block and table editing behavior (Quadrant previously did not support tables). Defined interaction and edge cases for table creation and editing (insert rows/columns, resize, copy/paste, responsiveness).

Table component variant
Quadrant table component
Quadrant table interaction flow
Interaction flow for table editing: create, edit, merge, publish

Key Challenge

Editorial state and versioning

Publishing was not a single action. With review and approval, “published” becomes a state reached through different roles and transitions. We needed clear definitions for:

Needed clarity on

  • What each state means
  • What action triggers the transition
  • Which version of the article the state refers to

Aligned editing behavior with the article state and version model to reduce “which version am I editing?” ambiguity.

Editor view
Version control view
Admin approve view
Admin disapprove view

Approach

Role model and article state model

Role model

Two roles

  • Editor: drafts and submits content for review
  • Admin: reviews, approves/rejects, and controls publication

Editors cannot publish directly. This boundary reduced ambiguity and made workflows easier to define.

Role and version control information architecture
role and version control information architecture, communicated by PM

Article state model

Five states

  • Draft (草稿): In progress. Not submitted for review.
  • Reviewing (待審核): Submitted by the editor. Awaiting admin review.
  • Publishable (可發佈): Approved by admin. Ready to publish.
  • Scheduled (已預約): Approved and scheduled for a future publish time.
  • Published (已發佈): Live on the site.

To support real-world use, I mapped non-happy paths and maintenance actions, including rejection and return-to-draft behavior, editing content that is already published, rescheduling scheduled content, and version ownership across transitions.

CMS user flow
Editorial flow mapped by role: Editor vs. Admin

Outcome

Shipped and active

Result

  • Successfully handed off the end-to-end publishing flow to the software engineering team, with clear ownership and implementation-ready specs.
  • Reduced time required to spin up each new client CMS instance by standardizing the core model and repeatable setup steps.
  • Synced product logic across design, engineering, and PM so workflows, state transitions, and schema definitions stayed consistent.
  • Enabled more fluent PM–engineering collaboration on defining the content model and schema (content types, permissions, and lifecycle states), speeding up decisions and reducing rework.

Reflection

What I'd do differently

Takeaways

  • Standardization required clear decisions on what must stay fixed versus what can be configured per client
  • Defining the state model before UI design reduced rework and made interaction decisions easier to validate

NDA

Portions may be under NDA. If you need deeper context, contact me.


RoleDesign Systems Lead
CompanyRytass
TimelineFeb – Jul 2024

Available from July 2026.

Looking for a product design internship. Small teams, complex problems.

JENNIFER LEE