Connecting design, engineering and publishing across 40+ government websites.

How a design system became the connective tissue for DCJ's entire digital team.

Connecting design, engineering and publishing across 40+ government websites.

How a design system became the connective tissue for DCJ's entire digital team.

Company

Department of Communities and Justice

Role

Systems thinking
Tokenisation

Component design

Accessibility
Design governance

Platforms

Responsive web, Figma
and AEM

Company

Department of Communities and Justice

Role

Systems thinking
Tokenisation

Component design

Accessibility
Design governance

Platforms

Responsive web, Figma
aAEM

Problem

Problem

When people visit a government website they're not browsing. They're looking for something specific and often urgent. A court date. Domestic violence support. A justice of the peace. They come to DCJ's websites because the government is a trusted source of information.

DCJ manages over 40 of these websites, serving audiences ranging from 1,000 to 1.7 million people a year. Keeping that many websites consistent and up to date was an operational challenge, and the team had no shared foundation to build from.

My role was to help turn that vision into a working system.

Without our own design system in place, our designers and developers often spent time recreating designs from scratch or resolving inconsistencies in components, which led to slower delivery and increased effort for every project.

Without a system

Without a system

Three teams. Three disconnected experiences.

Designers

We manually specced every detail from colours to spacing, interactive states and error scenarios. Preparing for the handover took an entire day. No shared library, no consistency between designers.

Developers

Handovers were slow. Every design coded from scratch in AEM. Even commonly reused components like cards and hero banners were recreated each time.

Content authors

What was designed in Figma didn't always match what AEM could produce. The tools designers used and the tools authors published with weren't connected.

Designers

We manually specced every detail from colours to spacing, interactive states and error scenarios. Preparing for the handover took an entire day. No shared library, no consistency between designers.

Developers

Handovers were slow. Every design coded from scratch in AEM. Even commonly reused components like cards and hero banners were recreated each time.

Content authors

What was designed in Figma didn't always match what AEM could produce. The tools designers used and the tools authors published with weren't connected.

Discovery

Discovery

To kick off the project, I analysed the NSW Government's Design System to understand its limitations. I engaged design and development teams early to uncover pain points, design needs, and technical constraints. Then worked closely with designers, developers and senior stakeholders to gather requirements and align on the system’s goals and direction.

The NSW Government already had a design system but it wasn't built for us. It was designed for Drupal (a different CMS entirely) and maintained by a separate team we had no direct access to. Despite sharing the same branding rules, we operated like separate organisations. We could inherit their foundations (colour, typography, the overall look and feel) but we couldn't use their components as they were. We had to extend on them for DCJ's specific needs and technical environment.

Why the NSW system wasn't enough?
CMS differences

The NSW system was built for Drupal. We were on AEM. Components couldn't be copied across without significant rework.

Design flexibility

The NSW component library was too limited for DCJ's complex requirements.

Accessibility gaps

Not all components met WCAG AA standards or the best practices which we validated through user testing.

No access to libraries or repo

No access to NSW's libraries or code repo. Bugs went unresolved and components fell out of date.

CMS differences

The NSW system was built for Drupal. We were on AEM. Components couldn't be copied across without significant rework.

Accessibility gaps

Not all components met WCAG AA standards or the best practices which we validated through user testing.

Design flexibility

The NSW component library was too limited for DCJ's complex requirements.

No access to libraries or repo

No access to NSW's libraries or code repo. Bugs went unresolved and components fell out of date.

Prioritisation

Prioritisation

With 5 developers and 2 designers all splitting time across other projects, we couldn't afford to build everything at once. I teamed up with the design and engineering teams to review AEM components, design assets and code. Together, we identified inconsistencies and prioritised what to build first.

A component audit across existing sites scored each component on pre-set criteria including: how frequently it was used, how many sites would benefit and whether it had severe accessibility or technical issues.

Our strategy was to focus on high-value low-effort improvements, such as addressing accessibility issues and building the most frequently used first.

Hero banners, cards, navigational elements, footers and layout components came out on top. These became part of the first release.

DCJ design system

DCJ design system

