The Feeds booth at the showcase — two printed table runners carrying the mark and tagline, die-cut stickers on the table, a laptop looping the brand-identity reel, and the live product site on the screen behind.

Project 01 — Integrated

feeds

A brand identity, the guidelines that made it repeatable, the product front-end it was applied to, and the booth it launched from.

Brand Identity · Product UI · Launch Campaign · 2026

One system, seven surfaces

Feeds is a self-hosted reader and digest engine for developers — one Go binary, a local database, no accounts and no telemetry. I didn't write the engine; the developer I worked with did. But more or less everything you can see, I made: the identity, the guidelines, the applied front-end, the digest email, the marketing site and the whole launch.

Brand Identity Guidelines Product UI Front-end Print Motion Environmental
The brief
A working product with no face. It had to look credible next to enterprise threat-intelligence platforms costing tens of thousands a year, while staying honest about what it is — a local-first tool that runs on your own disk. The positioning line the identity had to carry: "Your feeds. Your disk. Your loop."
My constraint
The person applying the identity day-to-day would be a developer, not a designer. So the deliverable couldn't be a logo file — it had to be a system specific enough to be followed without me in the room, and I had to prove it worked by applying it into the product myself first.
What I owned
Mark, wordmark and palette · an 11-page guidelines document · the product interface and icon set in CSS and JavaScript · the digest email · the marketing site · the demo recording · and the launch booth — runners, stickers, cards and both screen reels.

It had to hold a room

Feeds launched from a live booth at the capstone showcase. A booth is the hardest test a young identity gets: it's seen from three metres away, in bad light, next to twenty others, by people who will not read anything. Everything on and around that table came out of the same brand kit.

On the table
Two printed table runners carrying the mark and the tagline, die-cut mark stickers in four colourways — all printed straight from the brand kit, which is the real test of whether a kit is finished.
On the screens
A product reel and a brand-identity reel, looping. Both are cut to be legible from three metres away and to loop without a visible seam, because nobody watches a booth video from the beginning.

The reel from the screens — the product, cut to read at a glance.

A spark, held

A four-point spark framed by two curved strokes — the signal, and the loop that catches it. The wordmark is lowercase Bricolage Grotesque, never capitalised and never reset. The lockup flexes across backgrounds, but only in three approved combinations.

The Feeds lockup — spark mark and lowercase wordmark — in ink on paper. On paper
The Feeds lockup in paper on ink. On ink
The Feeds lockup in paper on sage. On sage

Three approved combinations. Everything else — recolouring it, tilting it, stretching it, or dropping it where contrast falls below AA — is one of the four named don'ts.

Paper and ink, with one signature sage. The point of specifying it this tightly wasn't restriction — it was so that sage stays an accent instead of drifting into a background colour the first time someone reaches for it.

Ink

#11110F

Primary. Logo, headlines, body text.

Sage

#7D8A79

Secondary. Backgrounds, accents, icons.

Sage Dark

#515A4F

Shade. Deep backgrounds, captions.

Sage Light

#B8BFB5

Tint. Borders, dividers, muted fills.

Paper

#EFF1EF

Neutral. Page and card backgrounds.

Paper 50% Ink 28% Sage 15% Sage tints 7%

Eleven pages, written for the person who'd be applying it without me: construction and clear space, the three approved lockups, four explicit don'ts, the palette down to the ratio each colour should occupy on a page, a five-step type scale on one variable font, fifteen custom icons sharing one grammar — 2px strokes, no fill, rounded joins, one grid — three supporting textures, and an AA contrast floor that isn't optional.

Guidelines page 5 — logo usage: the three approved background combinations, and four explicit don’ts.
Guidelines page 6 — the colour palette with hex and RGB values, plus the usage-ratio bar.
Guidelines page 7 — typography: Bricolage Grotesque weights and type scale.
Guidelines page 8 — the custom line-icon system.

Four of the eleven pages: logo usage, colour, type, icons.

A ripple built from the mark's own curve, for transitions, loading states and hero backgrounds — so the brand has something to do while the product is thinking.

Ripple, from the brand kit's motion set.

I applied it myself

A guidelines PDF handed over at the door tends to survive about two weeks. So I took the system into the codebase and applied it in CSS and JavaScript — the interface, the icon set, the Smart Inbox navigation — and left the result as the reference implementation.

The Feeds article list after the brand refresh, showing inline CVE, malware and actor chips extracted locally at view time.

The article list — inline CVE, malware and actor chips.

The Feeds Smart Inbox — saved filters returning only matching articles, in the refreshed interface.

Smart Inbox — saved filters, restyled against the system.

Design calls
Moving Run Audit inside the digest card, where the thing it audits actually lives, and simplifying its toggle. Fixing the empty-list states, which were losing to a CSS specificity conflict and rendering unstyled.
Working with the engineer
My front-end went through his code review like anyone else's, and I revised against his notes. That's the part I'd point at: the identity didn't arrive as a deck, it arrived as merged commits.

The product demo, re-recorded against the new UI — it's what runs on the marketing site and in the README.

The same system, everywhere else

Once the product carried the identity, everything pointing at it had to agree: the marketing site, the digest email that lands in someone's inbox every morning, and the README that is, for a developer tool, the actual front door.

The Feeds hero — the lockup in paper over the topographic pattern, the tagline, and three capability pills.

The hero, built from the kit — topographic pattern, the paper lockup, and the positioning line the whole identity was drawn to carry. It runs on the site and at the top of the README.

Handover is the design problem

The interesting constraint on Feeds wasn't drawing the mark. It was that the system had to keep working after I stopped touching it, in the hands of someone whose job is the engine, not the interface. Every decision on this project bent toward that — ratios instead of vibes, four named don'ts instead of "use good judgement", a contrast floor instead of a preference, and a reference implementation in the repo instead of a PDF.

It's also the clearest case I have for working across the whole thing. The same spark ended up on a screen, in an inbox, on a sticker, and on a printed runner at a booth — and the only reason it holds together is that one person specified it and then went and applied it.