|
| 1 | +# Shipwright Brand Standards |
| 2 | + |
| 3 | +This document defines the visual and editorial standards for the Shipwright project to ensure consistent branding across all media, including the website, documentation, presentations, and community materials. |
| 4 | + |
| 5 | +## Table of Contents |
| 6 | + |
| 7 | +1. [Project Overview](#project-overview) |
| 8 | +2. [Project Naming](#project-naming) |
| 9 | +3. [Logo Guidelines](#logo-guidelines) |
| 10 | +4. [Color Palette](#color-palette) |
| 11 | +5. [Typography](#typography) |
| 12 | +6. [Tone of Voice](#tone-of-voice) |
| 13 | + |
| 14 | +--- |
| 15 | + |
| 16 | +## Project Overview |
| 17 | + |
| 18 | +### Vision Statement |
| 19 | + |
| 20 | +**Shipwright is an extensible framework for building container images on Kubernetes.** |
| 21 | + |
| 22 | +### Target Audience |
| 23 | + |
| 24 | +- **Primary Audience**: Potential adopters and contributors to Shipwright |
| 25 | +- **Knowledge Level**: Familiarity with Kubernetes and containers |
| 26 | +- **Key Personas**: |
| 27 | + - Platform Engineers |
| 28 | + - Application Developers |
| 29 | + |
| 30 | +--- |
| 31 | + |
| 32 | +## Project Naming |
| 33 | + |
| 34 | +### Main Project Name |
| 35 | + |
| 36 | +**"Shipwright"** |
| 37 | + |
| 38 | +Use "Shipwright" when: |
| 39 | +- Referencing the project as a whole |
| 40 | +- Multiple Shipwright sub-projects/components are referenced together |
| 41 | +- The context clearly implies the Build component |
| 42 | + |
| 43 | +**Example**: "Shipwright simplifies building container images on Kubernetes." |
| 44 | + |
| 45 | +### Sub-projects and Components |
| 46 | + |
| 47 | +#### Shipwright Build |
| 48 | + |
| 49 | +- **Full name**: "Shipwright Build" |
| 50 | +- **Usage**: Only use the full name when distinguishing the core component from other sub-projects |
| 51 | +- **Default**: In most contexts, "Shipwright" implies the Build component |
| 52 | + |
| 53 | +**Example**: "Shipwright Build provides the core APIs and controllers, while the Shipwright Operator manages the system's deployment." |
| 54 | + |
| 55 | +#### `shp` Command Line |
| 56 | + |
| 57 | +- **Full name**: "`shp` command line" or "`shp`" |
| 58 | +- **Formatting**: ALWAYS use code formatting (backticks in Markdown, monospace in other contexts) |
| 59 | +- **Never**: Write "shp" without code formatting |
| 60 | + |
| 61 | +**Examples**: |
| 62 | +- "The `shp` command line provides an intuitive interface..." |
| 63 | +- "Use `shp build create` to start a new build..." |
| 64 | + |
| 65 | +#### Shipwright Triggers |
| 66 | + |
| 67 | +- **First reference**: "Shipwright Triggers" |
| 68 | +- **Subsequent references**: "Triggers" |
| 69 | + |
| 70 | +**Example**: "Shipwright Triggers integrates builds with Tekton Pipelines. Deploy Triggers to run Shipwright builds within a larger Tekton pipeline." |
| 71 | + |
| 72 | +#### The Shipwright Operator |
| 73 | + |
| 74 | +- **Always**: "the Shipwright Operator" (with preceding "the") |
| 75 | +- **Purpose**: The article "the" communicates that a single instance is expected |
| 76 | +- **Subsequent references**: "the Operator" |
| 77 | + |
| 78 | +**Example**: "The Shipwright Operator manages the lifecycle of Build resources. Install the Operator using Operator Lifecycle Manager." |
| 79 | + |
| 80 | +--- |
| 81 | + |
| 82 | +## Logo Guidelines |
| 83 | + |
| 84 | +### Logo Variants |
| 85 | + |
| 86 | +The Shipwright logo is available in three layouts: |
| 87 | + |
| 88 | +1. **Horizontal** - Preferred for most uses (logo mark + wordmark side-by-side) |
| 89 | +2. **Stacked** - For square or vertical spaces (logo mark above wordmark) |
| 90 | +3. **Icon** - Logo mark only, for small spaces or when Shipwright is already identified |
| 91 | + |
| 92 | +### Color Variants |
| 93 | + |
| 94 | +Each layout is available in three color treatments: |
| 95 | + |
| 96 | +- **Color** - Primary usage, full color logo |
| 97 | +- **Black** - For light backgrounds when color is not available |
| 98 | +- **White** - For dark backgrounds or reversed treatments |
| 99 | + |
| 100 | +### Logo Files |
| 101 | + |
| 102 | +All logo files are available in the `/assets/icons/` directory: |
| 103 | + |
| 104 | +``` |
| 105 | +assets/icons/ |
| 106 | +├── horizontal/ |
| 107 | +│ ├── color/shipwright-horizontal-color.svg |
| 108 | +│ ├── black/shipwright-horizontal-black.svg |
| 109 | +│ └── white/shipwright-horizontal-white.svg |
| 110 | +├── stacked/ |
| 111 | +│ ├── color/shipwright-stacked-color.svg |
| 112 | +│ ├── black/shipwright-stacked-black.svg |
| 113 | +│ └── white/shipwright-stacked-white.svg |
| 114 | +└── icon/ |
| 115 | + ├── color/shipwright-icon-color.svg |
| 116 | + ├── black/shipwright-icon-black.svg |
| 117 | + └── white/shipwright-icon-white.svg |
| 118 | +``` |
| 119 | + |
| 120 | +Changes to these files MUST be synced to the official [CNCF artwork repository](https://github.com/cncf/artwork). |
| 121 | + |
| 122 | +### Usage Guidelines |
| 123 | + |
| 124 | +- **Minimum size**: Ensure the logo is legible - horizontal logo minimum width of 120px, icon minimum 32px |
| 125 | +- **Clear space**: Maintain clear space around the logo equal to the height of the ship icon |
| 126 | +- **Do not**: Alter colors, rotate, distort, outline, or add effects to the logo |
| 127 | +- **Background**: Ensure sufficient contrast between logo and background |
| 128 | + |
| 129 | +--- |
| 130 | + |
| 131 | +## Color Palette |
| 132 | + |
| 133 | +### Core Brand Colors |
| 134 | + |
| 135 | +The Shipwright color palette is inspired by maritime themes - deep ocean blues and slate grays that evoke shipbuilding and nautical imagery. |
| 136 | + |
| 137 | +| Color Name | Hex Code | Usage | |
| 138 | +|------------|----------|-------| |
| 139 | +| **Navy** | `#0e232e` | Primary brand color, dark backgrounds, headings | |
| 140 | +| **Slate Blue** | `#546378` | Secondary brand color, subheadings, UI elements | |
| 141 | +| **Light Slate** | `#7c8fa4` | Tertiary color, icons, accents, backgrounds | |
| 142 | +| **White** | `#ffffff` | Light backgrounds, reversed text | |
| 143 | + |
| 144 | +### Light Theme Palette |
| 145 | + |
| 146 | +Recommended for documentation, websites, and presentations with light backgrounds. |
| 147 | + |
| 148 | +| Element | Color | Hex Code | Contrast Ratio* | |
| 149 | +|---------|-------|----------|----------------| |
| 150 | +| **Background** | White | `#ffffff` | - | |
| 151 | +| **Primary Text** | Navy | `#0e232e` | 15.3:1 ✓✓ | |
| 152 | +| **Secondary Text** | Slate Blue | `#546378` | 7.1:1 ✓✓ | |
| 153 | +| **Links (Unvisited)** | Slate Blue | `#546378` | 7.1:1 ✓✓ | |
| 154 | +| **Links (Hover/Active)** | Navy | `#0e232e` | 15.3:1 ✓✓ | |
| 155 | +| **Accent/Borders** | Light Slate | `#7c8fa4` | 4.5:1 ✓ | |
| 156 | +| **Code Blocks Background** | Ivory | `#f5f7f9` | - | |
| 157 | +| **Code Blocks Text** | Navy | `#0e232e` | 13.8:1 ✓✓ | |
| 158 | + |
| 159 | +*Contrast ratio against background. ✓ = WCAG AA compliant, ✓✓ = WCAG AAA compliant |
| 160 | + |
| 161 | +### Dark Theme Palette |
| 162 | + |
| 163 | +Recommended for dark mode interfaces, terminal applications, and developer tools. |
| 164 | + |
| 165 | +| Element | Color | Hex Code | Contrast Ratio* | |
| 166 | +|---------|-------|----------|----------------| |
| 167 | +| **Background** | Navy | `#0e232e` | - | |
| 168 | +| **Primary Text** | White | `#ffffff` | 15.3:1 ✓✓ | |
| 169 | +| **Secondary Text** | Light Slate | `#7c8fa4` | 4.5:1 ✓ | |
| 170 | +| **Links (Unvisited)** | Sky Blue | `#a8c5e0` | 7.2:1 ✓✓ | |
| 171 | +| **Links (Hover/Active)** | White | `#ffffff` | 15.3:1 ✓✓ | |
| 172 | +| **Accent/Borders** | Slate Blue | `#546378` | 3.2:1 ~ | |
| 173 | +| **Code Blocks Background** | Deep Sea | `#1a3340` | - | |
| 174 | +| **Code Blocks Text** | White | `#ffffff` | 12.1:1 ✓✓ | |
| 175 | + |
| 176 | +*Contrast ratio against background. ✓ = WCAG AA compliant, ✓✓ = WCAG AAA compliant, ~ = Use for large text only |
| 177 | + |
| 178 | +**Note**: For dark theme links, we use a lighter shade (`#a8c5e0`) to ensure sufficient contrast against the navy background. |
| 179 | + |
| 180 | +### Accessibility Considerations |
| 181 | + |
| 182 | +All color combinations in this palette have been tested for accessibility: |
| 183 | + |
| 184 | +- **WCAG AA Compliance**: Minimum 4.5:1 contrast ratio for normal text, 3:1 for large text (18pt+) |
| 185 | +- **WCAG AAA Compliance**: Minimum 7:1 contrast ratio for enhanced readability |
| 186 | +- **Color Blindness**: The Shipwright palette uses both color and luminance contrast, making it distinguishable for users with protanopia, deuteranopia, and tritanopia |
| 187 | +- **Never use color alone**: Always combine color with text labels, icons, or patterns to convey information |
| 188 | + |
| 189 | +### Extended Palette |
| 190 | + |
| 191 | +For additional UI needs (alerts, notifications, status indicators): |
| 192 | + |
| 193 | +| Purpose | Light Theme | Dark Theme | Notes | |
| 194 | +|---------|-------------|------------|-------| |
| 195 | +| **Success** | `#2ea043` | `#3fb950` | Green, positive actions | |
| 196 | +| **Warning** | `#9a6700` | `#d29922` | Amber, caution states | |
| 197 | +| **Error** | `#cf222e` | `#f85149` | Red, destructive actions | |
| 198 | +| **Info** | `#0969da` | `#58a6ff` | Blue, informational messages | |
| 199 | + |
| 200 | +These colors should be used sparingly and always meet WCAG AA contrast requirements. |
| 201 | + |
| 202 | +--- |
| 203 | + |
| 204 | +## Typography |
| 205 | + |
| 206 | +### Typefaces |
| 207 | + |
| 208 | +#### Body Text and UI |
| 209 | + |
| 210 | +Use system font stacks for optimal performance and native appearance: |
| 211 | + |
| 212 | +```css |
| 213 | +font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", |
| 214 | + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; |
| 215 | +``` |
| 216 | + |
| 217 | +**Characteristics**: |
| 218 | +- Clean, modern sans-serif |
| 219 | +- Excellent readability across devices |
| 220 | +- Native to each operating system |
| 221 | + |
| 222 | +#### Logo Wordmark |
| 223 | + |
| 224 | +The Shipwright logo uses a clean, geometric sans-serif typeface. When the logo is used, no additional typeface is required for the wordmark. |
| 225 | + |
| 226 | +#### Code and Technical Content |
| 227 | + |
| 228 | +For code blocks, inline code, terminal commands, and API references: |
| 229 | + |
| 230 | +```css |
| 231 | +font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, |
| 232 | + "Liberation Mono", monospace; |
| 233 | +``` |
| 234 | + |
| 235 | +**Usage**: |
| 236 | +- Command line examples: `` `shp build create` `` |
| 237 | +- API objects: `` `BuildRun` ``, `` `BuildStrategy` `` |
| 238 | +- File paths: `` `/var/lib/shipwright` `` |
| 239 | +- Configuration values: `` `enabled: true` `` |
| 240 | + |
| 241 | +### Type Scale |
| 242 | + |
| 243 | +Recommended type sizes for web and documentation: |
| 244 | + |
| 245 | +| Element | Size | Weight | Usage | |
| 246 | +|---------|------|--------|-------| |
| 247 | +| **H1** | 2.5rem (40px) | 700 | Page titles | |
| 248 | +| **H2** | 2rem (32px) | 600 | Section headings | |
| 249 | +| **H3** | 1.5rem (24px) | 600 | Subsection headings | |
| 250 | +| **H4** | 1.25rem (20px) | 600 | Component headings | |
| 251 | +| **Body** | 1rem (16px) | 400 | Paragraph text | |
| 252 | +| **Small** | 0.875rem (14px) | 400 | Captions, metadata | |
| 253 | +| **Code** | 0.9375rem (15px) | 400 | Code blocks | |
| 254 | +| **Inline Code** | 0.875rem (14px) | 400 | Inline code snippets | |
| 255 | + |
| 256 | +### Line Height |
| 257 | + |
| 258 | +- **Body text**: 1.6 (for optimal readability) |
| 259 | +- **Headings**: 1.2-1.3 (tighter spacing) |
| 260 | +- **Code blocks**: 1.5 (balance between density and readability) |
| 261 | + |
| 262 | +--- |
| 263 | + |
| 264 | +## Tone of Voice |
| 265 | + |
| 266 | +### Brand Personality |
| 267 | + |
| 268 | +Shipwright's voice is: |
| 269 | + |
| 270 | +- **Approachable**: Friendly and welcoming to newcomers |
| 271 | +- **Teaching-oriented**: Focused on helping users learn and succeed |
| 272 | +- **Technical but not intimidating**: Precise without being overly formal |
| 273 | +- **Inclusive**: Respectful of diverse backgrounds and experience levels |
| 274 | + |
| 275 | +### Writing Principles |
| 276 | + |
| 277 | +1. **Be Clear and Concise** |
| 278 | + - Use simple, direct language |
| 279 | + - Avoid jargon unless it's standard Kubernetes/container terminology |
| 280 | + - Define technical terms on first use |
| 281 | + |
| 282 | +2. **Be Helpful** |
| 283 | + - Anticipate user questions |
| 284 | + - Provide context for why something matters |
| 285 | + - Include practical examples |
| 286 | + |
| 287 | +3. **Be Respectful** |
| 288 | + - Acknowledge that learning is a journey |
| 289 | + - Never assume knowledge or make users feel inadequate |
| 290 | + - Celebrate contributions of all sizes |
| 291 | + |
| 292 | +4. **Express Yourself** |
| 293 | + - Casual tone is permissible - this is open source |
| 294 | + - Use contractions (it's, you're, we'll) |
| 295 | + - Show personality while remaining professional |
| 296 | + - Encourage contributors to bring their authentic voice |
| 297 | + |
| 298 | +### Voice Examples |
| 299 | + |
| 300 | +**Do**: "Let's build your first container image with Shipwright! We'll use the `shp` command line to make this quick and easy." |
| 301 | + |
| 302 | +**Don't**: "One must configure the BuildStrategy CRD in accordance with the technical specifications outlined herein." |
| 303 | + |
| 304 | +--- |
| 305 | + |
| 306 | +**Do**: "The Shipwright Operator handles the heavy lifting of managing your build infrastructure. Think of it as your build system's autopilot." |
| 307 | + |
| 308 | +**Don't**: "The operator component provides automated lifecycle management capabilities." |
| 309 | + |
| 310 | +--- |
| 311 | + |
| 312 | +**Do**: "New to Kubernetes? No worries! Here's what you need to know before getting started..." |
| 313 | + |
| 314 | +**Don't**: "This documentation assumes expert-level knowledge of Kubernetes primitives." |
| 315 | + |
| 316 | +### Content Guidelines |
| 317 | + |
| 318 | +#### Documentation |
| 319 | + |
| 320 | +- Start with the user's goal, not the feature |
| 321 | +- Use second person ("you") to directly address readers |
| 322 | +- Include code examples that can be copied and run |
| 323 | +- Explain not just how, but why |
| 324 | + |
| 325 | +#### Blog Posts and Announcements |
| 326 | + |
| 327 | +- Lead with the benefit to users |
| 328 | +- Share the story behind features and decisions |
| 329 | +- Highlight community contributions |
| 330 | +- Use headers and formatting for scanability |
| 331 | + |
| 332 | +#### Error Messages |
| 333 | + |
| 334 | +- Explain what went wrong in plain language |
| 335 | +- Suggest how to fix it |
| 336 | +- Provide a link to relevant documentation when helpful |
| 337 | + |
| 338 | +**Example**: |
| 339 | +``` |
| 340 | +Error: BuildRun 'example-build' failed |
| 341 | +Reason: Source repository not found at https://github.com/example/repo |
| 342 | + |
| 343 | +Check that: |
| 344 | +- The repository URL is correct |
| 345 | +- The repository is publicly accessible, or credentials are configured |
| 346 | +- Network connectivity allows access to GitHub |
| 347 | + |
| 348 | +See: https://shipwright.io/docs/troubleshooting/source-errors |
| 349 | +``` |
| 350 | + |
| 351 | +--- |
| 352 | + |
| 353 | +## Questions or Updates |
| 354 | + |
| 355 | +Brand standards evolve with the project. If you have questions or suggestions: |
| 356 | + |
| 357 | +- Open an issue at [shipwright-io/community](https://github.com/shipwright-io/community/issues) |
| 358 | +- Join the discussion in the Shipwright Slack channel |
| 359 | +- Submit a pull request with proposed changes |
| 360 | + |
| 361 | +--- |
| 362 | + |
| 363 | +*Last updated: April 2, 2026* |
0 commit comments