DESIGN.md · Analysis

Huly

huly.io · 27 May 2026 · 47 colors · Inter, ui-sans-serif, system-ui, sans-serif

Huly

Huly is an open-source, all-in-one platform replacing Linear, Jira, Slack, and Notion. The design system emphasizes technical sophistication through dark-mode minimalism with electric accent lighting.

Colors

surface#090a0c
surface-dim#050607
surface-bright#1a1c20
surface-container-lowest#030405
surface-container-low#0f1114
surface-container#171a1f
surface-container-high#24272d
surface-container-highest#2f3238
on-surface#f7f7f7
on-surface-variant#c9cbcf
inverse-surface#f7f7f7
inverse-on-surface#090a0c
outline#68686a
outline-variant#3d3f42
surface-tint#3b82f6
primary#3b82f6
on-primary#0b0d10
primary-container#1e40af
on-primary-container#d1d4fa
inverse-primary#60a5fa
secondary#ff8964
on-secondary#5a250a
secondary-container#d5691f
on-secondary-container#fdf7fe
tertiary#d1d1d1
on-tertiary#1a1a1a
tertiary-container#e8e8e8
on-tertiary-container#2d2f31
error#ff4d4d
on-error#ffffff
error-container#b3000a
on-error-container#ffb4ab
primary-fixed#d1d4fa
primary-fixed-dim#a8aee8
on-primary-fixed#0b0d10
on-primary-fixed-variant#1e40af
secondary-fixed#fdf7fe
secondary-fixed-dim#e8c9b8
on-secondary-fixed#5a250a
on-secondary-fixed-variant#d5691f
tertiary-fixed#e8e8e8
tertiary-fixed-dim#cccbcb
on-tertiary-fixed#1a1a1a
on-tertiary-fixed-variant#68686a
background#090a0c
on-background#f7f7f7
surface-variant#2d2f31

Typography

display
fontFamily: Inter, ui-sans-serif, system-ui, sans-serif · fontSize: 84px · fontWeight: 600 · lineHeight: 92px · letterSpacing: -0.04em
headline-lg
fontFamily: Inter, ui-sans-serif, system-ui, sans-serif · fontSize: 40px · fontWeight: 600 · lineHeight: 48px · letterSpacing: -0.02em
headline-md
fontFamily: Inter, ui-sans-serif, system-ui, sans-serif · fontSize: 28px · fontWeight: 600 · lineHeight: 36px · letterSpacing: -0.01em
title-lg
fontFamily: Inter, ui-sans-serif, system-ui, sans-serif · fontSize: 20px · fontWeight: 600 · lineHeight: 28px
body-lg
fontFamily: Inter, ui-sans-serif, system-ui, sans-serif · fontSize: 18px · fontWeight: 400 · lineHeight: 28px
body-md
fontFamily: Inter, ui-sans-serif, system-ui, sans-serif · fontSize: 16px · fontWeight: 400 · lineHeight: 24px
label-md
fontFamily: Inter, ui-sans-serif, system-ui, sans-serif · fontSize: 14px · fontWeight: 600 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: Inter, ui-sans-serif, system-ui, sans-serif · fontSize: 12px · fontWeight: 700 · lineHeight: 16px · letterSpacing: 0.05em

Design guidance

Overview