Our design system is made up of foundations and components. Together, these building blocks enable us to create cohesive and accessible designs that meet the unique needs of DCJ’s websites.

Building the foundations

The design system only works if all three teams are speaking the same language. That was the problem we set out to solve with tokens.

Before a single component was designed, we agreed on a shared naming convention across Figma and the codebase. Colour, typography and spacing were defined first in Figma and mapped directly to CSS styles in the codebase. A colour token named "primary-blue" in Figma had an identical CSS variable in the dev library. Same for typography and spacing. Developers didn't need to ask what a colour was. They looked at the token name and know exactly which CSS style to apply.

What become a component?

Components combine foundational elements to address specific design needs. These are the interactive and reusable pieces that form the core of our UI.

For each component, we designed two things: the component as it appears on the website and the authoring interface content authors would use to configure and publish it in AEM. Getting that interface right meant authors could build pages that matched the design without needing a designer in the room.

Most design systems stop at the first problem. We had to solve both.

Accessibility considerations

Every component was tested with real users including people with disabilities and people who spoke english as a second language through a mix of agency and our internal accessibility team. Accessibility wasn't optional.

Rollout and testing

Rollout and testing

I created documentation and training resources to make sure the design system was actually adopted across the team.

  • Documentation detailing how to use the design system, including guidelines for page templates, typography, colour and accessibility.

  • Guidelines for content authors on website authoring and adding modules in AEM.

  • Training session for our design team to ensure everyone understood how to use the system.

Testing and feedback

We tested the design system on our team's next project, which gave us immediate and practical feedback on what was working and what wasn't. I stayed close to the build the whole way through. That meant regular check-ins with engineers, helping QA and testing edge cases during handovers and after we went live.

Content authors were also a key source of feedback. Their experience using the components in AEM directly shaped how we improved the authoring experience and documentation.

Outcomes

Outcomes

The design system in use

Examples of the pattern library applied on various DCJ websites.

By creating a common language between designers and engineers, the DCJ design system not only saved time and resources but also aligned with broader organisational goals of delivering consistent and accessible experiences across the department.

30 min handovers

down from a full day

Reduced service requests

as authors could now self serve

WCAG AA complaint

complying with NSW gov requirements

Consistency across 40+ websites

Meet brand guidelines

30 min handovers

down from a full day

WCAG AA complaint

complying with NSW gov requirements

Reduced service requests

as authors could now self serve

Consistency across 40+ websites

Meet brand guidelines

While it required a lot of work upfront, having a set of patterns means we now have a smooth process from design to build to publishing.

Developers could pull predefined tokens and components directly from the library without asking for more details. The back and forth that used to require meetings dropped significantly.

Service requests for help and custom component builds reduced as authors were able to self-serve more confidently using the authoring guides. What they published in AEM matched what was designed in Figma.

For the end-users of DCJ's websites, a consistent and accessible experience is now the default. Every site that migrates to the new system inherits WCAG AA compliance automatically. It lifted the barriers for everyday people navigating critical and complex government information.

What I’d do differently

What I’d do differently

Protect the system earlier

Every component we added had a cost: developer time, regression testing, ongoing maintenance. We pushed back on one-off requests but leadership had the final say. Some components were built for a single site and never reused. Next time I'd make the cost of exceptions visible before the decision is made.

Set up governance from day one

We introduced a change log and continuous feedback loops to track updates but we added them later than we should have. Clear governance, version control and documentation keep the system robust and scalable as our team and needs evolve.

Invest in adoption early

Documentation and training were part of the rollout but adoption across non-design teams took time. In particular, they were accustomed to their own methods and changing established habits was harder than building new ones.

I'd involve those teams earlier in the process so the system felt like something built with them rather than handed to them.

Let's connect

I'm looking for a design role at a startup or product-led company. If that sounds like a fit, I'd love to chat ☺️

Let's connect

I'm looking for a design role at a startup or product-led company. If that sounds like a fit, I'd love to chat ☺️

Let's connect

I'm looking for a design role at a startup or product-led company. If that sounds like a fit, I'd love to chat ☺️