디자인 시스템 갤러리 Redis

Redis

Redis Red 데이터 스택 + 상단 워크스페이스 내비게이션 + 실시간 키 브라우저

서양개발 도구인프라따뜻한modern-minimal고딕comfortablesoftflat라이트다크공식한글 지원출시 2009개정 2025

갤러리에서 열기 — 적용 예시 · 가이드 다운로드

Brand DNA

브랜드 DNA

  • 브랜드명: Redis
  • 한 줄 정체성: 초고속 인메모리 키-값 데이터 스토어 — 캐시·세션·큐·랭킹의 사실상 표준
  • 공식 디자인 철학: "Real-time data" — 빠름의 시각화: 큐브 로고 + 명령형 CLI 톤
  • 시그니처 요소 1개: 빨강 6각 큐브(데이터 블록을 쌓은 형상) 로고 + Redis Red(#FF4438) + 짙은 네이비 CLI 콘솔(#0B1B26)의 GET/SET 명령어. PostgreSQL 코끼리, MongoDB 잎과 정반대의 명령행 톤

Tone & Mood

톤 & 무드

  • 핵심 키워드 3개: 빠름, 인메모리, 큐브
  • 무드 설명: 라이트·다크 베이스 모두에서 Redis Red를 단일 강조로 사용한다. 데이터 브라우저와 짙은 네이비 CLI 패널, 모노스페이스 명령어, 얇은 상단 워크스페이스 내비게이션이 빠르고 기술적인 인상을 만든다.
  • 비주얼 스타일: 모던 미니멀
  • 밀도(Density): Comfortable
  • 모서리 성향: Soft (4~6px)
  • 평면성: Flat

Color System

컬러 시스템 (CSS 변수)

:root {
  /* Primary - Redis Red */
  --color-primary-50:  #FFE3E0;
  --color-primary-100: #FFB6AE;
  --color-primary-200: #FF8A7D;
  --color-primary-300: #FF6555;
  --color-primary-400: #FF5345;
  --color-primary-500: #FF4438;   /* Redis Red */
  --color-primary-600: #DB2C20;
  --color-primary-700: #A81E14;
  --color-primary-800: #75130C;
  --color-primary-900: #460804;

  /* Secondary - Hyper Yellow (브랜드 보조) */
  --color-secondary-500: #DCFF1E;

  /* Neutral */
  --color-neutral-0:    #FFFFFF;
  --color-neutral-50:   #F6F8FA;
  --color-neutral-100:  #ECF0F3;
  --color-neutral-200:  #DDE3E9;
  --color-neutral-300:  #B5C0CB;
  --color-neutral-500:  #8898A4;
  --color-neutral-700:  #5C707A;
  --color-neutral-800:  #2F4350;
  --color-neutral-900:  #091A23;
  --color-neutral-1000: #0B1B26;     /* CLI bg */

  /* Semantic */
  --color-success-bg: #E1F4EA;
  --color-success-fg: #0FA567;
  --color-warning-bg: #FFF3DA;
  --color-warning-fg: #A67000;
  --color-error-bg:   #FFE0DC;
  --color-error-fg:   #DB2C20;
  --color-info-bg:    #E0EEFD;
  --color-info-fg:    #0072CE;

  /* Code (CLI dark) */
  --cli-prompt:  #FF8A7D;
  --cli-str:     #7CDCC9;
  --cli-num:     #FFD479;
  --cli-key:     #B7E0FF;
  --cli-cmt:     #5C707A;

  /* Surface */
  --bg-base:     #FFFFFF;
  --bg-subtle:   #F6F8FA;
  --bg-elevated: #FFFFFF;
  --bg-cli:      #0B1B26;
  --bg-overlay:  rgba(9,26,35,0.50);

  /* Text */
  --text-primary:    #091A23;
  --text-secondary:  #2F4350;
  --text-tertiary:   #5C707A;
  --text-on-primary: #FFFFFF;
  --text-link:       #DB2C20;
  --text-disabled:   #B5C0CB;

  /* Border */
  --border-default: #DDE3E9;
  --border-subtle:  #ECF0F3;
  --border-strong:  #B5C0CB;
  --border-focus:   #FF4438;
}

[data-theme="dark"] {
  --bg-base:     #0B1B26;
  --bg-subtle:   #122735;
  --bg-elevated: #1A3243;
  --text-primary:    #FFFFFF;
  --text-secondary:  #DDE3E9;
  --border-default:  #2F4350;
}

Typography

타이포그래피

  • 폰트 페어링:
    • 영문: Space Grotesk (브랜드) / Inter / Helvetica
    • 코드/CLI: Space Mono / JetBrains Mono / SF Mono
    • 한글: Pretendard / Noto Sans KR
  • 위계:
    • Display: 36px / 700 / 1.15
    • H1: 28px / 700 / 1.2
    • H2: 22px / 600 / 1.3
    • H3: 17px / 600 / 1.35
    • Body Large: 16px / 400 / 1.55
    • Body: 14px / 400 / 1.5
    • Body Small: 12px / 500 / 1.4
    • Code: 13px / 400 / 1.65 mono
    • Caption: 11px / 600 / 1.3

Spacing

스페이싱

  • Base unit: 4px
  • 토큰: ``css --space-xs: 4px; --space-sm: 8px; --space-md: 12px; --space-lg: 16px; --space-xl: 24px; --space-2xl: 32px; --space-3xl: 48px; ``

Border Radius

Border Radius

--radius-none: 0;
--radius-sm: 3px;
--radius-md: 4px;
--radius-lg: 6px;
--radius-xl: 10px;
--radius-full: 9999px;

Shadow / Elevation

Shadow / Elevation

--shadow-none: none;
--shadow-sm: 0 1px 2px rgba(9,26,35,0.06);
--shadow-md: 0 4px 12px rgba(9,26,35,0.08);
--shadow-lg: 0 12px 32px rgba(9,26,35,0.16);
--shadow-red: 0 6px 18px rgba(255,68,56,0.30);

Iconography

Iconography

  • 스타일: Outline (2px)
  • Stroke 굵기: 2px
  • 모서리 처리: Sharp / Soft
  • 추천 라이브러리: Phosphor / Tabler

Component Guide

컴포넌트 가이드

Button

.btn { font: 700 13px/1 'Space Grotesk', Inter, sans-serif; border-radius: 4px; padding: 9px 18px; border: 0; cursor: pointer; letter-spacing: -0.005em; }
.btn-primary { background: var(--color-primary-500); color: var(--text-on-primary); }
.btn-primary:hover { background: var(--color-primary-600); }
.btn-secondary { background: var(--bg-elevated); color: var(--text-primary); border: 1px solid var(--border-strong); }
.btn-cta { background: var(--color-primary-500); color: #fff; padding: 14px 28px; border-radius: 6px; font: 700 16px/1 inherit; box-shadow: var(--shadow-red); }
.btn-cli { background: var(--color-neutral-1000); color: var(--cli-str); padding: 7px 14px; font: 600 12px/1 'Space Mono', monospace; }

Input / CLI

.input { background: var(--bg-elevated); border: 1px solid var(--border-strong); border-radius: 4px; padding: 8px 12px; font: 400 14px/1.4 inherit; color: var(--text-primary); }
.input:focus { border-color: var(--color-primary-500); outline: 2px solid rgba(255,68,56,0.18); }
.cli { background: var(--bg-cli); color: #E1E8EE; padding: 14px 16px; border-radius: 6px; font: 400 13px/1.7 'Space Mono', monospace; }
.cli .prompt { color: var(--cli-prompt); }
.cli .str { color: var(--cli-str); }
.cli .num { color: var(--cli-num); }
.cli .cmt { color: var(--cli-cmt); font-style: italic; }
.cli .out { color: #E1E8EE; }
.cli input { all: unset; flex: 1; color: #E1E8EE; }

Card (Key item)

.key-list { background: var(--bg-subtle); border: 1px solid var(--border-default); border-radius: 6px; padding: 6px; }
.key-item { display: flex; align-items: center; gap: 8px; padding: 5px 10px; border-radius: 4px; font: 500 12px/1.4 inherit; color: var(--text-primary); cursor: pointer; }
.key-item:hover { background: var(--bg-elevated); }
.key-item.active { background: var(--bg-elevated); border: 1px solid var(--color-primary-500); color: var(--text-primary); }
.key-item .type { color: var(--color-primary-500); font-weight: 800; font-family: 'Space Mono', monospace; }
.key-card { background: var(--bg-elevated); border: 1px solid var(--border-default); border-radius: 6px; padding: 14px 16px; }
.key-card .meta { display: flex; gap: 14px; font: 500 12px/1 inherit; color: var(--text-tertiary); margin-top: 6px; }

Badge / Tag

.badge-type-string  { background: rgba(255,68,56,0.12); color: var(--color-primary-700); border-radius: 3px; padding: 2px 7px; font: 700 11px/1.3 'Space Mono', monospace; }
.badge-type-hash    { background: rgba(0,114,206,0.12); color: var(--color-info-fg); border-radius: 3px; padding: 2px 7px; font: 700 11px/1.3 'Space Mono', monospace; }
.badge-type-list    { background: rgba(15,165,103,0.12); color: var(--color-success-fg); border-radius: 3px; padding: 2px 7px; font: 700 11px/1.3 'Space Mono', monospace; }
.badge-type-zset    { background: rgba(166,112,0,0.15); color: var(--color-warning-fg); border-radius: 3px; padding: 2px 7px; font: 700 11px/1.3 'Space Mono', monospace; }
.tag-ttl { background: var(--bg-subtle); color: var(--text-secondary); border: 1px solid var(--border-default); border-radius: 9999px; padding: 2px 8px; font: 700 11px/1.3 'Space Mono', monospace; }

Navigation (Top-level workspace bar)

.workspace-bar { min-height: 52px; display: flex; align-items: center; gap: 24px; padding: 0 20px; background: var(--bg-elevated); border-bottom: 1px solid var(--border-default); }
.workspace-bar .brand { display: inline-flex; align-items: center; gap: 9px; font-weight: 700; white-space: nowrap; }
.workspace-bar .brand svg { width: 28px; height: 26px; color: var(--color-primary-500); }
.workspace-nav { align-self: stretch; display: flex; align-items: stretch; gap: 24px; }
.workspace-nav .item { display: grid; place-items: center; color: var(--text-secondary); border-bottom: 2px solid transparent; font: 650 13px/1 inherit; cursor: pointer; }
.workspace-nav .item:hover { color: var(--text-primary); }
.workspace-nav .item.active { color: var(--text-primary); border-bottom-color: var(--color-primary-500); }
.database-switcher { margin-left: auto; padding: 7px 10px; background: var(--bg-subtle); border: 1px solid var(--border-default); border-radius: 4px; color: var(--text-primary); font: 600 12px/1 'Space Mono', monospace; }

Motion

Motion

--duration-fast: 80ms;
--duration-base: 160ms;
--duration-slow: 260ms;
--ease-out: cubic-bezier(0.25, 0.46, 0.45, 0.94);

Anti-patterns

Anti-patterns

1. 회사 컬러를 #C00 등 어두운 적색으로 표현 금지 — Redis Red(#FF4438) 채도 유지 2. CLI 패널 없이 폼 위주 UI 금지 — 짙은 네이비 콘솔 패널이 정체성 3. 키 타입(String/Hash/List/ZSet) 색 칩 없이 모두 회색 표기 금지 4. 큐브 외 둥근 마스코트 사용 금지 — 6각 큐브 로고가 정체성 5. 본문에 Space Mono 사용 금지 — 본문은 Space Grotesk, 코드/키 이름만 Space Mono

Sources

출처

  1. https://redis.io/
  2. https://redis.io/about/branding/
  3. https://redis.io/docs/latest/develop/tools/insight/release-notes/v.3.0.0/