Terminal / hacker: UI design prompt
Palette, type rules and a pasteable prompt for terminal / hacker. Also called hacker aesthetic, CLI UI, command-line website, green screen, TUI style. 1970s-80s terminals; web revival 2015 onward (developer portfolios, security tools).
Traits
- monospace type for everything, including headings
- black or very dark background with phosphor green or amber text
- prompt characters ($, >, ~) as list markers and headings
- box-drawing characters, ASCII art logos, blinking block cursor
- typed-out text effect on the hero, one line at a time
- borders are single-line ASCII or 1px in the text colour
- tables aligned in fixed columns like directory listings
Palette
#0c0c0c page, #33ff33 primary green (or #ffb000 amber), #1f7a1f dim green, #c8c8c8 secondary, #ff5555 error red, #ffff55 warning
Type
JetBrains Mono, IBM Plex Mono, Fira Code or Commit Mono; single size 14-16px, headings same size in bold or boxed, line-height 1.5
Do
- use one font size and make hierarchy with prompts, uppercase and box-drawing rules
- add a scanline overlay (repeating-linear-gradient, 2px, opacity 0.06) and a slight text glow
- make the typed effect skippable and disable it under prefers-reduced-motion
Don't
- do not mix in a sans-serif for "readability"; that breaks the fiction
- do not use rounded corners, gradients or shadows
- do not turn it into a fake OS with fake windows; stay in one terminal
Known for it: Hack The Box, Hackaday (partial), countless developer portfolios, Warp and Ghostty marketing pages
CSS seed
:root {
--bg: #0c0c0c;
--fg: #33ff33;
--dim: #1f7a1f;
--muted: #c8c8c8;
--alert: #ff5555;
--radius: 0;
--glow: 0 0 6px rgba(51,255,51,0.5);
--font: 'JetBrains Mono',monospace
}
Prompt
Build the site as a terminal. Background #0c0c0c, text #33ff33, dim text #1f7a1f, secondary #c8c8c8, error #ff5555. Font JetBrains Mono 15px everywhere, line-height 1.5; headings are the same size in bold, prefixed with "$ " or wrapped in box-drawing characters (┌─┐ │ └─┘). Max width 88 characters, padding 24px, left aligned. Nav is a single line of paths (~/home ~/work ~/about) with the active one in inverse video (background #33ff33, text #0c0c0c). Hero: a typed-out line with a blinking block cursor (steps() animation, 1s blink), typing 40ms per character, skippable on click. Lists use "> " markers; data in fixed-width columns. Links underlined in #33ff33, hover inverts colours. Add text-shadow 0 0 6px rgba(51,255,51,0.5) and a 2px scanline overlay at opacity 0.06. No radius, no gradients, no images except ASCII art. Under prefers-reduced-motion, show all text instantly.
For design.md, .cursorrules or AGENTS.md
## Design direction
Build the site as a terminal. Background #0c0c0c, text #33ff33, dim text #1f7a1f, secondary #c8c8c8, error #ff5555. Font JetBrains Mono 15px everywhere, line-height 1.5; headings are the same size in bold, prefixed with "$ " or wrapped in box-drawing characters (┌─┐ │ └─┘). Max width 88 characters, padding 24px, left aligned. Nav is a single line of paths (~/home ~/work ~/about) with the active one in inverse video (background #33ff33, text #0c0c0c). Hero: a typed-out line with a blinking block cursor (steps() animation, 1s blink), typing 40ms per character, skippable on click. Lists use "> " markers; data in fixed-width columns. Links underlined in #33ff33, hover inverts colours. Add text-shadow 0 0 6px rgba(51,255,51,0.5) and a 2px scanline overlay at opacity 0.06. No radius, no gradients, no images except ASCII art. Under prefers-reduced-motion, show all text instantly.
## Tokens
:root { --bg:#0c0c0c; --fg:#33ff33; --dim:#1f7a1f; --muted:#c8c8c8; --alert:#ff5555; --radius:0; --glow:0 0 6px rgba(51,255,51,0.5); --font:'JetBrains Mono',monospace }
Keep hover and focus-visible states on every interactive element. Do not add a CSS framework.