Back to projects

Design System

Mobile-first, multi-brand, AI-powered

SwiftUI Kotlin KMP React Figma AI
Role Solo Developer & Designer
Timeline 2024 - Present
Platform iOS (SwiftUI), Android (Kotlin), KMP, Web

Why build a design system from scratch?

After years of building mobile apps across iOS, Android, and the web, I kept running into the same problem: inconsistent UI, duplicated effort, and brand-specific tweaks that turned into maintenance nightmares. I wanted a single source of truth that could power any app, on any platform, in any brand.

So I built one. From the ground up.

80+ components, native on iOS and Android

The design system includes over 80 production-ready components covering every common pattern: buttons, text fields, cards, lists, navigation bars, modals, carousels, charts, and more. Each component is implemented natively on mobile first, then extended to other platforms:

  • iOS with SwiftUI, distributed as a Swift Package (SPM), targeting iOS 16+
  • Android with Kotlin and Jetpack Compose, following Material 3 patterns
  • Shared logic via Kotlin Multiplatform (KMP) for cross-platform business rules
  • Web with React and CSS custom properties as a secondary target

Components are not thin wrappers. They are highly customizable through enums for variants, styles, sizes, and states. A single DSButton supports six visual styles (filledA, filledB, filledC, neutral, outlined, text), three sizes, leading and trailing icons, loading states, and full accessibility labeling.

Multi-brand theming engine

The real power is in the theming layer. Four built-in brand palettes ship out of the box: Coral Camo (forest green + coral), Sea Lime (navy + lime), Misty Rose (slate blue + pink), and Blue Haze (royal blue + beige). Switching brands is a single line of code at the app root, and every component updates automatically.

Need a completely custom brand? Pass a primary and secondary color, and the system derives all shades automatically: opacity variants for backgrounds, darkened variants for hover and pressed states, and contrast-safe text colors. No component code changes required.

Design system component library

Token system

Every visual property flows through a strict token system:

  • Spacing with a scale from xxs (4px) to xxxxl (64px)
  • Typography with 12 named styles from small (12px) to display (48px)
  • Radius tokens from xs to xxl for consistent rounding
  • Colors organized into surface, text, and border groups, each with numbered shades

No magic numbers. No hardcoded hex values. Every pixel traces back to a named token, making global adjustments trivial and platform consistency automatic.

1,300+ icons from Figma

The icon library contains over 1,300 vector icons imported directly from the Figma source file. Every icon is normalized to a 24x24 viewBox, centered precisely, and optimized for crisp rendering at any size. The import pipeline is fully automated: a script pulls SVGs from Figma, normalizes transforms, generates Swift enum cases, and bundles everything into the SPM package.

Multi-brand theming in action

Figma-to-code pipeline

The Figma source file contains all components as proper Component Sets with variants, auto-layout, and design tokens bound to variables. An AI-assisted pipeline reads Figma design context output (React + Tailwind with CSS variables), maps every property to the correct Swift/Kotlin token, and generates production code.

This is not a loose approximation. The pipeline enforces a zero-hallucination policy: every font size, every padding value, every color must be read directly from the Figma data. If a value is not in the design context, the pipeline stops and asks rather than guessing.

AI-accelerated development

The development workflow integrates Claude Agent SDK with custom MCP servers for Figma access, enabling a tight loop between design and code. AI tools handle the tedious mapping work (CSS variables to Swift tokens), run automated quality checks against screenshots, and flag visual regressions. This cuts component development time dramatically while maintaining pixel-perfect accuracy.

What I learned

Building a design system is an exercise in discipline. The hardest part is not writing the components. It is maintaining consistency across platforms, enforcing token usage, and resisting the temptation to add one-off overrides. The investment pays for itself every time a new app screen goes from Figma to production in minutes instead of hours.