No description
Find a file
2026-05-23 23:43:08 +09:00
assets first commit 2026-05-23 11:59:45 +09:00
preview first commit 2026-05-23 11:59:45 +09:00
screenshots first commit 2026-05-23 11:59:45 +09:00
ui_kits feat: accounts and history pages are in place 2026-05-23 23:43:08 +09:00
uploads first commit 2026-05-23 11:59:45 +09:00
colors_and_type.css first commit 2026-05-23 11:59:45 +09:00
README.md first commit 2026-05-23 11:59:45 +09:00
SKILL.md first commit 2026-05-23 11:59:45 +09:00

Akefin Design System

A precision finance design system for Akefin — a multi-entity personal & business accounting platform for a solo consultant operating across South Korea (KRW), Turkey (TRY), and Japan (JPY).

This system is tuned for a domain where density, trust, and bilingual (Latin + Hangul) text rendering all matter. It draws aesthetic inspiration from pi.dev (the user's stated favourite): a calm, paper-light surface, a grid background, generously-italic serif display type, and crisp monospace data.


Source materials

Source Notes
alkimake/akefin-design-system (private GitHub) Empty at time of writing — this project IS that design system. Re-pull when populated. https://github.com/alkimake/akefin-design-system
uploads/picode_screenshot.png The pi.dev landing page, attached as the aesthetic target
uploads/screenshot-2026-05-22_22-25-21.png pi.dev code-edit interaction view
Akefin brief (in chat) Three legal entities (Personal / 9TFox / Finacode), 3-tier AI categorization, double-entry plain-text ledger output

For future readers / agents: if you have access to the GitHub repo above, pull it before designing — there may be updated components, brand marks, or screenshots not reflected here.


Product context

Akefin automates the import of Korean Toss bank exports, categorizes transactions through a 3-tier AI pipeline (Rules → LLM → Agent), and routes anything unmatched to a human review queue. Final output: plain-text double-entry ledger files, git-versioned for audit.

Primary surfaces:

  • Web dashboard — the daily-driver. Review queue, rule management, ledger overview, import status.
  • Mobile (iOS/Android) — same data, optimised for the review-on-the-go case.

Three independently-tracked entities, always visible as scope:

Badge Entity Scope
Personal Personal finances KR (KRW), TR (TRY), JP (JPY)
9TFox Korean sole trader Consulting income/expenses (KRW)
Finacode Turkish partnership Partner-share only, Wise transfers

Core UI primitives:

  • Confidence chip — green (rules / 100%) → blue (LLM ≥0.85) → amber (0.700.85) → red (<0.70 or unmatched)
  • Tier badge — Rules · LLM · Agent · Unmatched
  • Entity badge — three distinct accent hues, used as scope, never as page tint
  • Account picker — hierarchical, fuzzy-searchable, MRU-aware
  • Ledger preview — monospace two-leg posting confirmation

CONTENT FUNDAMENTALS

Akefin is professional financial-operations software. Copy reflects that.

Voice & tone

  • Authoritative, calm, technical. Never marketing-y, never cute. Closer to a Unix man page than a SaaS dashboard.
  • Specific over generic. "23 transactions staged for review" — not "You have new items".
  • No filler verbs. "Review", "Categorize", "Post" — not "Let's review", "Time to categorize".
  • Domain language is welcome. Use ledger, posting, leg, account, entity, tier, match, unmatched, staged. Don't over-translate accounting terms for a user who lives in them.

Person & address

  • Predominantly imperative ("Approve", "Override", "Promote rule").
  • Where a subject is needed, you (sparingly). Never we. Never your money — say the ledger or this entity.

Casing

  • Sentence case for body, descriptions, table headers, menu items, button labels longer than two words.
  • UPPERCASE small-tracked for tab labels, eyebrow labels, section dividers, status strips — the pi.dev [ READ THE DOCS ]-style chrome.
  • Title Case only for proper nouns (entity names, currency codes, Toss).

Numbers, currency, dates

  • Amounts: always monospace, right-aligned, signed. + 1,240,000 KRW for income, 38,500 KRW for expense. Decimal separator follows locale, but the column aligns on the decimal.
  • Currency code follows the amount, separated by a thin space. Never use the currency symbol alone (₩, ₺, ¥ are ambiguous at a glance across these three).
  • Dates: ISO YYYY-MM-DD in dense data views, 2 Mar 2026 in headers, never 03/02/26.
  • Confidence: two-decimal fixed-point, 0.92, never 92%.

Korean (한국어) handling

  • Hangul appears natively in payee memos (적요) and bank institution names. Don't romanise. Don't translate inline.
  • When showing a translated/AI-inferred name, render it secondary: 이마트 트레이더스 · E-Mart Traders (inferred).

Emoji & decoration

  • No emoji. Anywhere. This is an accounting tool.
  • Decorative iconography is sparse — keep glyphs functional (status, direction, expand/collapse).

Sample copy

Review queue · 23 staged · 4 high-confidence · 19 need attention

2026-03-02 38,500 KRW 스타벅스 강남역점 Personal ★ 0.94 LLM

[ APPROVE ] [ OVERRIDE ] [ SKIP ]

Promote 17 suggested rules · Last import 4 min ago · 9TFox ledger clean


VISUAL FOUNDATIONS

The system is paper-quiet, grid-anchored, type-led. It should feel like a precision instrument from a well-lit study, not a SaaS app.

Surface & background

  • Primary surface: warm cream paper (--bg, #ECE7DC). The default page background.
  • Secondary surface: cool pale ink-grey (--surface, #EBEEF1) for code/data blocks, terminal-style frames, ledger previews. The two-surface contrast is the system's signature.
  • Background grid texture (1px × 1px, ~6% opacity grey lines, 24px spacing) is applied to the page body. This is a load-bearing motif — do not omit.

Type

  • Display serif (italic-leaning): Spectral — substitutes for Plantin MT Pro which pi.dev uses. Headings prefer italic at light weight. (Substitution flagged — please supply Plantin MT Pro woff2 to replace.)
  • Body / UI sans: IBM Plex Sans — used for tab labels, body text, button chrome.
  • Mono / data: JetBrains Mono — all amounts, account paths, dates in dense views, code blocks, ledger postings. Tabular figures are mandatory.
  • Korean (Hangul): IBM Plex Sans KR for chrome, Pretendard for body when Hangul is the primary content. Hangul lines up at slightly larger optical size than Latin.
  • Type ramp lives in colors_and_type.css.

Color

  • Background neutrals first; saturation is reserved for semantic meaning (confidence tiers, entity badges).
  • Three entity hues — Personal (slate teal), 9TFox (rust), Finacode (indigo) — only as badge accent / 4px scope strip, never as a full UI tint.
  • Confidence spectrum: green → blue → amber → red. These are the only "decorative" colors in the chrome.
  • Full palette in colors_and_type.css.

Spacing & density

  • Base unit 4px. Compact density: row height 32px for review-queue lines, 40px for primary list rows, 48px for table headers / page tabs.
  • Inner padding ramp 4 · 8 · 12 · 16 · 24 · 40.
  • Type at 14px / 1.45 line-height for chrome, 13px / 1.4 mono for data tables.

Borders

  • Hairline borders are the primary divider — 1px solid var(--rule) (#D5CFC2 on cream, #D7DCE2 on ink-grey). No shadow-as-divider.
  • Card borders are 1px, never thicker. Border-radius is 2px. Rounded-everything is explicitly not the look.
  • Terminal-style code frames have a 1px border + an inset 1px hairline on the inner edge, mimicking a window chrome.

Shadows

  • Reserved. Use only for popovers, account-picker dropdowns, focus-mode dialogs. Never on cards or inline rows.
  • Single elevation: 0 1px 0 rgba(20,18,12,.04), 0 8px 24px -8px rgba(20,18,12,.16). Soft, paper-shadow, not material.

Corner radii

  • --r-sm: 2px, --r-md: 3px, --r-lg: 4px. Maximum 4px. Pills (--r-pill: 999px) only on confidence chips and tier badges.

Borders, hover, press

  • Hover: cream surfaces darken by ~3% (use color-mix); ink-grey surfaces lighten by ~2%. Text links underline on hover; underline thickness 1px, offset 2px.
  • Press: scale 0.99, never a color flash. Buttons get a 1px inset shadow.
  • Focus: 2px outline in --focus (#3A6FB0), offset 2px. No focus ring removal.

Transparency & blur

  • Used only for modals/popovers' backdrop (rgba(20,18,12,0.32)) and the global command-K palette. No frosted-glass elsewhere.

Animation

  • Minimal and short. Cubic-bezier (0.2, 0, 0.2, 1), durations 80ms (chrome hover), 140ms (popovers), 220ms (modal/tab transitions).
  • No bounces, no springs. A calm, instrument-like motion language. Confidence chips do not pulse, entity badges do not animate in.

Layout rules

  • Fixed top chrome: a 56px header strip (entity scope + global search + status).
  • Optional 240px left navigation rail with collapse to 56px icon strip.
  • Content max-width 1440px; tables and review queue may extend full-bleed inside the rail.

Imagery vibe

  • Almost no photography. If product imagery is needed: cool, sober, well-lit, slight grain, no people, mostly objects. Default to no image and let type do the work.

Iconography vibe

  • Light-weight (~1.25px stroke), monoline, geometric. Lucide is the substitute (see ICONOGRAPHY below).

Dark theme (secondary)

  • A direct inversion: ink black background (#13120F), warm paper foreground. Same hues, same hierarchy. Not the default for the user, but supported.

ICONOGRAPHY

Akefin has no proprietary icon set at time of writing. The system uses Lucide (https://lucide.dev) as the substitute — its 1.25px monoline geometric style matches the calm-instrument aesthetic.

  • Loaded via CDN: https://unpkg.com/lucide@latest
  • Used at three sizes only: 14px (inline chrome), 16px (default UI), 20px (page headers)
  • No filled variants. Stroked only.
  • No emoji. Anywhere.
  • No unicode glyph icons except: ↑ ↓ → (sort + direction), · (separator), (matched), (em-dash, range).
  • The Akefin wordmark is the only branded glyph — it lives at assets/akefin-wordmark.svg and is a small monospaced lockup, see Brand cards in preview/.
  • Three entity marks (Personal, 9TFox, Finacode) are 2-3 letter monograms in mono type with a 4px coloured stripe — see assets/entity-marks.svg.

Flagged substitution: Lucide stands in until an Akefin-native icon set is produced. The closest mono-line set was chosen specifically to match the pi.dev stroke weight.


Index

/
├── README.md                  ← you are here
├── SKILL.md                   ← Claude/Agent Skill entrypoint
├── colors_and_type.css        ← all color + type CSS variables + semantic classes
├── fonts/                     ← webfonts (Spectral, IBM Plex Sans, IBM Plex Sans KR, JetBrains Mono, Pretendard)
├── assets/                    ← logos, entity marks, sample iconography
├── preview/                   ← design-system cards (registered in the Design System tab)
└── ui_kits/
    ├── web/                   ← Akefin web dashboard recreation
    │   ├── README.md
    │   ├── index.html
    │   └── *.jsx
    └── mobile/                ← Akefin mobile (iOS frame) recreation
        ├── README.md
        ├── index.html
        └── *.jsx

Known caveats

  1. Plantin MT Pro (pi.dev's display face) is proprietary — substituted with Spectral from Google Fonts. Please supply the original .woff2 to replace.
  2. The akefin-design-system GitHub repo was empty when this was generated — components here are synthesised from the brief + pi.dev aesthetic, not lifted from existing code.
  3. No real Akefin screenshots were provided. The UI kits are an interpretation of the brief's component inventory, not a recreation of an existing UI. Iterate.
  4. Dark theme is sketched but light is the priority per user preference.