Skip to content

Add Impeccable design context#63

Merged
jonathanperis merged 2 commits into
mainfrom
design/site-overhaul-context
May 18, 2026
Merged

Add Impeccable design context#63
jonathanperis merged 2 commits into
mainfrom
design/site-overhaul-context

Conversation

@jonathanperis
Copy link
Copy Markdown
Owner

@jonathanperis jonathanperis commented May 16, 2026

Summary

  • Add PRODUCT.md with brand strategy for the rinha2-back-end-dotnet website
  • Add DESIGN.md capturing the current dark .NET/system aesthetic and redesign guardrails
  • Add .impeccable/design.json sidecar with tokens and representative components

Verification

  • git diff --check
  • bun run build from docs/

Summary by CodeRabbit

  • Documentation
    • Established comprehensive design system documentation with design tokens, component specifications, and styling guidelines
    • Documented product positioning, brand voice, accessibility requirements, and content standards

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 16, 2026

📝 Walkthrough

Walkthrough

This PR establishes a complete design system and product specification for the rinha2-back-end-dotnet .NET 9 Native AOT benchmark site. It introduces machine-readable design tokens, visual constraint rules, component pattern definitions, and product positioning guidance across three coordinated documents.

Changes

Design System and Product Specification

Layer / File(s) Summary
Design tokens and system foundation
\.impeccable/design\.json, DESIGN\.md (lines 1–66)
Design tokens for colors, typography, shadows, motion, and breakpoints are defined in design.json. DESIGN.md establishes token configurations and component base definitions.
Design rules, patterns, and constraints
DESIGN\.md (lines 68–214)
System positioning as a benchmark control room, color rules (proof accents in blue/cyan, purple reserved for identity), typography hierarchy and constraints, elevation principles, component pattern guidelines (buttons, chips, cards, inputs, navigation, benchmark-specific components), and comprehensive do's/don'ts covering accessibility, motion, text treatment, and prohibited styling patterns.
Product positioning and requirements
PRODUCT\.md
Product purpose, target visitor personas, brand personality and voice, design principles for evidence-first presentation, anti-references, and accessibility/inclusion requirements (WCAG AA, reduced motion support, keyboard focus, readability).

🎯 2 (Simple) | ⏱️ ~12 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add Impeccable design context' accurately reflects the main changes: introducing three design-related files (PRODUCT.md, DESIGN.md, and .impeccable/design.json) that establish design system context and governance for the project.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch design/site-overhaul-context

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@jonathanperis jonathanperis enabled auto-merge (rebase) May 18, 2026 00:02
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
.impeccable/design.json (1)

99-104: ⚡ Quick win

Add keyboard-focus styling parity for Proof Card interactions.

ds-proof-card has interactive hover affordances but no :focus-visible state. If this card is clickable in implementation, keyboard users won’t get equivalent feedback.

