stoke/docs/DESIGN.md
cluade-reviewer-andresmgsl f5a44021da design: stoke brand system, without the 23MB of binaries
Replaces #12, which committed every generated render into the repo. Rebuilt on
a clean branch because merging the original would have written those blobs into
main's history permanently, even with a later commit deleting them.

What changed from #12:

- Keeps docs/DESIGN.md and assets/logo-mark.svg (1.4 kB of vector text).
- Drops ~23 MB of PNG/MP4. They live in the Figma file, which was already the
  source of truth and is linked from the doc. stoke's .git is ~23 MB; those
  assets would have doubled it, forever.
- Adds the missing "files" whitelist to package.json. There wasn't one, so
  npm pack shipped the whole working directory: measured 23.7 MB with the
  assets, and it was already shipping the test suite without them. Now 26.7 kB
  across 7 files.

The packaging bug is pre-existing and independent of the design work; the
oversized PR is just what made it visible.

61/61 tests pass; `stoke --version` → 1.3.0.
2026-07-26 21:26:30 +00:00

5.5 KiB
Raw Blame History

stoke — Brand & Landing Design

The operator's hand on the forge.

A complete brand identity and marketing landing page for stoke, the CLI for the Heavy Duty Forgejo forge. Designed from the codebase itself — every command group, install path, and principle on the page maps to something the tool actually does.

🔗 Figma

stoke — Brand & Landing (Figma)

The file has four pages:

Page Contents
01 · Brand System Logo lockup + ember spark mark, 14-token color palette, type scale, voice & principles
02 · Landing — Desktop Full 1440px landing: nav, hero, ecosystem strip, command showcase, philosophy split, install, CTA, footer
03 · Landing — Mobile 390px responsive landing
04 · Assets & Components Command-group icon set (24px line) + generated-asset gallery

Renders live in the Figma file — see "Why the raster assets are not committed here" below.

Concept

stoke is named after the act of feeding and tending a fire. The identity takes that literally: a working forge — controlled heat, hot steel, precision — rendered as hot ember on near-black anthracite. Industrial craft meets modern dev tool. The product principle from the README ("every real operation performed against Forgejo becomes a new CLI command") is the spine of the page.

Color — ember on anthracite

Token Hex Use
bg/base #0C0A09 Anthracite canvas
bg/raised #1A1614 Raised surfaces
bg/inset #14100E Wells / code blocks
border/subtle #2A2320 Hairlines
border/ember #3A2A1E Warm edges
ember/red #E2452B Deep heat
ember/orange #FF6A2C Primary · CTAs
ember/amber #FFB347 Bright heat · command text
hot/white #FFF3E6 White-hot highlight
steel/blue #3B6EA5 Quench accent · links / URLs
text/primary #F5EDE6 Primary text
text/secondary #A89A8E Secondary text
text/muted #6B5F56 Meta / muted
text/onEmber #1A0E06 Text on ember fills

Type

  • Archivo (Black / SemiBold) — geometric-industrial display & headings, tight tracking
  • Inter (Regular / Medium) — body copy
  • JetBrains Mono — everything command-flavored (it's a CLI): prompts, flags, install snippets

An ember spark mark — a four-point spark that reads as both a flame and a striker feeding the forge — set over a warm glow, locked up with a heavy lowercase stoke wordmark. Vector source in assets/logo-mark.svg.

Page structure (desktop)

  1. Nav — logo, section links, Get started
  2. Hero — forge backdrop, Every operation becomes a command., copy-able apt-get install stoke, CTAs
  3. Ecosystem strip — the six repos the forge manages: box · rig · cast · infra · handbook · incubator
  4. Command showcase — a live, syntax-colored stoke terminal session + cards for all 7 command groups (auth, repo, pr, issue, branch, org, user) with real example commands and command counts
  5. Philosophy split — "Built for the hand on the forge" with the operator image + feature checklist (apt-native, 0600 tokens, batch import, dogfooded)
  6. Install — apt (recommended) and from-source code cards, with the Node ≥ 22.12 note
  7. CTA bandFeed the forge. over ember texture
  8. Footer — logo, link columns, forge URL, version

Assets

All imagery generated with Artlist (Seedream 5.0 Pro for stills, Kling 1.6 for the ambient loop) and embedded in the Figma file.

Asset Where it lives
assets/logo-mark.svg In this repo — ember spark logo mark, vector, 1.4 kB
Hero backdrop · 2048×878 21:9 — glowing coals, hot steel, sparks Figma, page 04
Operator's hand stoking coals · 3:2 (philosophy section) Figma, page 04
Molten ember bed · 21:9 (CTA / section backdrops) Figma, page 04
5s ambient ember loop (motion) Figma, page 04
Desktop landing render · brand system render Figma, pages 02 / 01

Why the raster assets are not committed here

The first version of this change committed all of them — 23 MB of PNG and MP4 into a CLI repo. That was a mistake, and it was mine. Two concrete costs:

  • stoke's .git is ~23 MB; the assets would have doubled it, permanently. Git history is forever, so a marketing render committed today is still being cloned by every contributor in five years.
  • package.json had no files whitelist, so npm pack shipped the working directory. Measured: the tarball went from ~100 kB to 23.7 MB — a 200× bloat delivered to every user of a command-line tool, for images none of them will ever look at.

Binaries that exist to be looked at belong where people look at them: the Figma file, which is linked at the top and is the source of truth anyway. The vector logo stays because it is 1.4 kB of text, diffs cleanly, and is the one asset the project itself might need to render.

This change also adds the missing files whitelist to package.json, so the published tarball now contains only src/ and the docs a user needs — a pre-existing packaging bug that shipping the test suite had been hiding.

Notes

  • This PR was opened with stoke pr create — the tool designing its own storefront.
  • Nothing here changes the CLI. It adds a docs/ design record, one vector asset, and a packaging fix.