Ayodele Joseph

Product Designer + Design Engineer

Work

Playground

About

Resume

Work

Playground

About

Resume

Got something you want built properly?

Designed + Coded with

by Ayodele

Linkedin

X

Call

© 2026

Back

Contents

Back

Poseidon

A shared language for Hydrogen

Hydrogen was growing, and our UI was growing with it. The same things were being designed in different ways, and the product was starting to feel like several products instead of one.

The Poseidon UI kit cover: a type specimen, component variant toggles, and product screens on a black ground

Client

Hydrogen

Year

2024

Timeline

Ongoing

Role

Senior Product Designer

Team

4 designers

5 product teams

Focus

Design systems

Foundations

Components

Patterns

Adoption

Problem

We already had components. We had several versions of most of them, built by different teams, and none of them knew about each other.

My role

The foundations, 20 to 40 components, the patterns above them, and the adoption work that made any of it matter.

Key decision

Agree the rules before drawing anything. Semantic tokens, so a colour is named for why it is used rather than what it looks like.

Outcome

4 of the 5 products migrated within six months. Handoff 35% faster, visual bugs down 60%, the internal score up from 62 to 78.

01

The story

Hydrogen was getting bigger.

More products were being added. More designers were working on different parts of the platform. More engineers were building new features. That growth was good.

But I started noticing something.

The same things were being designed in different ways. A button on one screen did not always look or behave like a button on another. Forms used different spacing. Tables had different layouts. Some components had loading and error states. Others did not.

At first these looked like small visual differences. But when you put enough of them together, the bigger problem became clear.

Hydrogen was starting to feel like several products instead of one. And the bigger it became, the harder that would be to fix.

That was where Poseidon came in.

02

The problem

We had several versions of most things.

We already had components. The problem was that we had different versions of the same ideas.

Five product teams were building different parts of Hydrogen. Each team was moving quickly and solving the problems in front of them. So when someone needed a button, they made a button. When someone needed a form, they made a form. Then another team did the same thing.

Over time, small differences started to appear.

  • Different heights
  • Different spacing
  • Different colours
  • Different states
  • Different behaviours

None of these decisions were necessarily wrong. They simply were not connected.

Asking people to be more careful was never going to work.

So the question became: how do we create one shared way of building Hydrogen that different teams can actually use?

03

Looking backwards first

Before creating a new design system, I wanted to understand what we already had.

I went through existing Hydrogen screens and collected the UI we were using, then grouped similar things together. Buttons. Inputs. Tables. Dropdowns. Modals. Navigation. Statuses. Forms.

The more I looked, the clearer the pattern became. We had solved many of the same problems several times, and sometimes we had solved the same problem differently.

That audit gave us something important. A starting point. Instead of saying everything needs to change, we could see exactly where the system was breaking down.

04

Foundations

We agreed the rules before anyone drew a button.

I did not want Poseidon to become a giant collection of components that looked nice in Figma but did not really solve the problem. So we started with the rules everything else would be built on.

Colour

Instead of choosing colours separately for every screen, designers could use shared values for primary actions, success, warning, error, information, backgrounds, borders and text.

But there was an important decision here. We used semantic tokens.

Blue 500

Describes what a colour looks like. The day the brand changes, or somebody adds a dark mode, the name is a promise the colour can no longer keep.

Action Primary

Describes why we are using it. The system can change without forcing designers to rethink every screen.

This is also why it had to be semantic rather than literal. The same brand has to work on its own yellow and inverted on black, and a token called Blue 500 cannot do both.

Typography

We defined the type styles used across Hydrogen. Page titles. Section headings. Body text. Labels. Supporting text. Table text.

The goal was simple. A designer should not have to decide from scratch what size, weight or line height a piece of text should use. The system should already answer that.

Spacing

Spacing was another place where small differences had started to add up. One screen might use 16px. Another 20px. Another 24px for a similar relationship.

We created a shared spacing scale, so the gap between a label and its field meant the same thing on every screen.

Icons and the rest

We created shared rules for icons and the other basic visual properties. These foundations became the layer underneath everything else.

05

Components

Now we could build.

I contributed roughly 20 to 40 components to Poseidon. But I did not want to think of a component as just a visual object. A button is not finished because the default state looks good.

So each component had to answer questions like:

  • What happens when it is disabled?
  • What happens when something is loading?
  • What happens when there is an error?
  • What happens when the content is longer than expected?
  • What happens on different screen sizes?

Buttons

We defined the main types, sizes and states: primary, secondary and destructive actions, disabled, loading, and the sizes around them. Instead of every designer creating their own version, they could choose from a shared set.

After that, starting a new feature meant picking the right existing button rather than drawing another one.

Inputs