Proposed adjustment
-.ds-proof-card { padding: 32px; border: 1px solid `#1a365d`; border-radius: 20px; background: `#0d2137`; color: `#e0f0ff`; transition: transform 160ms cubic-bezier(0.25,1,0.5,1), border-color 160ms, box-shadow 160ms; } .ds-proof-card strong { display: block; color: `#00d4ff`; font: 700 2.5rem/1 Inter, system-ui, sans-serif; letter-spacing: -0.04em; margin-bottom: 8px; } .ds-proof-card span { color: `#8ab4f8`; font: 600 0.78rem/1.3 JetBrains Mono, Fira Code, ui-monospace, monospace; letter-spacing: 0.08em; text-transform: uppercase; } .ds-proof-card:hover { transform: translateY(-3px); border-color: `#1e90ff`; box-shadow: 0 10px 30px rgba(0,0,0,0.3); }
+.ds-proof-card { padding: 32px; border: 1px solid `#1a365d`; border-radius: 20px; background: `#0d2137`; color: `#e0f0ff`; transition: transform 160ms cubic-bezier(0.25,1,0.5,1), border-color 160ms, box-shadow 160ms; } .ds-proof-card strong { display: block; color: `#00d4ff`; font: 700 2.5rem/1 Inter, system-ui, sans-serif; letter-spacing: -0.04em; margin-bottom: 8px; } .ds-proof-card span { color: `#8ab4f8`; font: 600 0.78rem/1.3 JetBrains Mono, Fira Code, ui-monospace, monospace; letter-spacing: 0.08em; text-transform: uppercase; } .ds-proof-card:hover { transform: translateY(-3px); border-color: `#1e90ff`; box-shadow: 0 10px 30px rgba(0,0,0,0.3); } .ds-proof-card:focus-visible { outline: 2px solid `#00d4ff`; outline-offset: 3px; transform: translateY(-3px); border-color: `#1e90ff`; box-shadow: 0 10px 30px rgba(0,0,0,0.3); }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.impeccable/design.json around lines 99 - 104, The Proof Card
(.ds-proof-card) provides hover affordances but lacks a :focus-visible state;
add a :focus-visible rule in the CSS string (alongside the existing
.ds-proof-card:hover) that mirrors the hover affordances (apply the same
transform, border-color and box-shadow) and add an accessible focus indicator
(e.g., a visible focus ring or adjusted outline) so keyboard users get
equivalent feedback; also ensure the interactive element in markup is focusable
(use a native button/anchor or add tabindex="0" and appropriate role) so the
:focus-visible styles can be reached.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@DESIGN.md`:
- Around line 51-55: The button-secondary token is missing the required border
definition per the component guideline; update the button-secondary token block
to include a border (e.g., border: "1px solid {colors.dotnet-blue}" or
borderColor: "{colors.dotnet-blue}" plus borderWidth/borderStyle) so the token
enforces the blue-outline rule, and apply the same addition to the other
secondary token occurrences mentioned (the tokens at the other occurrence).
Ensure the token keys used match existing naming (button-secondary, border or
borderColor/borderWidth) so implementations pick up the value.

In `@PRODUCT.md`:
- Around line 3-5: The heading "## Register" and the single word "brand" look
like a placeholder; rename the heading to a concrete title such as "## Brand"
(or another clear title) and replace the one-word body with a full sentence or
two that explains the section's purpose (e.g., describe the brand guidelines or
registration process), ensuring the new content replaces the ambiguous "brand"
token.

---

Nitpick comments:
In @.impeccable/design.json:
- Around line 99-104: The Proof Card (.ds-proof-card) provides hover affordances
but lacks a :focus-visible state; add a :focus-visible rule in the CSS string
(alongside the existing .ds-proof-card:hover) that mirrors the hover affordances
(apply the same transform, border-color and box-shadow) and add an accessible
focus indicator (e.g., a visible focus ring or adjusted outline) so keyboard
users get equivalent feedback; also ensure the interactive element in markup is
focusable (use a native button/anchor or add tabindex="0" and appropriate role)
so the :focus-visible styles can be reached.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 0e92297e-8035-4e83-a371-c156d980de2c

📥 Commits

Reviewing files that changed from the base of the PR and between aff9831 and 66509d2.

📒 Files selected for processing (3)
  • .impeccable/design.json
  • DESIGN.md
  • PRODUCT.md

Comment thread DESIGN.md
Comment on lines +51 to +55
button-secondary:
backgroundColor: "transparent"
textColor: "{colors.dotnet-blue}"
rounded: "{rounded.lg}"
padding: "16px 40px"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

button-secondary token is missing border definition required by its own guideline.

The component rule says secondary buttons use a blue border, but the token block has no border token. That weakens implementation consistency.

Proposed token completion
   button-secondary:
     backgroundColor: "transparent"
     textColor: "{colors.dotnet-blue}"
+    borderColor: "{colors.dotnet-blue}"
+    borderWidth: "1px"
+    borderStyle: "solid"
     rounded: "{rounded.lg}"
     padding: "16px 40px"

Also applies to: 162-163

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@DESIGN.md` around lines 51 - 55, The button-secondary token is missing the
required border definition per the component guideline; update the
button-secondary token block to include a border (e.g., border: "1px solid
{colors.dotnet-blue}" or borderColor: "{colors.dotnet-blue}" plus
borderWidth/borderStyle) so the token enforces the blue-outline rule, and apply
the same addition to the other secondary token occurrences mentioned (the tokens
at the other occurrence). Ensure the token keys used match existing naming
(button-secondary, border or borderColor/borderWidth) so implementations pick up
the value.

Comment thread PRODUCT.md
Comment on lines +3 to +5
## Register

brand
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Clarify the “Register” section heading and content.

Line 3 (## Register) plus Line 5 (brand) reads like a placeholder and is ambiguous for readers. Consider renaming this to a concrete section title (for example, “Brand”) and replacing the one-word body with a complete statement.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@PRODUCT.md` around lines 3 - 5, The heading "## Register" and the single word
"brand" look like a placeholder; rename the heading to a concrete title such as
"## Brand" (or another clear title) and replace the one-word body with a full
sentence or two that explains the section's purpose (e.g., describe the brand
guidelines or registration process), ensuring the new content replaces the
ambiguous "brand" token.

@jonathanperis jonathanperis merged commit c2de3e2 into main May 18, 2026
5 checks passed
@jonathanperis jonathanperis deleted the design/site-overhaul-context branch May 18, 2026 00:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant