Skip to main content
PurpletGo

Brand

The PurpletGo brand

Our logo, colours, type, voice and the station world, with downloads and the few rules that keep them consistent. Everything on this page is read from the same tokens the product is built with.

Logo

A door, and the way out through it

The mark is a door frame with an exit arrow, on a violet tile with corners at 29 percent of its side. The wordmark is Plus Jakarta Sans at weight 800 with tight tracking. They sit together as a lockup, or the mark stands alone.

PurpletGo
PurpletGo

The lockup is built from the tile

Call the tile's side T. The wordmark is set at 0.6 T, the gap between them is 0.3 T, and the wordmark sits on the tile's centre line. So a 32 px tile takes a 19 px wordmark with a 10 px gap, and a 56 px tile a 34 px wordmark with a 17 px gap. Weight 800, tracking minus 2 percent, always.

PurpletGo
T 24 · text 14 · gap 7
PurpletGo
T 32 · text 19 · gap 10
PurpletGo
T 48 · text 29 · gap 14

Clear space and minimum size

Keep half the tile's width clear on every side. Do not set the tile below 16 px, or the lockup below 24 px tall; under that the door closes up. The SVG draws its own corners, at 29 percent of the tile's side; never round it again with CSS, which clips it at a different ratio.

16 px
PurpletGo
24 px

Please don't

Recolour the tile
Stretch or rotate it
Add effects or outlines

Downloads

SVG for anything on a screen or in print; PNG where SVG is not accepted. The wordmark in the lockups uses the font stack, so open them in a browser or an editor with Plus Jakarta Sans installed.

Colour

One violet, and everything else is ink

The brand violet is #5f31dd, a royal violet of our own rather than a stock one. It is the tile, the primary button and the accent word in a headline, and nothing else. Surfaces are white and the palest tints; text is a violet-black ink, never pure black.

50#f4f0ff
100#ece5ff
200#ded2fe
300#c5b1fc
400#a284f5
500#815aed
600#5f31dd
700#4d22c3
800#401e9f
900#361c7d

600 is the brand violet. 50 to 200 tint surfaces; 300 to 500 draw lines, halos and illustration; 700 to 900 are text on light and the deep end of gradients.

Ink#12101cHeadings and body text.
Ink, muted#565273Secondary copy and lede text.
Ink, faint#6e6a88Labels, captions and eyebrows.
Sign#2a2150The station sign and the departure board.
Frame#1f1838The train's chassis and the board's rules.
Deep#16112bTerminals and the darkest ground.
App, dark#130f1aThe app's dark theme background.

Status: one hue per meaning

A fill carries white text. The ink variant is for words on a light ground, because the fills do not reach 4.5:1 there. Revocation and danger share crimson, so nothing else on a screen is ever red.

success

fill #14714cink #0f5a3csoft #e3f5ec

Revoked

warning

fill #f59e0bink #9a5b0bsoft #fbf0dc

Needs manual action

info

fill #0ea5e9ink #0b5f82soft #e2f3fb

Scheduled

danger

fill #d9344fink #a71b2esoft #fde8ec

Failed

Type

Plus Jakarta Sans, and a mono for what a machine said

One family for everything people read, from the poster headline to a caption. JetBrains Mono is for the things a system produced: timestamps, hashes, identifiers, code. Headlines are weight 800 with negative tracking; body is 400 at a generous line height.

displayNothing stays behind48px / 1.06 / -0.035em / 800
h1Nothing stays behind40px / 1.08 / -0.03em / 800
h2Nothing stays behind30px / 1.15 / -0.02em / 800
h3Nothing stays behind20px / 1.3 / -0.01em / 700
ledeNothing stays behind18px / 1.6 / 0em / 400
bodyNothing stays behind15px / 1.6 / 0em / 400
smallNothing stays behind13px / 1.5 / 0em / 400
eyebrowHow it works11px / 1.2 / 0.14em / 600
signDeparture13px / 1.2 / 0.22em / 800
mono17:00:04 · revoked · a91f…3c2eJetBrains Mono 400

The station world

A departure is a train leaving

This is the one picture that belongs to us. The person leaving boards a train; each connected system is a wagon coupled to it; the sign on the platform reads Departure; the board shows each system reporting back. Every illustration is built from these pieces, drawn in the violet ramp with brass for the train's fittings.

DEPARTUREApril 2018 · CiscoCisco's AWSthe engineer

April 2018An engineer resigns from Cisco.

  • Flat colour and simple shapes, lit from the upper left: a lit side and a shaded side, no gradients heavier than a sheen.
  • Brass and the headlamp's amber belong to the train only. They never appear in the interface.
  • A new scene is composed from these objects, not redrawn. If it needs a new object, it is added here first.
  • The world is a metaphor, not a product screenshot. It shows the idea of a case; the real board shows the case.

Voice

We would rather tell you what broke

PurpletGo's whole argument is that it does not overclaim, so the writing cannot either. Plain words, specific numbers, and a failure named as a failure.

  1. 01Say what the system did, not what the tool did. A system is revoked only when the vendor confirms it.
  2. 02Name failures plainly. A 403 is a 403, in the log, until it is resolved.
  3. 03Sentence case everywhere, including buttons and menu labels. Product names and acronyms keep their capitals.
  4. 04Hyphens, never em dashes.
  5. 05No certifications are claimed. The product produces evidence for audits; it does not hold the certificate.
  6. 06Sample data is labelled as a sample and uses a fictional name.
  7. 07Plans are Starter, Team and Enterprise, written with a capital. Features not on every plan say which plan has them.

Yes

“Jira Cloud: failed. The vendor returned 403. Retry re-runs only this system, and the case stays open until it is resolved.”

No

“Offboarding complete! All access has been successfully removed across your entire stack.”

Yes

“Six connectors are Live. The other twenty-seven are Beta until a real revoke passes.”

No

“SOC 2 ready, with 200+ integrations.”

For builders

One file, read everywhere

Every value on this page comes from one JSON file in the repository. The marketing site's Tailwind config reads it, the app's theme matches it, and this page renders it. To change a colour, change it there.

tokens.jsonbrand/tokens.json in the repository