Huly is a technical-first, open-source platform designed for distributed engineering teams who demand both power and clarity. The design system embodies "Electric Minimalism"—a dark-mode aesthetic anchored by a near-black canvas (#090a0c) that recedes into the background, allowing electric blue accents (#3b82f6) and warm orange highlights (#ff8964) to command attention on critical interactions. The brand personality is direct, precise, and unadorned: every pixel serves function. The UI speaks in the language of developers and product managers—no flourish, no apology, just clarity. Voice example: "Sync your GitHub repos. Track issues. Collaborate in real-time. No context switching."

Colors

The color system operates on a principle of maximum contrast and intentional restraint. Primary (#3b82f6, electric blue) is reserved exclusively for interactive elements—buttons, links, focus states, and the hero gradient accent. It appears sparingly but with high impact, often paired with a subtle glow (box-shadow: 0 0 20px rgba(59, 130, 246, 0.3)) to signal interactivity in the dark environment. Secondary (#ff8964, warm orange) is used for alerts, badges, and secondary CTAs, creating visual hierarchy without competing for attention. The surface stack is deeply dark: surface (#090a0c) is the page background, surface-container (#171a1f) lifts cards and panels, and surface-container-highest (#2f3238) is reserved for modals and elevated surfaces. On-surface (#f7f7f7) provides text contrast a

Typography

The type system uses Inter as the primary typeface, chosen for its geometric clarity and excellent screen rendering at all weights. Display (84px, 600 weight, -0.04em letter-spacing) is reserved for hero headlines and commands attention through scale and negative space. Headline-lg (40px, 600 weight) and headline-md (28px, 600 weight) structure page sections and card titles. Body-lg (18px, 400 weight, 28px line-height) and body-md (16px, 400 weight, 24px line-height) handle descriptive copy and UI labels. Label-md (14px, 600 weight) and label-sm (12px, 700 weight, 0.05em letter-spacing) are used for buttons, badges, and form labels. All headlines use negative letter-spacing (-0.02em to -0.04em) to tighten the visual weight and reinforce the technical aesthetic. Body text maintains 1.5x lin

Layout

The layout uses a 12-column grid with a max-width of 1280px, centered on the viewport. The hero section spans full-width with a dynamic gradient background (blue to purple to orange) that creates visual energy without competing with content. Gutter spacing is 24px on desktop, collapsing to 12px on mobile. Section separation uses lg spacing (40px) for breathing room between major content blocks. Cards and containers use md spacing (24px) for internal padding, with sm spacing (12px) between nested elements. The design favors generous whitespace—no cramping of elements. Container-max-width of 1280px ensures readability on ultra-wide displays while maintaining focus. Fluid typography scales proportionally on smaller viewports, with display text reducing from 84px to 48px on mobile. The grid is

Elevation & Depth

Depth is conveyed through layering and subtle shadows rather than dramatic drop-shadows. Level 1 (Base): the page background (#090a0c) with optional subtle grain texture. Level 2 (Standard Card): surface-container (#171a1f) with a 1px border at outline-variant (#3d3f42) and box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08). Level 3 (Elevated/Modal): surface-container-highest (#2f3238) with a 1px border at outline (#68686a) and box-shadow: 0 16px 40px rgba(0, 0, 0, 0.12). Interactive elements (buttons, links) use a glow effect: box-shadow: 0 0 20px rgba(59, 130, 246, 0.3) on hover, intensifying to 0 0

Shapes

The shape philosophy is "Technical Precision with Approachability." Buttons use full radius (9999px) to signal primary actions and create a friendly, modern feel despite the dark aesthetic. Cards and containers use lg radius (1rem / 16px) for a softer, less rigid appearance. Input fields and secondary UI elements use DEFAULT radius (0.5rem / 8px) for a more technical, grid-aligned feel. Modals and elevated surfaces use xl radius (1.5rem / 24px) to create visual separation from the base layer. The rationale: full-radius buttons stand out as the most important interactive elements, while smaller

Components

Action Elements Buttons are the primary interaction pattern. Button-primary uses primary (#3b82f6) with full radius (9999px), padding 12px 64px, and a glow shadow (0 0 20px rgba(59, 130, 246, 0.3)). On hover, the background shifts to #60a5fa and the glow intensifies (0 0 32px rgba(59, 130, 246, 0.5)) with a 200ms transition. On active, the background darkens to #1e40af and the glow reduces (0 0 12px rgba(59, 130, 246, 0.2)). Button-secondary uses a transparent background with a 1px border at outline (#68686a), text color primary (#3b82f6), and lg radius (1rem). On hover, the background becomes surface-container-high (#24272d) and the border shifts to primary. All buttons use label-md typography (14px, 600 weight) and a minimum height of 48px for touch targets.

Containers & Surface

Do's and Don'ts

**Do**

  • Do use primary (#3b82f6) exclusively for interactive elements—buttons, links, focus states, and the hero gradient. Never use it for backgrounds or body text.
  • Do maintain the dark surface stack (#090a0c → #171a1f → #2f3238) to create depth through layering, not color shifts.
  • Do apply glow shadows (0 0 20px rgba(59, 130, 246, 0.3)) to interactive elements on hover to signal interactivity in the dark environment.
  • Do use full radius (9999px) on primary buttons and lg radius (1rem) on cards to balance technical precision with approachability.
  • Do pair small labels (label-sm) with text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) when layered over gradients to maintain readability.

**Don't**

  • Don't use mid-tone grays for depth; instead, layer the surface stack (surface-container-low, surface-container, surface-container-high) to create visual hierarchy.
  • Don't apply primary color to non-interactive elements like badges, dividers, or background fills—reserve it for CTAs and focus states only.
  • Don't use sharp corners (0px radius) on any interactive element; the minimum is DEFAULT radius (0.5rem / 8px).
  • Don't exceed 200ms transition duration on hover states; keep interactions snappy and responsive.
  • Don't use secondary (#ff8964) for primary CTAs; it's reserved for alerts, badges, and secondary actions to maintain visual hierarchy.