| name | Repo Bootcamp | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| description | A high-signal developer console for turning any repo into a Day-1 onboarding kit. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| colors |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| typography |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| rounded |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| spacing |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| components |
|
Creative North Star: "The Terminal Readout"
Repo Bootcamp is a tool that lives in the terminal; its web surface should feel like the calmest, clearest console a developer has ever read. The system is anchored on GitHub's own dark canvas (#0d1117 and the Primer-dark surface ramp) because the audience already trusts that environment β it reads as "made by people who live where you work," not as a generic web app dressed in dark mode. Data is monospace. Status is honest and streamed. One confident cyan is the single signal color, and it is spent only on the things the user acts on or waits for.
This system explicitly rejects the saturated "AI dark-mode dev tool" look the project shipped with: the navy gradient background (#1a1a2e β #16213e), the cyanβgreen gradient wordmark, the gradient button, and muted #888 gray text that washes out against a tinted ground. Those moves make a genuinely capable tool read as a weekend template. It also rejects heavyweight enterprise doc-portal chrome (Confluence/SharePoint) and pitch-deck SaaS choreography β this is a fast instrument, not a funnel. Depth comes from tonal layering and 1px borders, never from decorative shadows or glass.
The feeling is precise, quick, and quietly confident. Every transition is short enough to stay out of the user's flow (the interface must feel as fast as the sub-60-second promise), and nothing decorative is allowed to compete with the agent's live work.
Key Characteristics:
- GitHub Primer-dark surface ramp as the identity anchor (
canvas β surface β surface-raised). - One committed cyan accent, used for primary action / focus / active state only.
- Monospace for everything that is code, a path, a URL, or a score.
- Flat by default; depth via tonal layers and 1px borders.
- Honest, streamed status as the signature interaction β "show the work."
A near-black GitHub-dark ground, a tight neutral ramp for layering, one vivid cyan signal, and a standard semantic set for scores and status.
- Signal Cyan (
#00d9ff): The single accent. Primary action ("Analyze"), input focus ring, active/selected state, and the in-progress phase marker. Used solid β never as a gradient. Spent sparingly so its presence always means "act here" or "happening now."
- Canvas (
#0d1117): The app background and the inside of focused inputs. Flat, no gradient. - Surface (
#161b22): Cards (stats, files), the progress log, code previews, the modal body. - Surface Raised (
#21262d): Hover state for interactive surfaces and inset/disabled controls. - Border (
#30363d): 1px separators, input strokes, card edges. The primary depth cue. - Ink (
#e6edf3): Primary text. ~14:1 on canvas. - Ink Muted (
#8b949e): Secondary text, labels, placeholders. ~5.9:1 on canvas β passes AA. This is the floor; nothing lighter carries text. - Ink Subtle (
#6e7681): Disabled text and decorative glyphs only. Never body copy.
- Success (
#3fb950): Good security grade, completed phase, success states. - Danger (
#f85149): Errors, failed phases, destructive feedback. - Warning (
#d29922): Medium risk, attention, caution states.
The One Signal Rule. Cyan appears on β€10% of any screen. If two things are cyan at once, one of them is wrong. Scores and grades use the semantic set (success/warning/danger), not the accent.
The Earned-Dark Rule. The dark ground is GitHub's, not a generic navy. Never reintroduce the #1a1a2e β #16213e gradient or any tinted-navy body; the canvas is flat #0d1117.
Body / UI Font: system sans (-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, β¦)
Data / Mono Font: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace
Character: One workhorse sans for everything human-readable, one monospace for everything machine-readable. The contrast between them carries the whole hierarchy β no display face, no second sans. The split itself is the brand: prose is sans, anything a developer would copy-paste is mono.
- Display (700, 2rem fixed, lh 1.1): The "Repo Bootcamp" wordmark and page title. A single solid
inkcolor β never gradient-filled. Fixed rem, not fluid; this is product UI. - Title (600, 1.25rem, lh 1.25): Section headings ("Generated Files"), modal title (mono is also acceptable for the filename).
- Body (400, 1rem, lh 1.5): Subtitle, descriptions, prose. Cap measure at 65β75ch.
- Label (600, 0.8125rem): Stat labels, helper text, button text. Sentence case β not wide-tracked uppercase.
- Data (700, 2rem, mono): The big stat values (security score, risk score, counts). Monospace so digits align and read as readouts.
- Mono (400, 0.875rem): Repo URL input, file names, the code preview (
pre), progress-log lines.
The Mono-For-Machines Rule. If it's a path, a URL, a score, a grade, or generated content, it's monospace. If it's a sentence written for a human, it's sans. No exceptions for "looks techy."
Flat by default. This system conveys depth through the tonal surface ramp (canvas β surface β surface-raised) and 1px border strokes, not drop shadows. There is no ambient shadow vocabulary at rest β a GitHub-dark surface earns separation from its neighbor by being one step lighter and outlined, the same way Primer does.
The only permitted "lift" is interactive feedback: a focused control gets a 2px cyan focus ring (offset from the element), and the modal sits above the page on a plain dark scrim. No backdrop blur, no glassmorphism, no soft glows used decoratively.
The Flat-By-Default Rule. Surfaces are flat and bordered at rest. The only depth signal that moves is focus (a ring) and hover (a one-step tonal shift to surface-raised).
- Shape:
rounded.sm(6px). - Primary ("Analyze"): solid
accentbackground,canvastext,labeltype, padding12px 24px. The most important action on the page; there is normally one. - Hover / Focus: hover shifts background to
accent-hoverover 150β200ms (color only).:focus-visibleshows a 2pxaccentring with 2px offset. Active usesaccent-press. - Disabled:
surface-raisedbackground,ink-subtletext, no pointer β used while a job is streaming. - Ghost (Copy / Download / modal actions):
surfacebackground,inktext, 1pxborder; hover goes tosurface-raisedwith aborderβaccentedge.
- Corner Style:
rounded.md(8px). - Background:
surface; hover (file cards) βsurface-raised. - Shadow Strategy: none β see Elevation. Separation is the 1px
border. - Internal Padding:
md(16px); the progress log useslg(24px). - Stat cards:
data(mono) value ininkor the matching semantic color,labelinink-muted. Cards are used here because the stat grid and file list are genuinely a set of peers β do not nest cards inside cards.
- Style:
canvasbackground, 1pxborder,rounded.md,monotype (it holds a repo URL). - Focus: border shifts to
accentplus a soft 2pxaccentring; no layout shift. - Placeholder:
ink-muted(#8b949e) β passes AA; never lighter. - Disabled / error: disabled uses
surface-raised+ink-subtle; error pairs adangerborder with adangerhelper line below.
The honest readout. surface panel, mono lines, scroll-pinned to newest. Phase lines are prefixed βΆ in accent; success lines β in success; error lines β in danger; plain steps in ink-muted. This is where "show the work" lives β it is never replaced by a single spinner.
role="dialog", aria-modal, surface body, 1px border, rounded.md, on a plain rgba(0,0,0,0.8) scrim (no blur). Closes on Γ, backdrop click, and Escape. Must trap focus while open and restore focus to the trigger on close. Build a semantic z-index scale (scrim β modal β toast β tooltip); never arbitrary 999/1000.
- Do anchor on the GitHub Primer-dark ramp: flat
#0d1117canvas,#161b22surfaces,#30363dborders. Convey depth with tonal layers + 1px strokes. - Do keep one committed cyan accent (
#00d9ff), solid, for primary action / focus / active only (The One Signal Rule). - Do set monospace for repo URLs, file names, scores/grades, and code previews (The Mono-For-Machines Rule).
- Do give every control all states β default, hover,
:focus-visiblering, active, disabled, loading, error β and keep transitions 150β250ms (motion conveys state, not decoration). - Do honor
prefers-reduced-motionwith a non-animated fallback on every transition. - Do keep body prose at 65β75ch and use
#e6edf3for primary text,#8b949eas the muted floor.
- Don't use gradient text (
background-clip: text) on the wordmark or anywhere β single solid color, emphasis via weight/size. (Absolute ban.) - Don't fill the primary button (or anything) with the cyanβgreen gradient; primary actions are a single solid accent.
- Don't reintroduce the navy gradient background (
#1a1a2e β #16213e) or any tinted-navy ground β the canvas is flat#0d1117(The Earned-Dark Rule). - Don't use
#888or lighter gray for text on dark;#8b949eis the floor and body prefers#e6edf3(AA). - Don't make
transform: scale(1.05)the button's hover feedback β shift background/border instead. - Don't reach for glassmorphism, backdrop blur, the hero-metric template, per-section uppercase eyebrows, or a modal when an inline affordance would do.