Skip to content

Per-project brand marks: one mark per repo#22

Merged
lesnik512 merged 13 commits into
mainfrom
brand-project-marks
Jun 29, 2026
Merged

Per-project brand marks: one mark per repo#22
lesnik512 merged 13 commits into
mainfrom
brand-project-marks

Conversation

@lesnik512

Copy link
Copy Markdown
Member

What

Adds a per-repository logo system to the brand kit. Every repo gets a large-format mark: the constant green+gold "snake" frame with a single gold inner symbol that says what the project does — a strict two-colour system, differentiated by symbol shape. Generated programmatically in brand/build/ into brand/projects/<repo>/ (mark.svg, lockup.svg, mark-512/1024.png) for all 17 repos across the four families. The org marks in brand/org/ and every repo's favicon are unchanged — these are large-format only (docs hero, README banner).

Delivers the per-project system deferred in brand/STORY.md ("Act 2 — the family that never shipped").

Design

  • Spec: planning/changes/2026-06-29.01-per-project-brand-marks/design.md
  • Plan: same bundle's plan.md
  • Rejected option recorded: planning/decisions/2026-06-29-project-marks-single-gold-inner.md (per-family accent colours — dropped as too busy; large-format-only means shape alone disambiguates)

Symbols

  • DI (7): modern-di (dashed dependency graph) · that-depends (solid graph) · -fastapi (bolt-in-disc) · -litestar (star-in-disc) · -faststream (the FastStream delta, recoloured) · -typer (bold >T terminal prompt) · -pytest (stepped bars)
  • Templates (2): reuse the org chevron mark
  • Microservices/messaging (5): lite-bootstrap (rocket) · httpware (chain) · faststream-redis-timers (stopwatch) · faststream-concurrent-aiokafka (parallel lanes) · faststream-outbox (DB publishing broadcast arcs)
  • Utilities (3): db-retry (cylinder + retry circle) · eof-fixer (document + ↵) · semvertag (tag)

How it's built

  • brand/build/symbols.py — inner symbols + shared geometry helpers
  • brand/build/geometry.pyproject_frame() (parametric snake frame)
  • brand/build/projects.pyMANIFEST (repo → symbol), project_mark, project_lockup, render_projects
  • brand/build/raster.pyexport_png extracted so render/projects share it with no import cycle
  • Regenerate: uv run python -m brand.build.render

All marks are path-based (font-independent); a test asserts every mark uses only palette colours. 75 tests pass; just check-planning OK. Architecture promoted in architecture/brand-marks.md.

Notes

  • modern-di-faststream is the only mark using a partner's literal logo path (FastStream's, recoloured); other integration cues are redrawn evocations.
  • Wiring each mark into its downstream repo's site/README is per-repo follow-up.

🤖 Generated with Claude Code

lesnik512 and others added 13 commits June 29, 2026 22:10
Spec for a per-repository logo system: one constant green+gold snake-frame
with a single gold inner symbol per repo (two-colour, differentiated by shape).
Covers all 17 repos across four families, generated in brand/build/ into
brand/projects/<repo>/. Records the rejected per-family-colour option as a
decision. Large-format only; favicons stay the org mark.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Nine TDD tasks: symbol module + helpers, the four families of inner symbols,
the parametric project frame, the repo manifest + mark composition, rendering
to brand/projects/, name lockups, and docs/architecture promotion.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@lesnik512 lesnik512 merged commit 5654935 into main Jun 29, 2026
1 check passed
@lesnik512 lesnik512 deleted the brand-project-marks branch June 29, 2026 20:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant