linh pham / projects / internal design system

PROJECT 05 · 2024 / IN-HOUSE

Internal Design System

社内デザインシステム

A reusable base for admin dashboards and in-house products.

A simple, scalable design system built for internal product teams. Centralized tokens, multi-platform UI components, and a documented style guide that gave new designers a working base on day one — and gave engineers components they could ship without re-deciding.

Role UI / UX Designer · Design system lead
Year 2024
Team 4 designers
Location Fukuoka · Office + Remote
Design Figma
Management Notion · Slack · Backlog

// system architecture — atomic design

01

Tokens

Color, spacing, type, radius, shadow. The source of truth.

color/*space/*font/*radius/*

02

Atoms

The smallest reusable parts. Built only from tokens.

ButtonInputLabelBadgeIcon

03

Molecules

Common groupings. Form fields, tabs, table rows.

FormFieldTabsTableRowCard

04

Templates

Page-level patterns for admin dashboards.

List + FilterDetailSettingsEmpty

TL;DR

PROBLEM

Every new admin-dashboard project started from scratch. Components were reinvented, tokens were guessed, and designers and engineers talked past each other every sprint.

WHAT I DID

Built a centralized design system: tokens for color, spacing, and type; 30+ atomic components in Figma with matching code; and a Notion-based documentation hub to keep it all in sync.

OUTCOME

Adopted across multiple in-house products and admin dashboards. New designers get up to speed in hours, not days. One source of truth — no more guesswork.

01 · CONTEXT

A team that ships, often.

Our team supports both in-house products and internal business tools — most projects involve admin dashboards with similar shapes: list views, filters, detail pages, form-heavy settings, and role-based access. The same patterns recurred from project to project, but every new initiative was being designed from a blank Figma file.

Four designers, varying tenure, multiple parallel projects. The cost was showing up as inconsistent UI across products, slow onboarding for designers joining mid-project, and decisions being relitigated in design reviews.

02 · PROBLEM

Three problems, one root cause.

Three problems kept showing up across projects, and all three pointed at the same missing layer: a shared, documented system that anyone could pull from.

Inconsistent UI

Buttons, inputs, tables, and modals were made slightly differently, and the differences compounded across screens.

Slow onboarding

Designers joining mid-stream had to reverse-engineer existing screens to find the patterns.

Engineering friction

Each project asked engineers to rebuild the same components in slightly different ways.

03 · APPROACH

Simple enough to actually use.

Design systems fail when they are either too ambitious or too vague. The brief: build something simple enough that a designer would actually open it instead of a blank Figma file.

Audit before building

Pulled screens from three active admin-dashboard projects and tagged every repeated pattern.

Tokens first

Color, spacing, type, radius, and shadow tokens were defined before a single button got drawn.

Document decisions

Notion holds the why; Figma holds the how. A new designer reads Notion for context and opens Figma for assets.

04 · VISUAL DIRECTION

Restraint, on purpose.

The system is deliberately quiet. Admin dashboards live with their users for hours a day — visual restraint reduces cognitive load and lets data, not chrome, do the talking.

// color tokens — semantic, not brand

color/primary

Action, focus

#2C6BED

color/surface

Page background

#FAFAF7

color/raised

Cards, tables

#F2F0E8

color/border

Dividers, outlines

#D8D7D2

color/text/primary

Body, headings

#0A0A0A

color/text/secondary

Captions, meta

#4A4A47

color/success

Confirmation

#16A34A

color/danger

Errors, destructive

#DE3A1F

Tokens are named by role, not by appearance: color/danger, not color/red. The role stays stable even if the hex changes.

// type ramp

font/display

Dashboard overview

font/h1

Section title

font/h2

Subsection

font/body

Default body text used for paragraphs and form labels.

font/small

Captions, helper text, table footnotes.

font/mono

code · IDs · tokens

05 · COMPONENTS

Built once, used everywhere.

The component package focuses on what admin dashboards actually need: structured data, forms, navigation, and clear states. Every component is built from tokens, has documented variants, and ships with usage notes.

Button · 4 variants

Tabs

ラベル
ラベル
ラベル

Card

ラベル
2025/05/20
April 2025
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

Input · default, focus, error

デフォルト
入力中
エラー

Modal samples

延長料金変更する

2,000Pに変更してします。
よろしでしょうか?

06 · DOCUMENTATION

Where the system actually lives.

A design system is only as useful as it is reachable. The tooling split keeps the right artifact in the right place for the right reader.

Design source

Figma

Published component library. Tokens as Figma variables. Each project pulls from a single source; updates propagate downstream.

Documentation

Notion

The why behind each decision: onboarding guide, naming conventions, do / don't pages, and contribution flow.

Tickets & comms

Backlog · Slack

Component requests, issue tracking, and version updates stay visible to engineers and designers in parallel.

Component package: Figma's published library lets designers pull components from the assets panel and stay connected to the source. When a token changes, every instance picks it up.

07 · OUTCOME

Used, not just shipped.

The system was adopted across multiple in-house and admin-dashboard projects, achieved consistency and scalability in production, and contributed to measurable reduction in future design and development load.

4

Designers using the same base on day one

3+

Admin dashboards adopted the system in production

1

Source of truth, replacing per-project rework

08 · REFLECTION

What I'd carry forward.

Start with what already exists.

The system worked because it codified patterns the team already used. New patterns are research artifacts; codified patterns are tools.

Restraint scales; ambition doesn't.

Every component cut from v1 was one less component to maintain. The smallest viable system that actually gets used beats a comprehensive one.