BrandToPrompt

Apache Design System: Mature Developer-Centric UI

Visit Site

Explore Apache's design system - colors, typography, spacing, and components. Build with the ASF's trusted, developer-focused visual language.

6 min read1,112 words

Brand Identity

Color Palette

Primary
Secondary

Typography

Primary Font
Montserrat
Secondary Font
Open Sans

Design Style

Style
mature, grounded, and functional with purposeful colors and clear typography
Visual Density
grid-disciplined with predictable spacing and generous section padding
Border Style
pill-shaped 30px buttons with 8px rounded cards

Full Analysis

Apache Brand Design System Deep Dive

1. Brand Overview

Apache Software Foundation (ASF) wears its history on its sleeve. This is a brand built around open-source credibility, technical trust, and a sprawling ecosystem of projects. The design feels like it’s speaking to developers, contributors, and technical decision-makers rather than consumers. It’s not chasing flashy trends — it’s grounded, functional, and a little formal.

The vibe: mature, authoritative, but with a touch of personality. The feather logo and purple accents soften what could otherwise be a very corporate aesthetic. It’s a reminder — Apache isn’t a faceless enterprise; it’s a community-driven foundation.

Philosophically, the site leans into clarity over ornamentation. Colors are purposeful. Typography is chosen for readability and hierarchy rather than whimsy. You’ll see Montserrat for big statements and Open Sans for body copy — both safe, cross-platform, web-friendly typefaces that don’t fight the content. The grid is straightforward. Spacing is predictable. Buttons are pill-shaped, which is an interesting choice given the otherwise square-ish foundations of the layout.

The audience is technical but broad: project maintainers, corporate partners, and curious newcomers. Apache’s design system needs to handle everything from dense documentation to event promotions. That’s why you’ll see a wide palette of grays and whites for neutral surfaces, with pops of brand purple and occasional red for emphasis.

It’s not trying to emulate Silicon Valley startup minimalism. It’s more like: “We’ve been here for decades. We know what works. Here’s the information you need, clearly presented.” And that works, because the ASF brand is built on trust and longevity, not novelty.


2. Color System

2.1 Primary Colors

The primary semantic color is rgb(40, 38, 97) — normalized as #282661. This deep, muted indigo is serious but not cold. It feels authoritative without being black, and it’s less aggressive than pure blue. In UI terms, it’s a solid choice for primary backgrounds and event info blocks (as the data shows).

Compared to other open-source brands (think Python’s bright blues or Node.js’s greens), Apache’s primary is darker and richer. It signals stability and maturity. It’s not screaming for your attention; it’s holding the frame.

2.2 Complete Palette

Color NameHexRoleUsage
Dark Gray#333333Neutral text/backgroundLogo row, lower header, navbar header
White#ffffffBackground, textHeader banner, buttons, hero sections
Brand Purple#7c297dAccent, CTA backgroundsHeader banner, logo, buttons
Light Gray#ddddddNeutral surfacesGeneric backgrounds
Medium Gray#555555Secondary textGeneric elements
Primary Indigo#282661Primary brand colorEvent info, bg-primary
Accent Red#d22128Alert/accentNot specified
Deep Indigo#302d73Hover/focus stateHover/focus elements
CSS Orange Var#DD552CFunctional accentDefined in CSS variables

2.3 Color Relationships

