Skip to content
03 — Platform Design · Design Systems · Developer EfficiencyFlagship case study

Turning a week of SaaS UI development into about an hour

Designing reusable admin interaction frameworks so recurring Settings, Create and Report experiences could be configured from shared patterns instead of redesigned and rebuilt from scratch.

Role
Sole Product Designer — UX framework layer
Status
Shipped
Scope
Product UX · Design systems · Framework patterns · Migration · Engineering collaboration · Design QA
  1. 01Requirement
  2. 02Shared framework
  3. 03Configuration
  4. 04Reusable interface
The path a recurring admin interface takes once the framework exists. Examples use generic content.

Some product visuals have been simplified or reconstructed to protect confidential platform and customer information. Examples use generic content.

Chapter 01 — The repeated problem

The admin product kept solving the same problems differently.

As a SaaS admin product grows feature by feature, every team can invent its own settings, create form, report, list and confirmation. What duplicates is not only the development — it is the interaction decision.

Team A

Its own settings layout, its own save behaviour.

Team B

Its own create form, its own validation timing.

Team C

Its own report, its own empty state.

Team D

Its own confirmation, its own destructive treatment.

Four teams, four answers to the same four questions.

The technical platform already knew how to generalise UI.

A metadata-driven low-code architecture with reusable page generators — reports, settings, create, charts — and a shared component library already existed, built for rapid UI development and a lower learning curve. I did not build that foundation.

Existing platform foundation — context, not my work
Metadata-driven architecturePage generatorsShared component library

So the open question was never “can we generate UI?”

It was “what should the generated experience decide?”

Reuse the decision, not just the component.

Chapter 02 — From components to frameworks

A reusable button does not create a coherent product.

If every feature still decides navigation, hierarchy, saving, destructive actions and state handling for itself, the component library has not settled anything. The opportunity was to standardise at the pattern level — so the unit of reuse became the workflow.

01PrimitiveButton · Input · Dialog
02ComponentForm · Table · Sidebar
03PatternSettings · Create · Report
04FrameworkShared navigation · shared hierarchy · shared states · shared actions · shared responsive behaviour
The unit of reuse moves up the stack. The top level is where the decisions live.

Three reusable experience families.

Settings

An existing object needs ongoing management.

Navigation
Grouping
Save behaviour
Destructive-action isolation
Create

An admin is creating or configuring a new entity.

Field hierarchy
Validation
Entitlement state
Submit behaviour
Report

An admin is reading, filtering or acting on data.

Filters
Data representation
Actions
Empty and error states
Chapter 03 — Settings as the concrete example

Settings had grown feature by feature.

Course, school and profile settings followed different patterns, a card index added a hop before anyone reached a setting, and destructive actions carried the same weight as safe ones.

Before
Card index
Select a category
Enter settings
Scroll
Find save
After
Persistent navigation
Grouped fields
Contextual descriptions
Sticky save
Isolated danger zone
The card index was a hop, not a home. Removing it is most of the change.

Rules for choosing a container

Full page

Large, frequent or complex settings — ten or more sections, or destructive actions live here.

Course and school settings
Sheet

Medium complexity, where the surrounding context should stay visible behind it.

Profile-type settings
Modal

One focused decision, roughly three to five fields.

Rename, invite, single toggle group
Alert dialog

Destructive confirmation only. Nothing else earns this container.

Move to trash
Drawn at relative weight, because the rule is about weight.

What replaced the card index

Card index at twelve items
One hop before anyone reaches a setting
Persistent navigation
General
Branding
Pricing
Access
Communication
Certificates
Integrations
Danger zone
Overview · spatial memory · direct access · room to grow

Irreversible actions get their own ground.

Safe settingInline, saved with the rest of the page.
Sensitive settingGrouped, but still on the page.
Irreversible actionIsolated danger zone, own treatment, own confirmation.
Decision 01

Not every setting deserves a page.

Consistency does not mean using the same container everywhere. It means having predictable rules for choosing one.

Decision 02

A card grid doesn’t get clearer when you add more cards.

