🌙 Dark ModeHue 285° · Violet

Violet

Your brand is currently a violet dark palette, shaped by 4 projects with an average health of 100%. It's 5°C with drizzle in Chester — adding a soft, misty quality. Deployed from commit 82495a5.

02

What Shaped It

Every aspect of this palette was derived from live content signals — not a hard-coded colour scheme. Here are the exact values that produced today's theme.

Content Signals

Projects tracked4
Scanned projects4
Average health100%

Deploy Signals

Commit SHA82495a5
Deploy timestamp14 March 2026 at 21:40 UTC
Palette modedark
03

Weather in Chester

5°C

drizzle

5°C with drizzle

Cloud Cover

86%

Humidity

77%

How this influenced the palette: Drizzle added a soft, misty quality — moderate saturation reduction, dark mode active.

Weather fetched at 22:10 UTC · Source: Open-Meteo (Chester, 53.19 °N, 2.89 °W) · Refreshes hourly

04

Living Styleguide

Colour Palette

Accents

Primary

Primary Light

Primary Dark

Accent

Surfaces

Background Deep

Background Base

Background Surface

Background Elevated

Text

Text Primary

Text Secondary

Text Muted

Borders

Border Default

Border Subtle

Semantic

Success

Warning

Error

Click any hex, HSL, or CSS variable name to copy it to your clipboard.

Typography

Heading — The quick brown fox

Sub-heading — jumps over the lazy dog

Body text — MD4AI helps you understand exactly what context Claude Code loads for each session. Scan your configuration files, visualise the dependency graph, and catch orphaned files before they cause confusion.

Secondary / muted — Version 1.0.0 · Built with Next.js 15 · Supabase · TypeScript

Monospace / accent — hsl(198, 93%, 60%) · commit abc1234

Component Previews

Buttons

Card

my-project

Last scanned 2 hours ago

Healthy

78 / 100 health score

Input

Badges

AccentSuccessWarningErrorNeutral

Alert

Info Alert

This is an informational message styled with the current brand palette.

Brand Gradient

176° · #0c060e#2f1d35#3e2c44

05

Generated Assets

All of these assets are generated on-demand from the live brand theme using Next.js ImageResponse. They refresh automatically when the brand data changes.

Open Graph · 1200 × 630

Open Graph preview

/opengraph-image

Twitter Card · 1200 × 628

Twitter card preview

/twitter-image

Favicon · 32 × 32

Favicon at 32px32px
Favicon at 64px64px
Favicon at 96px96px
Favicon at 128px128px

/icon

Apple Touch Icon · 180 × 180

Apple icon at 60px60px
Apple icon at 90px90px
Apple icon at 120px120px
Apple icon at 180px180px

/apple-icon

06

Brand History

A record of every brand theme generated on deploy. Each snapshot captures the exact seeds and palette in use at that moment.

14 Mar 2026, 14:36 UTC

dfd655a

Your brand is currently a blue dark palette, shaped by 4 projects with an average health of 100%. It's 10°C with cloudy skies in Chester — lending a muted, contemplative quality. Deployed from commit dfd655a.

07

Technical Showcase

Brand Engine Algorithm

01Seed Fetching

On each request, the brand engine queries Supabase for live project stats (count, scan coverage) and fetches the current weather for Chester, UK from Open-Meteo. All data is cached at the Next.js fetch layer.

02Deterministic Hashing

A djb2 hash of the serialised seeds produces a 32-bit unsigned integer. This makes the palette fully deterministic — the same inputs always produce the same palette, but different data states produce different palettes.

03Mode Selection

Light or dark mode is chosen by weather condition: clear skies above 18 °C → light mode; snow → light; rain, cloud, cold → dark. If weather is unavailable, health score > 85 triggers light mode.

04Hue Derivation

The primary hue is derived from the hash within a weather-conditioned range. Clear weather anchors to warm greens/teals (150–200 °); thunderstorms force deep indigo/violet (260–300 °); cold shifts the range blue-ward.

05Palette Construction

Full colour ramps (primary, surfaces, text, borders, semantic) are generated from the hue using fixed lightness/saturation formulae adjusted by cloud cover and scan count.

06WCAG AA Enforcement

Every text/background pairing is tested for WCAG AA contrast (4.5:1 ratio). If it fails, foreground lightness is nudged in increments of 5 % until it passes — guaranteeing readable text in any generated palette.

07CSS Injection

The theme is serialised as CSS custom properties and injected into the <html> root in layout.tsx. All 65+ components reference these variables via Tailwind theme extensions, so the entire UI re-skins automatically.

Next.js Features Powering This Page

  • Server ComponentsThe /brand page itself is a React Server Component — it fetches seeds and generates the theme at request time with no client-side JavaScript required for the initial render.
  • fetch() cachingThe Open-Meteo weather call uses { next: { revalidate: 3600 } } for hourly ISR. Supabase queries use { cache: "no-store" } to always reflect live data.
  • CSS custom propertiesBrand variables are injected as :root { --brand-* } in the root layout, letting Tailwind's @theme extension consume them without any runtime JS.
  • ImageResponse (next/og)All image assets (favicon, OG, Twitter, Apple icon) are generated on-demand by the brand engine using the @vercel/og ImageResponse API.
  • generateMetadataEach page can export an async generateMetadata() that reads the live theme and populates title, description, themeColor, and Open Graph tags dynamically.
Build: 82495a5 · 14 Mar 26, 21:40