The white (#ffffff) against primary indigo (#282661) gives strong contrast — comfortably above WCAG AA for normal text. Purple (#7c297d) against white is also high-contrast, but purple against dark gray (#333333) could dip in accessibility, depending on font weight and size.

Apache’s palette is not built for dark mode by default — too many elements assume white backgrounds. But the dark indigo could form the basis of a dark variant if needed.

2.4 Usage Guide

  • Works well: White text on primary indigo, white text on brand purple, brand purple buttons on white backgrounds.
  • Avoid: Brand purple text on dark gray — low contrast.
  • Accent red (#d22128) should be reserved for alerts or urgent CTAs; overuse would dilute its impact.
  • Keep grays (#333333, #555555, #dddddd) for text and neutral surfaces; don’t mix them arbitrarily.

3. Typography

3.1 Font Families

Two main families:

  • Montserrat: Headings, large display text, some captions. Fallbacks: "Source Sans Pro, Helvetica Neue, Helvetica, Arial". No variable fonts detected.
  • Open Sans: Body text, buttons, smaller headings. Same fallback stack.

No Google Fonts or Adobe Fonts are loaded dynamically (per data). Likely self-hosted or CDN-based.

3.2 Type Scale

ElementFontSizeWeightLine Height
H1 (large)Montserrat72px (4.50rem)7001.10
Link (large)Montserrat63px (3.94rem)7001.00
H1Montserrat46.8px (2.92rem)7001.10
H1Montserrat46.8px (2.92rem)6001.10
H1Montserrat27px (1.69rem)6001.10
H1Open Sans20px (1.25rem)7001.35
H1Montserrat19.8px (1.24rem)4001.20
H1Open Sans18px (1.13rem)4001.50
LinkOpen Sans18px (1.13rem)4001.50
H1Montserrat18px (1.13rem)6001.10
LinkOpen Sans18px (1.13rem)7001.50
ButtonOpen Sans16px (1.00rem)7001.43
H1Open Sans14.4px (0.90rem)7001.88
LinkOpen Sans14.4px (0.90rem)7001.88
ButtonOpen Sans14.4px (0.90rem)6001.39
H1Open Sans14.4px (0.90rem)6001.39
H1Glyphicons Halflings14.4px (0.90rem)4001.00
LinkOpen Sans14px (0.88rem)4001.43
ButtonOpen Sans14px (0.88rem)7001.43
CaptionMontserrat14px (0.88rem)7001.10
Buttonsystem11.2px (0.70rem)4002.41

3.3 Hierarchy

Montserrat’s bold weights at large sizes create strong anchors — section titles, hero headlines. Open Sans fills in for body copy and functional UI text. The scale steps are tight at small sizes (14px, 14.4px, 16px, 18px) to maintain legibility, especially in dense content areas.


4. Spacing & Layout

4.1 Spacing Scale

Base: 8px scale, but with 4px and 5px increments for micro-adjustments.

ValueRemCountUse
4px0.25rem2Micro gaps
4.5px0.28rem4Fine-tuning
5px0.31rem67Common inline spacing
8px0.50rem2Small component padding
9px0.56rem2Rare adjustments
10px0.63rem178Button padding, small gaps
15px0.94rem60Button horizontal padding
16px1.00rem4Standard gap
18px1.13rem22Medium gaps
20px1.25rem30Section gaps
36px2.25rem1Large spacing
40px2.50rem3Section padding
50px3.13rem9Hero spacing
60px3.75rem19Large section padding
63.6px3.98rem2Specific layout
83.4px5.21rem5Large vertical rhythm
100px6.25rem12Hero/banner spacing
103.2px6.45rem2Specific hero layout

4.2 Layout

Breakpoints are set for typical responsive tiers:

  • 414px, 480px — small mobile
  • 600px — large mobile
  • 767px, 768px — tablet
  • 800px — small desktop
  • 991px, 992px — mid desktop
  • 1199px, 1200px — large desktop

5. Visual Elements

Border Radius

ValueCountComponents
0px 0px 10px 10px7Menu, search
0px 3px 3px 0px2Anchors
1px3Span
5px7Buttons
8px49Inputs, buttons, divs, cards, images
30px10Buttons
50%1Span

The 30px radius on buttons gives a pill shape — consistent across primary and secondary buttons.

Shadows

  • rgba(0, 0, 0, 0.2) 0px 5px 15px 0px — common card/container shadow
  • rgba(0, 0, 0, 0.176) 0px 6px 12px 0px — subtler elevation
  • rgba(0, 0, 0, 0.2) 0px 3px 10px 0px — rare usage

Borders

  • White 1px solid — cards
  • Gray 1px solid (#808080) — menu/search
  • Mixed dashed/solid — spans
  • Light gray 2px solid (#eeeeee) — inputs

6. Components

6.1 Buttons

Primary (.btn)
Default:

  • Background: #7c297d
  • Color: #ffffff
  • Padding: 8px 15px
  • Radius: 30px
  • Border: none
  • Font weight: 700, size: 14px

Hover:

  • Color: var(--pagefind-ui-primary)
  • Background: var(--color-purple)
  • Opacity: 0.7

Active:

  • Background: transparent
  • Color: #ffffff

Focus:

  • Color: var(--color-purple)
  • Box shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px rgb(231,107,124)
  • Opacity: 0.9

Secondary (.btn.btn--white)
Default:

  • Background: #ffffff
  • Color: #7c297d
  • Padding: 10px 20px
  • Radius: 30px
  • Font weight: 700, size: 16px

States mirror primary.

Four variants with different default/hover behaviors:

  1. White text, underline → hover removes underline
  2. Purple text, underline → hover white text
  3. Dark gray text, no underline → hover white text
  4. Light gray text, underline → hover white text

6.3 Forms

Minimal input styles detected. One 2px solid #eeeeee border example. Radius often 8px.

6.4 Cards

White borders (1px) and shadows (rgba(0,0,0,0.2) 0px 5px 15px 0px). Padding values not explicitly in data but likely from spacing scale (15px, 20px).


7. Design Tokens (CSS Custom Properties)

:root {
  /* Colors */
  --color-dark-gray: #333333;
  --color-white: #ffffff;
  --color-purple: #7c297d;
  --color-light-gray: #dddddd;
  --color-medium-gray: #555555;
  --color-primary-indigo: #282661;
  --color-accent-red: #d22128;
  --color-deep-indigo: #302d73;
  --color-orange: #DD552C;

  /* Typography */
  --font-montserrat: "Montserrat", "Source Sans Pro", "Helvetica Neue", Helvetica, Arial;
  --font-open-sans: "Open Sans", "Source Sans Pro", "Helvetica Neue", Helvetica, Arial;
  --font-glyphicons: "Glyphicons Halflings";

  /* Spacing */
  --space-4: 4px;
  --space-4-5: 4.5px;
  --space-5: 5px;
  --space-8: 8px;
  --space-9: 9px;
  --space-10: 10px;
  --space-15: 15px;
  --space-16: 16px;
  --space-18: 18px;
  --space-20: 20px;
  --space-36: 36px;
  --space-40: 40px;
  --space-50: 50px;
  --space-60: 60px;
  --space-63-6: 63.6094px;
  --space-83-4: 83.4062px;
  --space-100: 100px;
  --space-103-2: 103.203px;

  /* Border Radius */
  --radius-none: 0;
  --radius-sm: 1px;
  --radius-md: 5px;
  --radius-lg: 8px;
  --radius-xl: 30px;
  --radius-round: 50%;

  /* Shadows */
  --shadow-lg: rgba(0,0,0,0.2) 0px 5px 15px 0px;
  --shadow-md: rgba(0,0,0,0.176) 0px 6px 12px 0px;
  --shadow-sm: rgba(0,0,0,0.2) 0px 3px 10px 0px;
}

8. AI Coding Assistant Prompt

# Apache Design System Specification

You are an Apache design expert. Build UIs matching their visual language exactly.

## Brand Context
Apache Software Foundation's visual identity is mature, community-driven, and functional. Colors are purposeful, typography is clear, and components are built for both technical and promotional contexts. The design balances authority with a touch of warmth via purple accents.

## Color Palette
- Dark Gray: #333333 — Neutral text/background in headers and navigation
- White: #ffffff — Page backgrounds, text on dark surfaces
- Brand Purple: #7c297d — CTA backgrounds, logo, accents
- Light Gray: #dddddd — Neutral surfaces
- Medium Gray: #555555 — Secondary text
- Primary Indigo: #282661 — Event info blocks, primary brand areas
- Accent Red: #d22128 — Alerts, urgent CTAs
- Deep Indigo: #302d73 — Hover/focus states
- Orange: #DD552C — Functional accent in CSS variable

## Typography
Font families:
- Headings: "Montserrat", "Source Sans Pro", "Helvetica Neue", Helvetica, Arial
- Body/UI: "Open Sans", "Source Sans Pro", "Helvetica Neue", Helvetica, Arial
- Icons: "Glyphicons Halflings"

Type scale:
| Element | Size | Weight | Line Height | Use |
|---------|------|--------|-------------|-----|
| H1 Large | 72px | 700 | 1.10 | Hero titles |
| Link Large | 63px | 700 | 1.00 | Hero links |
| H1 | 46.8px | 600-700 | 1.10 | Section titles |
| Subhead | 27px | 600 | 1.10 | Subsection titles |
| Body L | 20px | 700 | 1.35 | Emphasized body |
| Body M | 18px | 400-700 | 1.50 | General body |
| Caption | 14px | 700 | 1.10 | Labels/captions |
| Button | 14-16px | 600-700 | 1.39-1.43 | CTAs |

## Spacing & Grid
Base: 8px grid, with micro-steps (4px, 5px).
Tokens: 4px, 4.5px, 5px, 8px, 9px, 10px, 15px, 16px, 18px, 20px, 36px, 40px, 50px, 60px, 63.6px, 83.4px, 100px, 103.2px.
Map:
- Button padding: 8px/15px or 10px/20px
- Card padding: 15px or 20px
- Section gaps: 40px, 60px, 100px

## Border Radius
- none: 0 — menus, search boxes
- sm: 1px — spans
- md: 5px — small buttons
- lg: 8px — inputs, cards
- pill: 30px — buttons
- full: 50% — round icons

## Shadows & Depth
- Large: rgba(0,0,0,0.2) 0px 5px 15px 0px — cards
- Medium: rgba(0,0,0,0.176) 0px 6px 12px 0px — subtle elevation
- Small: rgba(0,0,0,0.2) 0px 3px 10px 0px — rare

## Component Specifications

### Primary Button (.btn)
Default:
- background: #7c297d
- color: #ffffff
- padding: 8px 15px
- border-radius: 30px
- font-weight: 700
- font-size: 14px
Hover:
- background: var(--color-purple)
- color: var(--pagefind-ui-primary)
- opacity: 0.7
Active:
- background: transparent
- color: #ffffff
Focus:
- color: var(--color-purple)
- box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px rgb(231,107,124)
- opacity: 0.9

### Secondary Button (.btn.btn--white)
Default:
- background: #ffffff
- color: #7c297d
- padding: 10px 20px
- border-radius: 30px
- font-weight: 700
- font-size: 16px
States: same as primary.

### Navigation Links
Variant behaviors:
- White text + underline → hover removes underline
- Purple text + underline → hover switches to white text
- Dark gray text, no underline → hover white text
- Light gray text + underline → hover white text

### Input Fields
- Border: 2px solid #eeeeee
- Radius: 8px
- Background: white
- Focus: change border color to brand accent (not specified), remove outline

### Cards
- Border: 1px solid #ffffff
- Shadow: rgba(0,0,0,0.2) 0px 5px 15px 0px
- Radius: 8px
- Padding: 15px or 20px

## Layout & Responsive Rules
Breakpoints:
- 414px, 480px — mobile
- 600px — large mobile
- 767px, 768px — tablet
- 800px — small desktop
- 991px, 992px — desktop
- 1199px, 1200px — large desktop

## Interaction Rules
- Transition: 150ms ease for state changes
- Focus indicators: visible color change + shadow
- Loading states: maintain button size, swap label with spinner

## DO List
- Use only defined palette colors
- Maintain 8px grid with allowed micro-steps
- Use Montserrat for headings, Open Sans for body
- Keep button radius consistent at 30px
- Reserve accent red for alerts
- Ensure text contrast meets WCAG AA

## DON'T List
- Don’t invent new colors
- Don’t mix sharp and rounded corners in same component
- Don’t overload pages with shadows
- Don’t reduce button padding below 8px vertically
- Don’t use brand purple for large text on dark backgrounds

## Code Examples

### Primary Button
```css
.btn {
  background: #7c297d;
  color: #ffffff;
  padding: 8px 15px;
  border-radius: 30px;
  font-weight: 700;
  font-size: 14px;
  border: none;
  transition: background 150ms ease;
}
.btn:hover {
  background: var(--color-purple);
  color: var(--pagefind-ui-primary);
  opacity: 0.7;
}
.btn:focus {
  color: var(--color-purple);
  box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px rgb(231,107,124);
  opacity: 0.9;
}
```

### Secondary Button
```css
.btn--white {
  background: #ffffff;
  color: #7c297d;
  padding: 10px 20px;
  border-radius: 30px;
  font-weight: 700;
  font-size: 16px;
}
.btn--white:hover {
  background: var(--color-purple);
  color: var(--pagefind-ui-primary);
  opacity: 0.7;
}
```

### Card
```css
.card {
  background: #ffffff;
  border: 1px solid #ffffff;
  border-radius: 8px;
  box-shadow: rgba(0,0,0,0.2) 0px 5px 15px 0px;
  padding: 15px;
}
```

9. Summary

TL;DR: Apache’s design system is grounded, technical, and community-oriented. Strong indigo and purple anchor the brand, Montserrat and Open Sans deliver hierarchy and clarity, and pill-shaped buttons add a friendly touch to an otherwise serious layout.

Brand Keywords:

  • mature-technical
  • purple-accented
  • community-trust
  • grid-disciplined
  • developer-friendly