DigitalOcean Design System Deep-Dive
1. Brand Overview
DigitalOcean’s design language is exactly what you’d expect from a developer-first cloud company—but with a bit more polish than the average “terminal green and monospaced font” aesthetic you see in some tech brands. They’ve nailed a clean, modern, and slightly corporate vibe without losing accessibility for indie developers and startups.
The vibe: trustworthy, straightforward, and just enough personality to feel human. They’re not trying to be flashy. Instead, the design system is built to communicate clarity and ease-of-use—mirroring their product promise: “the simplest cloud platform.”
The color palette is anchored by a strong, saturated blue (#0069ff)—you see it in CTAs, links, and focus states. It’s paired with very deep navy-blacks (#000c2a) for text and UI elements, plus plenty of white space. The supporting grays and slate blues (#4d5b7c, #3e4c6c) give depth without overwhelming. This system is designed for high contrast and easy scanning.
Typography is split between Epilogue for headings (geometric, modern, high impact) and Inter for body copy and UI (clean, readable, familiar). They’ve clearly tuned letter spacing for large displays—note the -1.5px tracking on the largest H1. Headings are bold, body text is regular or medium, and link text is almost always semi-bold for clarity.
Spacing is on an 8px grid with some oddball pixel values (e.g., 70.3906px) that hint at dynamic scaling or responsive calculations. Border radii are consistent, with pills (999px) for circular buttons and 16px for most cards and containers. Shadows are subtle—rgba(0, 12, 42, 0.15) 0px 0px 15px 0px—used sparingly for depth.
Buttons are unapologetically pill-shaped for primaries and slightly rounded for secondaries. Links are underlined on hover (always), and focus states use strong outlines in the brand blue. It’s a system built for clarity over fancy motion or decorative distractions.
If you’re building for DigitalOcean, keep it simple. Emphasize clarity, contrast, and consistent rhythm. This is a developer-trust brand, and the design system reflects that.
2. Color System
2.1 Primary Colors
The hero color is DigitalOcean Blue: #0069ff. It’s everywhere—primary CTAs, link hover states, focus outlines. It’s a bold, saturated blue that screams “click me” without looking cheap. Psychologically, blue is trust, stability, and competence. Compared to AWS’s orange or Azure’s softer blue, DigitalOcean’s blue is more vivid and energetic.
It’s supported by a deep navy (#000c2a) for headings and important text, plus a slate gray (#4d5b7c) for secondary text. White (#ffffff) is the primary background in light mode. Very light grays (#e3e8f4, #eff2fb) are used for dividers and subtle backgrounds.
Accent variants: darker blue #005fcc for hover states, and #1433d6 in some button hovers. This keeps the interaction feedback consistent and brand-aligned.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Black | #000000 | Text/Icons | Pure black for some text and icons |
| Slate Blue | #4d5b7c | Secondary text | Buttons, muted text |
| Navy Black | #000c2a | Primary text | Headings, strong UI elements |
| White | #ffffff | Background/Text | Page background, text on dark |
| DigitalOcean Blue | #0069ff | Primary | CTAs, links, focus outlines |
| Light Gray | #e3e8f4 | Divider | Section dividers, borders |
| Darker Blue | #005fcc | Hover state | Button/link hover background |
| Dim Slate | #3e4c6c | Hover state | Hover backgrounds |
| Ultra Light Gray | #eff2fb | Background hover | Hover states on light backgrounds |
| Dark Navy Transparent | rgba(0,12,42,0.15) | Shadow | Card/button shadows |
| Transparent Navy | rgba(17,25,46,0.1) | Border inset | Input/button focus borders |
2.3 Color Relationships
Contrast is high. #0069ff on #ffffff is well above WCAG AA for normal text. #000c2a over white is extremely legible. Secondary slate blues (#4d5b7c) over white hit AA for large text; they’re mainly used in UI microcopy.
Dark mode isn’t explicitly defined in the extracted data, but the deep navy and slate blues suggest a palette that could invert nicely.
2.4 Usage Guide
Do:
- Use
#0069ffonly for interactive elements. - Use
#000c2afor headings and primary text. - Use
#4d5b7cfor secondary/descriptive text. - Use
#e3e8f4and#eff2fbfor dividers and subtle backgrounds.
Don’t:
- Put
#0069ffon dark backgrounds without white text—it loses clarity. - Use more than two accent colors in the same component.
- Use slate blue for primary actions—it reads as disabled.
3. Typography
3.1 Font Families
- Epilogue – Geometric sans-serif, modern, slightly condensed. Used for headings. No fallbacks specified in data.
- Inter – Highly readable UI font. Used for body, links, buttons, captions. No fallbacks specified, but in production you’d use
Inter, sans-serif. - Inter-Regular and Inter-Bold appear for specific link/caption/button contexts.
No Google Fonts or Adobe Fonts are loaded according to extracted data—likely self-hosted.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| H1 (xl) | Epilogue | 48px | 700 | 1.17 |
| H1 (lg) | Epilogue | 36px | 700 | 1.33 |
| H1 (md) | Epilogue | 24px | 700 | 1.33 |
| H1 (sm) | Epilogue | 20px | 700 | 1.40 |
| Heading | Inter | 20px | 500 | 1.40 |
| Heading | Inter | 18px | 500 | 1.44 |
| Heading | Inter | 18px | 700 | 1.44 |
| Link | Inter | 16px | 400 | 0.00 |
| Body | Inter | 16px | 400 | 1.50 |
| Button | Inter | 16px | 400 | 1.40 |
| Body | Inter | 16px | 500 | 1.50 |
| Link | Inter | 16px | 500 | 1.50 |
| Link | Inter | 16px | 600 | 1.50 |
| Heading | Inter | 16px | 600 | 1.50 |
| Heading | Inter | 16px | 700 | 1.50 |
| Heading | Epilogue | 16px | 600 | 1.50 |
| Link | Epilogue | 16px | 600 | 1.50 |
| Caption | Inter | 14px | 500 | 1.43 |
| Link | Inter | 14px | 500 | 1.50 |
| Caption | Inter | 14px | 700 | 1.43 |
| Caption | Inter | 14px | 600 | 1.43 |
| Link | Inter | 14px | 600 | 1.50 |
| Caption | Inter | 14px | 400 | 1.43 |
| Link | Inter | 14px | 400 | 1.43 |
| Link | Inter-Regular | 14px | 400 | 1.40 |
| Caption | Inter | 12px | 400 | 1.50 |
| Button | Inter-Bold | 12px | 400 | 1.40 (uppercase) |
3.3 Hierarchy
They use Epilogue for big, bold, marketing-facing statements. Inter picks up for functional UI. The line height tightens for large headings (1.17) to keep them compact, and loosens for body (1.50) for easy reading. Weight changes (400 → 700) create a strong visual hierarchy without needing many colors.
4. Spacing & Layout
4.1 Spacing Scale
Base is 8px grid, but with 4px sub-steps. Some unusual fractional values are likely the result of rem/em conversions.
| Pixels | Rem | Count | Use |
|---|---|---|---|
| 1px | 0.06rem | 4 | Hairlines |
| 4px | 0.25rem | 62 | Tight gaps |
| 6px | 0.38rem | 10 | Icon padding |
| 7px | 0.44rem | 2 | Odd spacing, icons |
| 8px | 0.50rem | 36 | Small gaps |
| 11px | 0.69rem | 5 | Niche |
| 12px | 0.75rem | 4 | Tight UI blocks |
| 15px | 0.94rem | 2 | Oddball |
| 16px | 1.00rem | 68 | Body padding |
| 24px | 1.50rem | 8 | Section insets |
| 32px | 2.00rem | 23 | Medium gaps |
| 40px | 2.50rem | 34 | Section spacing |
| 64px | 4.00rem | 4 | Large gaps |
| 70.39px | 4.40rem | 4 | Responsive calc |
| 80px | 5.00rem | 5 | Hero spacing |
| 98.39px | 6.15rem | 2 | Hero spacing |
| 128px | 8.00rem | 14 | Hero padding |
| 182.39px | 11.40rem | 2 | Large hero |
| 202.39px | 12.65rem | 6 | Large hero |
| 230.39px | 14.40rem | 2 | Max hero |
4.2 Layout
Breakpoints:
- 320px, 479px → small mobile
- 719px, 767px, 768px → mobile/tablet
- 1023px, 1024px → tablet/desktop
- 1280px → large desktop
These suggest a mobile-first, fluid layout with key snap points at 768px and 1024px.
5. Visual Elements
Border Radius:
- 4px: Small buttons
- 6px: Small UI elements
- 8px: Cards
- 16px: Most containers, media
- 24px, 32px, 40px: Larger pills, hero images
- 999px: Fully rounded pills and circular buttons
Shadows:
rgba(0, 12, 42, 0.15) 0px 0px 15px 0pxfor depth- Inset outlines for inputs/buttons:
rgb(77, 91, 124) 0px 0px 0px 1px inset,rgba(17, 25, 46, 0.1) 0px 0px 0px 1px inset
Borders:
- Light gray (
#e3e8f4) and white borders used for separation. - Occasionally
rgb(3, 27, 78)for dark dividers.
6. Components
6.1 Buttons
Primary Pill Button:
- Default: bg
#0069ff, text#ffffff, padding1px 6px, radius999px, no border - Hover: bg
#1433d6, text#ffffff, border1px solid #0069ff - Focus: bg
rgba(0, 105, 255, 0.15), text#0069ff, border1px solid transparent, outline2px solid #1433d6 - Weight: 400, size: 16px
Secondary Button:
- Default: bg
#ffffff, text#031b4e, padding6px, radius4px, border1px solid #ffffff - Hover: bg transparent, text
#ffffff, border1px solid #0069ff - Focus: bg
rgba(0, 105, 255, 0.15), text#0069ff, border1px solid transparent - Weight: 400, size: 12px
6.2 Links
Multiple variants:
- White text → hover blue underline
- Light gray text → hover blue underline
- Black text → hover blue underline
- Slate blue text → hover blue underline
- Primary blue text → underline on hover
- Dark navy text → hover blue underline
6.3 Forms
No inputs extracted—likely styled with inset borders and brand blue focus outlines.
6.4 Cards
Shadows: rgba(0, 12, 42, 0.15) 0px 0px 15px 0px
Radius: 16px
Likely 32px internal padding based on spacing scale.
7. Design Tokens
:root {
/* Colors */
--color-black: #000000;
--color-slate-blue: #4d5b7c;
--color-navy-black: #000c2a;
--color-white: #ffffff;
--color-blue-primary: #0069ff;
--color-light-gray: #e3e8f4;
--color-blue-hover: #005fcc;
--color-dim-slate: #3e4c6c;
--color-ultralight-gray: #eff2fb;
--shadow-navy: rgba(0, 12, 42, 0.15);
--inset-navy: rgba(17, 25, 46, 0.1);
/* Typography */
--font-epilogue: "Epilogue", sans-serif;
--font-inter: "Inter", sans-serif;
/* Spacing (px) */
--space-1: 1px;
--space-4: 4px;
--space-6: 6px;
--space-7: 7px;
--space-8: 8px;
--space-11: 11px;
--space-12: 12px;
--space-15: 15px;
--space-16: 16px;
--space-24: 24px;
--space-32: 32px;
--space-40: 40px;
--space-64: 64px;
--space-70: 70.3906px;
--space-80: 80px;
--space-98: 98.3906px;
--space-128: 128px;
--space-182: 182.391px;
--space-202: 202.391px;
--space-230: 230.391px;
/* Border Radius */
--radius-4: 4px;
--radius-6: 6px;
--radius-8: 8px;
--radius-16: 16px;
--radius-24: 24px;
--radius-32: 32px;
--radius-40: 40px;
--radius-pill: 999px;
/* Shadows */
--shadow-card: rgba(0, 12, 42, 0.15) 0px 0px 15px 0px;
--shadow-inset-slate: rgb(77, 91, 124) 0px 0px 0px 1px inset;
--shadow-inset-navy: rgba(17, 25, 46, 0.1) 0px 0px 0px 1px inset;
}8. AI Coding Assistant Prompt
# DigitalOcean Design System Specification
You are a DigitalOcean design expert. Build UIs matching their visual language exactly.
## Brand Context
DigitalOcean’s design system is clean, high-contrast, and developer-focused. It uses bold blues, deep navies, and plenty of white space. Typography is modern and readable, with a clear hierarchy. Components are minimal, with subtle depth and consistent rounded radii.
## Color Palette
- Primary Blue: #0069ff — CTAs, primary buttons, focus outlines
- Dark Navy: #000c2a — Headings, body text
- Slate Blue: #4d5b7c — Secondary text
- White: #ffffff — Backgrounds, text on dark
- Light Gray: #e3e8f4 — Dividers, borders
- Darker Blue: #005fcc — Hover states
- Dim Slate: #3e4c6c — Hover backgrounds
- Ultra Light Gray: #eff2fb — Hover backgrounds
- Black: #000000 — Icons, some text
- Shadow Navy: rgba(0, 12, 42, 0.15) — Card shadows
- Inset Navy: rgba(17, 25, 46, 0.1) — Input/button borders
## Typography
- Headings: "Epilogue", sans-serif
- Body/UI: "Inter", sans-serif
| Level | Size | Weight | Line Height | Use |
|-------|------|--------|-------------|-----|
| H1-xl | 48px | 700 | 1.17 | Hero headings |
| H1-lg | 36px | 700 | 1.33 | Section headings |
| H1-md | 24px | 700 | 1.33 | Sub-headings |
| H1-sm | 20px | 700 | 1.40 | Small section titles |
| Body-lg | 20px | 500 | 1.40 | Feature text |
| Body | 16px | 400-600 | 1.50 | Paragraphs, buttons |
| Caption | 14px | 400-700 | 1.43 | Labels |
| Micro | 12px | 400 | 1.50 | Small UI text |
## Spacing & Grid
Base: 8px. Scale includes: 1px, 4px, 6px, 8px, 11px, 12px, 15px, 16px, 24px, 32px, 40px, 64px, 70.39px, 80px, 98.39px, 128px, 182.39px, 202.39px, 230.39px.
## Border Radius
- sm: 4px — small buttons
- md: 6px, 8px — small UI blocks, cards
- lg: 16px — containers, media
- xl: 24px, 32px, 40px — large pills, hero
- pill: 999px — pill buttons
## Shadows & Depth
- Card shadow: rgba(0, 12, 42, 0.15) 0px 0px 15px 0px
- Inset outlines for inputs/buttons
## Component Specifications
### Primary Button
Default: bg #0069ff, color #ffffff, padding 1px 6px, radius 999px, no border, font-size 16px, weight 400
Hover: bg #1433d6, border 1px solid #0069ff
Focus: bg rgba(0,105,255,0.15), color #0069ff, outline 2px solid #1433d6
### Secondary Button
Default: bg #ffffff, color #031b4e, padding 6px, radius 4px, border 1px solid #ffffff, font-size 12px
Hover: bg transparent, color #ffffff, border 1px solid #0069ff
Focus: bg rgba(0,105,255,0.15), color #0069ff
### Navigation Links
Default: various colors (#ffffff, #ef f2fb, #000000, #4d5b7c, #0069ff, #000c2a), no underline
Hover: color #0069ff, underline
### Cards
bg #ffffff, radius 16px, shadow rgba(0,12,42,0.15) 0 0 15px, padding ~32px
## Layout & Responsive Rules
Breakpoints: 320px, 479px, 719px, 767px, 768px, 1023px, 1024px, 1280px
Mobile-first, adjust padding/gaps at 768px and 1024px
## Interaction Rules
- Transitions: 150ms ease for hover/focus
- Focus outlines: 2px solid brand blue or dark blue
- Hover always changes color and adds underline for links
## DO
- Use only palette colors
- Maintain 8px spacing grid
- Keep text contrast high
- Use Epilogue for headings, Inter for body/UI
- Use pill radius for primary buttons
## DON'T
- Introduce unapproved colors
- Mix sharp and rounded corners in same component
- Use shadows excessively
- Remove hover underline from links
## Code Examples
### Primary Button
```css
.btn-primary {
background: #0069ff;
color: #ffffff;
padding: 1px 6px;
border-radius: 999px;
font-size: 16px;
font-weight: 400;
border: none;
transition: background 150ms ease;
}
.btn-primary:hover {
background: #1433d6;
border: 1px solid #0069ff;
}
.btn-primary:focus {
background: rgba(0, 105, 255, 0.15);
color: #0069ff;
outline: 2px solid #1433d6;
}
```
### Secondary Button
```css
.btn-secondary {
background: #ffffff;
color: #031b4e;
padding: 6px;
border-radius: 4px;
font-size: 12px;
font-weight: 400;
border: 1px solid #ffffff;
}
.btn-secondary:hover {
background: transparent;
color: #ffffff;
border: 1px solid #0069ff;
}
```
### Card
```css
.card {
background: #ffffff;
border-radius: 16px;
box-shadow: rgba(0, 12, 42, 0.15) 0px 0px 15px 0px;
padding: 32px;
}
```9. Summary
TL;DR — DigitalOcean’s design system is built for clarity and trust. Strong blues, deep navies, crisp typography, and an 8px grid keep everything consistent. Buttons are bold and pill-shaped, links are always underlined on hover, and shadows are subtle but purposeful.
Brand Keywords:
- developer-trust
- high-contrast-minimal
- blue-centric
- clarity-first