Hydrogen has many workflows that depend on users entering information correctly, so form behaviour mattered as much as appearance. We built reusable inputs for text, numbers, currency, search, select, date and error states.

We also made the states part of the component. An input was not just empty to filled. It was empty, focused, filled, error, disabled. That gave designers and engineers a shared answer for what each state should look and behave like.

Tables

Tables mattered because Hydrogen handles a lot of business information, and different teams had been solving them in slightly different ways. We wrote shared rules for row height, column spacing, statuses, actions, sorting, filtering, empty states, loading states and pagination.

Test use case

What we were after was familiarity. If somebody had used one Hydrogen table, they should not have to learn a new one on the next screen.

The parts, in use. This is what the audit turned into.

06

From components to patterns

Then we moved up a level, to whole flows.

A payment flow is made of many decisions working together. Select beneficiary, enter amount, review, confirm, success.

The components gave us the building blocks. The patterns gave us a way to put those blocks together, and the same thinking applied across Hydrogen:

Onboarding

Collect information, upload documents, review, submit.

Transactions

Search, filter, view the transaction, take action.

Approvals

Review the request, check the details, approve or reject, confirmation.

This changed the starting point. Instead of opening a blank Figma page and asking how should I design this, a designer could start with: what existing pattern solves most of this problem?

07

Getting it used

Getting people to use it was the real work.

It is easy to build a beautiful design system. It is much harder to get multiple teams to actually use it. Poseidon involved 4 designers and 5 product teams, so adoption could not depend on one person telling everyone what to do.

We had to make the system useful enough that teams wanted to use it. That meant finding the right component quickly, clear names, reusable patterns, clear states, working closely with engineers, and components that solved real product problems. The system had to fit the way teams already worked.

Naming became surprisingly important

Even when the right component existed, finding it was not always obvious. So we named things for what they are rather than what they look like.

Instead of

We could say

Blue Button

Button / Primary / Medium

Red Input

Input / Currency / Error

This sounds small. But when a system contains dozens of components, good naming saves a lot of time. A designer should be able to look at a component and understand what it is without opening it first.

Engineering was in it from the start

I worked closely with engineers to make sure the components we designed could actually work in the product. We talked through what happens when text gets longer, when an error appears, while something is loading, which parts should be reusable, which states need to exist in code, and whether the same component should behave the same way everywhere.

A component was only done when the design, the behaviour and the code all agreed with each other.

So the Figma library was only half of the job. Every part in it was built as a real code component too, and both were published together. A designer picking a button in Figma and an engineer importing one from the library were reaching for the same thing, with the same names, the same variants and the same states.

That is what the docs page was for. Each component had its design, the props an engineer needs and the code to paste in, all on one page, so nobody had to guess how the drawing turned into the build.

08

Keeping it from breaking again

Six months in, the old habits started coming back.

A team needs something. They create a one-off solution. Someone else copies it. Another team changes it. Six months later you have three versions of the same thing again.

So we created a simple way of thinking about new UI.

  1. Check Poseidon first. Does something already exist?
  2. Reuse it. If it works, use it.
  3. Improve it. If it almost works, improve the shared component instead of creating another version.
  4. Create something new only when the problem is genuinely new.
  5. Work with engineering, so the solution can be built and reused.
  6. Add it back to Poseidon, so the next team does not solve the same problem again.

This helped Poseidon become a living system instead of a one-time Figma project.

The ladder, in public. A part cannot claim a rung it has not earned.

09

Six months later

Four of the five products had moved across.

Within six months, 4 of the 5 products had migrated to Poseidon.

35% faster design handoff.

Designers and engineers had clearer shared components and states to work from.

60% fewer visual bugs.

Fewer inconsistencies between what was designed and what was built.

Internal score up from 62 to 78.

The survey score for the system improved as teams adopted it and became familiar with it.

The products afterwards, finally looking related.

These numbers mattered because they showed Poseidon was doing more than making Figma files cleaner. It was changing how the teams built Hydrogen.

10

What I learned

When I started, I thought the main job was to build a design system.

By the end I saw the job differently. The components were only one part of it. The harder part was getting different people to agree on the same rules.

Four designers. Five product teams. Different products, different priorities, different ways of working. Poseidon gave everyone a shared starting point, and that was the real value.

Poseidon turned out to be a way of making decisions together, more than a library of screens.

Before

How should we build this?

After

How does Hydrogen already solve this?

That shift made the product easier to design, easier to build, and easier to keep consistent as it grew.

Previous · Earnipay

Rewards that felt personal

Next · Earnipay Business

Who has to say yes

Client

Hydrogen

Year

2024

Timeline

Ongoing

Role

Senior Product Designer

Team

4 designers

5 product teams

Focus

Design systems

Foundations

Components

Patterns

Adoption