Novu DESIGN.md

Brands

Open-source notification infrastructure with a dark developer aesthetic — deep surfaces, electric indigo accents, and workflow-driven UI.

Raw DESIGN.md

At a glance

Group
Brands
Main color
#7c3aedPurple design systems
Fonts
InterJetBrains Mono

Colors in this file

  • #7c3aed

    background

  • #2d2d45

    Unnamed

  • #1a1a24

    background

  • #34d399

    border-color

  • #0f0f12

    background

  • #f4f4f8

    Unnamed

  • #6d28d9

    Unnamed

  • #24243a

    background

  • #9090b0

    Unnamed

  • #ede9fe

    Unnamed

Open-source notification infrastructure with a dark developer aesthetic — deep surfaces, electric indigo accents, and workflow-driven UI.

1. Visual Theme & Atmosphere

Novu's design language is built for engineers. Dark backgrounds dominate, keeping focus on the notification workflow graph and code-adjacent content. Indigo and electric blue accents energize the interface and guide users through complex notification pipelines. The aesthetic is precise, technical, and modern — a tool that developers trust because it looks like it was built by developers.

2. Color Palette & Roles

TokenHexRole
--color-primary#7C3AEDBrand violet, CTAs
--color-primary-hover#6D28D9Hover/active CTA
--color-primary-light#EDE9FELight badges, backgrounds
--color-accent#60A5FAWorkflow edges, info highlights
--color-success#34D399Delivered, active channels
--color-warning#FBBF24Pending, degraded
--color-error#F87171Failed, error states
--color-bg-base#0F0F12Page background
--color-bg-card#1A1A24Card surfaces
--color-bg-elevated#24243AElevated panels, dropdowns
--color-border#2D2D45Borders, dividers
--color-text-primary#F4F4F8Headings, primary text
--color-text-secondary#9090B0Body text, labels
--color-text-muted#5A5A7APlaceholders, hints

3. Typography Rules

css--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
--font-mono: 'JetBrains Mono', 'Fira Code', monospace;
--font-size-xs: 11px;
--font-size-sm: 13px;
--font-size-base: 14px;
--font-size-md: 16px;
--font-size-lg: 20px;
--font-size-xl: 24px;
--font-size-2xl: 32px;
--font-weight-regular: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;
--line-height-tight: 1.25;
--line-height-base: 1.5;
ElementSizeWeightLine Height
Page Title32px7001.2
Section Header20px6001.3
Card Title16px6001.4
Body14px4001.5
Label / Meta13px5001.4
Code / Caption11px4001.4

4. Component Stylings

css/* Primary Button */
.button-primary {
  background: #7C3AED;
  color: #FFFFFF;
  border: none;
  border-radius: 8px;
  padding: 9px 18px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s ease;
}
.button-primary:hover { background: #6D28D9; }

/* Workflow Node */
.workflow-node {
  background: #1A1A24;
  border: 1.5px solid #2D2D45;
  border-radius: 10px;
  padding: 12px 16px;
  min-width: 160px;
  cursor: pointer;
  transition: border-color 0.15s ease;
}
.workflow-node:hover { border-color: #7C3AED; }
.workflow-node--active { border-color: #7C3AED; }
.workflow-node__icon {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: rgba(124,58,237,0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 8px;
}

/* Channel Badge */
.channel-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 100px;
  font-size: 12px;
  font-weight: 600;
  border: 1px solid #2D2D45;
  background: #24243A;
  color: #9090B0;
}
.channel-badge--active {
  border-color: #34D399;
  color: #34D399;
  background: rgba(52,211,153,0.1);
}

/* Code Block */
.code-block {
  background: #0F0F12;
  border: 1px solid #2D2D45;
  border-radius: 8px;
  padding: 16px;
  font-family: var(--font-mono);
  font-size: 13px;
  color: #F4F4F8;
  overflow-x: auto;
}

/* Input */
.input {
  background: #1A1A24;
  border: 1.5px solid #2D2D45;
  border-radius: 8px;
  padding: 9px 14px;
  font-size: 14px;
  color: #F4F4F8;
  transition: border-color 0.15s;
}
.input:focus {
  outline: none;
  border-color: #7C3AED;
  box-shadow: 0 0 0 3px rgba(124,58,237,0.2);
}

5. Layout Principles

TokenValueUsage
--spacing-xs4pxIcon padding
--spacing-sm8pxInline gaps
--spacing-md12pxCard inner spacing
--spacing-lg20pxSection gaps
--spacing-xl32pxPage padding
--spacing-2xl48pxSection separation
--radius-sm6pxBadges
--radius-md8pxButtons, inputs
--radius-lg10pxCards, nodes
--sidebar-width240pxFixed navigation rail

6. Depth & Elevation

css.shadow-sm { box-shadow: 0 1px 4px rgba(0,0,0,0.5); }
.shadow-card { box-shadow: 0 4px 12px rgba(0,0,0,0.6); }
.shadow-modal { box-shadow: 0 16px 48px rgba(0,0,0,0.7); }
.shadow-node-active { box-shadow: 0 0 0 2px #7C3AED, 0 4px 12px rgba(124,58,237,0.3); }

7. Do's and Don'ts

Do:

  • Keep the workflow canvas dark and uncluttered — let edges and nodes carry the hierarchy
  • Use channel-specific icons (email, SMS, push, in-app) consistently in workflow nodes
  • Surface delivery status with semantic colors: green=delivered, yellow=pending, red=failed
  • Monospace font for all code snippets, API keys, and template variables

Don't:

  • Don't use light backgrounds in the workflow canvas — it breaks the developer aesthetic
  • Don't label workflow edges with more than 3 words
  • Don't mix rounded and square elements in the same context

8. Responsive Behavior

BreakpointMin WidthBehavior
Mobile320pxSettings and logs view only; workflow canvas collapses
Tablet768pxSidebar hidden, workflow canvas scrollable
Desktop1024pxFull sidebar + workflow canvas + properties panel
Wide1440pxExpanded canvas with larger node spacing

9. Agent Prompt Guide

You are designing for Novu — open-source notification infrastructure.
Use a deep dark background (#0F0F12) with card surfaces at #1A1A24.
Primary brand color is violet (#7C3AED); use for CTAs, active nodes, and focus rings.
Workflow nodes are rounded rectangles with icon blocks and subtle hover borders.
Channel status badges use semantic colors: green for active, yellow for pending, red for failed.
Typography is Inter at 14px, monospace for code and template content.
Tone is technical, dark, and workflow-first.

Use it with your agent

Save the file as DESIGN.md in your project root, then ask your agent to follow it for UI work. Or let the agent fetch it over MCP.

Download

curl -o DESIGN.md https://www.uiskillbook.com/design-md/novu.md

MCP server

https://www.uiskillbook.com/mcp

MCP tool call

get_design_md({ "slug": "novu" })