Past roughly a dozen items the index became visual noise. Persistent navigation gives overview, spatial memory, direct access — and room for the sections the product hasn’t built yet.

Decision 03

“Delete” should never look like “Branding.”

Visual consistency does not mean equal emphasis. Irreversible actions were pulled out of the grid into an isolated danger zone with its own treatment and its own confirmation.

Decision 04

A framework should remove repeated friction too.

Save and cancel sat at the bottom of long pages, so editing ended in a scroll. The pattern now keeps the action bar in reach, and a field carries the context that used to live in a help doc.

Chapter 04 — Migration and scale

A framework is a set of decisions teams shouldn’t have to remake.

Five questions every admin surface used to answer for itself, answered once at the framework level.

Decided once, by the framework
NavigationWhere am I?
HierarchyWhat matters first?
ActionsWhere do save and cancel live?
RiskHow are destructive actions separated?
ResponsiveHow does the pattern adapt?

Configuration instead of bespoke implementation.

The same requirement, before and after — a reconstructed example rather than the real page.

Before — bespoke
Design the screen
Decide navigation and hierarchy
Build the layout
Handle states by hand
Review against other features
~7 days
After — configured
Pick the pattern
Declare the fields and groups
Design QA the generated result
~1 hour
An actual operational outcome for supported framework work, not a projection across all admin development.

Business rules needed one language, not one per feature.

Business rules entered the product through one shared state language instead of each feature inventing its own warning pattern.

AvailableThe action proceeds normally.
Limit approachingStated before the admin commits.
Limit reachedBlocked, with the reason and the upgrade path.
No accessVisible but unavailable — never silently missing.

Standardising the future also meant migrating the past.

Preserve
Capability
User intent
Business rules
Standardise
Navigation
Hierarchy
Interaction
Visual language
Sequence
Feature by feature
Not platform-wide in one release

The framework only mattered if teams could actually use it.

A design system only works if the intended hierarchy survives generated implementation.

  1. 01Design ruleDestructive actions live in a danger zone
  2. 02Framework contractWhat the pattern must support for that to hold
  3. 03ImplementationReusable framework behaviour, built with engineering
  4. 04MigrationAn existing feature mapped onto the pattern
  5. 05Design QADoes the generated result keep the intended hierarchy?
Chapter 05 — The trade

Reuse buys speed by giving up some freedom.

A framework constrains design, and a framework-level mistake reaches many surfaces at once. Both are true, and neither makes constraint a bad trade.

What you give up
FreedomA feature cannot invent its own layout
Blast radiusOne framework mistake reaches many surfaces
ExceptionsThey need a route, or teams route around you
What you get
SpeedConfiguration replaces bespoke build
PredictabilityAdmins relearn less with each new surface
MaintenanceOne fix propagates instead of eleven
Actual operational outcome — shipped

Recurring admin interfaces stopped being designed one at a time.

Recurring admin interfaces moved away from repeated one-off design and build work toward reusable product patterns that could be configured and migrated consistently. Predictable patterns reduce relearning for admins — which is what the low-code model was aimed at all along.

~7 days
~1 hour
Recurring admin interface work, for supported framework cases. An actual operational outcome, not a projection across all admin development.

What this changed in how I think about design systems.

01

The highest-value reusable unit is often a behaviour, not a component.

02

Consistency needs rules for exceptions, not universal sameness.

03

A design system succeeds when it changes how fast the product can be built and maintained.

And migration is where design-system decisions meet reality.

Next / retrospective — not shipped

What I’d measure next

  • How often teams request an exception to the framework
  • Accessibility consistency across generated pages
  • Design and engineering time, measured separately
  • Migration defects compared with bespoke implementations

This project taught me that a framework is a set of decisions teams shouldn’t have to remake.

Have a complicated product problem?

Platform architecture, AI features, real-time systems, or a product that has grown more rules than anyone can hold in their head.

Or write it here

This opens your own email client with the message filled in. Nothing is sent or stored by this page.

Pragya Kumari — Product DesignerLow-code admin framework · 2026