We Design Products
People Love to Use.

The name means what it says. We forge products from the ground up, starting with the structure underneath before anything is visible. Every project ships with a design system built in, so the product holds together as it grows.

Consistent
ACROSS EVERY SCREEN
Scalable
GROWS WITH YOUR PRODUCT
Dark Mode
BUILT IN FROM DAY ONE
Accessible
WORKS FOR EVERYONE
01 · Products

Products We've Built

A few things we've shipped. Different problems, same standards.

02 · Foundation

Brand Identity

The logo, color system, and type scale are all documented here. These are the decisions everything else depends on.

Logo System

FORGE DESIGNS
Full lockup, light
FORGE DESIGNS
Full lockup, dark
F
Mark only, app icon and favicon

Color System

Brand Gold, primary
50
100
200
300
400
500 ★
600
700
800
900
950
Brand Navy, foundation
50
100
200
300
400
500
600
700
800 ★
900
950
Error / Danger
#EF4444
Success
#22C55E
Warning
#F59E0B
AI / Accent
#A855F7

Typography Scale, DM Sans

Display 60px · Black · -3%

Heading 1

48px · ExtraBold

Heading 2

36px · Bold

Heading 3

24px · Semibold

Heading 4

20px · Semibold

Body Large. The quick brown fox jumps over the hill.

18px · Regular

Body. The quick brown fox jumps over the lazy dog.

16px · Regular

Body Small. Supporting text and descriptions.

14px · Regular
Label / Caption text 12px · Medium
OVERLINE TEXT 10px · Semibold · Uppercase
03 · Architecture

How the Design System Works

Every color, size, and spacing value in the product has a name and lives in one place. Change the brand color once and it updates across every button, badge, and header automatically, without touching individual components.

1
The Palette
All your raw colors and sizes

Like paint swatches. Every color, spacing value, and border radius is defined once and given a name.

// Defined once, used everywhere
"gold": {
  "500": "#C9A96E",
  "600": "#B08A4A"
},
"space": {
  "4": "16px"
}
2
Named Roles
What each value is used for

This is where we write down "the primary button color is gold-500." Dark mode just swaps these assignments. Components don't need to know.

/* Light mode */
--action-primary:
  var(--gold-500);

/* Dark mode: swap here only */
.dark {
  --surface-bg:
    var(--navy-900);
}
3
The Components
The actual buttons, cards, inputs

Buttons, forms, and cards reference the named roles. Change one role and every button in the product reflects it.

// Button just uses the name
primary: [
  'bg-[var(--action-primary)]',
  'text-white',
  'hover:opacity-90',
]
Faster to Build

Developers pick from named values instead of guessing. Less back-and-forth, more time building.

Always Consistent

Every screen uses the same values. No more hunting down why two buttons are slightly different shades.

Easy to Update

Swap a color in one place and the whole product reflects it. You don't have to touch individual components.

04 · Components

Component Library

Components built on CVA and semantic tokens. They pick up dark mode and theme changes without extra configuration.

Button

Intent variants
Size variants
With icons
States

Input

Default
With icon
Error state

Must be at least 8 characters

Disabled

This field is auto-assigned.

Card

Default
Surface card
Standard container with 1px border and sm shadow.
Elevated
Elevated card
No border, deep shadow for high-emphasis panels.
Brand
Highlighted card
Tinted brand surface for CTAs or featured content.

Badge

Default Brand Active Error Warning AI-Powered

Spacing System — 4px Grid

4
8
12
16
24
32
48
64
96
CURRENTLY ACCEPTING CLIENTS

Got something
you want to build?

If you have a product you're building or trying to fix, reach out. We can figure out the right approach together.