Prefire brand kit
How Prefire looks and speaks: the logo, colors, type, ember rays and real product shots. Everything here is also on prefire.ru.
Your previews are already tests. Everything starts here.
Prefire takes what developers already wrote and turns it into checks, a catalog and images an agent can see. The brand shows that work instead of decorating it.
Real output, not illustrations
Every product shot is a real render from prefire render. No mocked screens, no invented numbers.
A warm signal on a calm tool
Night carries the surface. Ember and rose appear as rays, glow and one accent per screen.
Say what it does
Short, concrete sentences in the developer's words. The result first, then how.
The logo. Flame and word.
The flame sits in a rounded square in the mark color. The word is Inter Semibold with tight tracking, set beside the mark at the same height.
Prefire
Prefire
Prefire
Prefire40 px
Prefire20 px
24 px mark- MinimumLockup 20 px tall on screen, 7 mm in print. Mark alone 16 px.
- Mark aloneApp icons, avatars, favicons, and where the name is already nearby.
- NeverRecolor the flame, stretch the mark, add outlines or shadows to the word, or put it on a busy photo.
Color. Night first, fire as a signal.
Most of every surface is night. Text sits in three steps of warm grey. Ember and rose are for rays, glow and the one thing to notice.
#070607Page background#0F0D0ECards, panels#F4F1EEHeadlines, body, primary button#FF6A35Rays, links, active states#E0336BSecond stop of rays and glow#31001ECovers, deep backgrounds#A19A9EDescriptions#625C60Labels, captions, comments#FF6A35 → #E0336BThe only gradientType. Inter and JetBrains Mono.
Inter for everything people read. JetBrains Mono for code, commands and file names, never for headings or labels in caps.
prefire render --list#Preview("Trip delayed") { TripView(status: .delayed(minutes: 45)) .previewUserStory(.trip) .previewState(.delayed) } // keyword, type, function, string, comment
Code keeps the syntax colors from the tokens. Show real Prefire API only.
Graphic language. Rays, grain, real screens.
Five pieces build every surface. Use rays once per page, behind the main message, and let product shots do the rest.
Ember rays
Parallel bands at 36°, ember to rose, softly blurred and faded out at the edges. Behind heroes and closing calls only.
Grain
Fine noise over rays and gradients, and very faintly over the whole page. It keeps the fire from looking like a flat CSS fill.

Product shots
Real prefire render output in a dark phone frame with a warm glow underneath. Light and dark renders of the same screen sit side by side.
Surfaces and buttons
Radius 22 for cards, 11 for buttons, 50 for phone frames. One light button per screen.

.previewState(.default)Motion
Motion shows the product working: a screen moves through its preview states, rays drift slowly, content rises in as it scrolls into view.
- StatesCrossfade 0.7 s, a new state every 2.8 s. Show the state name next to it.
- EnterRise 18–40 px with opacity, 0.8 s, cubic-bezier(.2,.7,.2,1). Stagger siblings by 80–150 ms.
- RaysDrift ±28 px across their axis over 13–21 s, never faster.
- NeverBounce, spin, loop the logo, or move anything when the system asks for reduced motion.
Voice. An engineer who saves you time.
Calm and specific. Swift terms stay Swift terms. Promise what the tool does today, with its limits.
| Not this | This |
|---|---|
| Revolutionary AI-powered testing | Snapshot tests from the previews you already wrote |
| Zero effort, works everywhere | Snapshot tests on iOS, tvOS and macOS. Playbook on iOS. |
| Give your AI superpowers | Your agent sees the UI it just changed |
| Seamlessly elevate your workflow | One command to connect: claude mcp add prefire -- prefire mcp |
Templates. One idea per surface.
Social posts, release notes and talks use the same pieces: a short headline, a real render or real code, and rays.
PrefireRender any preview from the terminal.
prefire render "Trip" \ --color-scheme dark


