back

Uwazi UI refactor

Rebuilding the interface of a platform used by 150+ organizations, without stopping the work it carries.

Forty screens

Nothing in Uwazi was badly designed. Every screen had been a sensible answer to a real request, made by different hands at different times, and none in reference to the others. So the settings looked nothing like the library, filters worked differently from place to place, and nobody could hold the thing in their head. For organizations deciding whether to trust it with their most sensitive records, it also looked assembled rather than built.

A map of Uwazi's features and screens, laid out side by side.
Every screen was fine, the interface was not.
The Uwazi library as it was before the refactor.
An interface audit of the existing product.
What was there, and the audit of it.

Drawing it

Fixing single screens never converged, so I took the case for a full rebuild to the CTO. The approved version was the harder one: redesign everything, ship it in pieces, never take the platform down. There was no handover file, so I first rebuilt every implemented screen, feature and state in Figma from the live product. Once it was all on one canvas, the argument made itself.

Every screen and feature of the previous interface, recreated in Figma.
A Miro board of interface pain points and proposed solutions.
Drawing what was already there.

Four patterns

Every existing feature was translated one to one: nothing dropped, no behaviour quietly changed. Within that, almost everything collapsed into four patterns. A table for anything that is a list of things, with no exceptions. A drawer for editing one item without losing your place. A stepped modal for processes that have stages. A Dynamic Action Bar for the actions on whatever is selected.

Four is what a small open-source team can hold in their heads and apply correctly without me reviewing every pull request. It shipped section by section into installations with live cases open, so old and new halves had to coexist without either looking broken. There was no usability lab: each section’s reception was the test for the next.

The new table-based interface with spacing handover markers, on desktop and mobile.
The new drawer for editing one item.
The table and the drawer.

picture The document reader, before and after.

The PDF reader before the refactor.
The PDF reader after the refactor.
The document reader, before and after.
Settings screens rebuilt as components, stacked.
Settings, rebuilt as components.

picture Translations, with the same patterns.

The translations screens rebuilt as components.
Translations, with the same patterns.

Now

Uwazi is one interface rather than a dozen. The same table behaves the same way in settings as in the library, and someone who learns one section has learned the others. The empty states, which used to be blank, now do the onboarding. The hard part was not the rebuild but holding the line on one-to-one translation; a design system is however much of it the people implementing it can remember.

The new empty state and onboarding for the library.
The new library cards with a clearer hierarchy of information.
What it looks like now.

Some work stayed as concepts: designs for text references that can overlap, and a query builder for the second version of relationships. The team built from prototypes, not pictures.

A concept for the new text references interface.
A concept for the second version of relationships and its query builder.
Concepts, not shipped.

picture A prototype the team built from.

A prototype of the document view.
The prototype in dark mode.
A prototype the team built from.