Skip to content

Commit 8e009ee

Browse files
committed
Add claude design handoff
1 parent 7bcb06b commit 8e009ee

20 files changed

Lines changed: 3090 additions & 0 deletions

frontend/design_handoff_matchboard/README.md

Lines changed: 416 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
# Digital Research Service — Design System
2+
3+
**Digital Research Service (DRS)** is an innovative university IT department building tools that help researchers form cross-disciplinary teams. The product surfaced in this design system is a **skills-matching web app**: researchers maintain a profile of their expertise, project leads post project descriptions, and the system surfaces high-signal matches across departments and disciplines.
4+
5+
The brand wants to feel like reading *Nature* or *Wellcome Trust* publications — editorial, restrained, data-forward, intellectually serious, but warm enough to invite people from disparate fields to actually collaborate.
6+
7+
## Sources
8+
9+
This system was bootstrapped from scratch at the user's request — there was no existing codebase, Figma, or full brand reference attached. After v1, the user confirmed they work at the **University of Nottingham**, the institutional parent, and supplied the official Nottingham screen logos (`assets/uon-logo-blue.png` and `assets/uon-logo-white.png`). UoN navy `#10263b` was sampled from the supplied logo and added as a supplementary token. Substitute or override anything else here that conflicts with the official Nottingham brand guidelines.
10+
11+
## Brand hierarchy
12+
13+
- **University of Nottingham** — institutional parent. Real, trademarked brand. Lock-up in `assets/uon-logo-*.png`. Always present in the top bar / footer of any DRS surface.
14+
- **Digital Research Service (DRS)** — the department within UoN's IT function that owns Matchboard. Appears as a small mono text label, not a competing logo.
15+
- **Matchboard** — the product. Has its own wordmark in `assets/matchboard-wordmark.svg`, paired with UoN in a co-brand lock-up (UoN | Matchboard).
16+
17+
The DRS mark in `assets/drs-mark.svg` is an internal placeholder — not for public-facing use unless the department adopts it formally.
18+
19+
---
20+
21+
## Index
22+
23+
| File / Folder | Purpose |
24+
|---|---|
25+
| `README.md` | This file. Brand context, content rules, visual foundations, iconography. |
26+
| `SKILL.md` | Agent Skill entry point — read this when invoking the skill. |
27+
| `colors_and_type.css` | All design tokens — colors, typography, spacing, radii, shadows. |
28+
| `fonts/` | Webfont references (Geist via Google Fonts). |
29+
| `assets/` | Logos, wordmarks, sample researcher headshots, illustrations. |
30+
| `preview/` | Card files surfaced in the Design System tab. |
31+
| `ui_kits/matchboard/` | UI kit for the skills-matching web app ("Matchboard"). |
32+
| `ui_kits/matchboard/index.html` | Interactive multi-screen prototype. |
33+
| `ui_kits/matchboard/*.jsx` | Reusable component files. |
34+
35+
---
36+
37+
## Content Fundamentals
38+
39+
**Voice.** Like a well-edited research publication: factual, specific, never breathless. Sentences carry information; adjectives earn their place. The reader is a busy scientist — respect their time.
40+
41+
**Person.** Address the user as *you*, but speak about the service in the third person ("Matchboard surfaces researchers whose recent work overlaps with your project"). Avoid "we" except in legal / staff-authored copy.
42+
43+
**Casing.** Sentence case everywhere — buttons, menu items, headings, navigation. The only Title Case Things are proper nouns (research areas, lab names, the product name "Matchboard"). Never ALL CAPS except in a single editorial eyebrow (e.g. `RECENT MATCHES`) at small sizes with generous letter-spacing.
44+
45+
**Numbers and data.** Numerals always, even at the start of sentences if necessary ("3 researchers matched"). Use the thin-space thousands separator visually but plain digits in inputs. Percentages have no space (`87%`). Always show units.
46+
47+
**Tone — specific examples.**
48+
- ✅ "Match strength: 87%. Overlap on bioinformatics, single-cell sequencing, ethics review."
49+
- ❌ "Wow, 87% — what a great match! 🎉"
50+
- ✅ "No matches yet. Add a method or technique to your project to broaden the search."
51+
- ❌ "Oops, nothing here! Try adding more tags."
52+
- ✅ "Posted 4 days ago by Dr. Adaeze Okonkwo (Materials Science)."
53+
- ❌ "Posted by Adaeze, 4 days ago!!"
54+
55+
**Emoji.** Never in product UI. Acceptable in informal staff-authored content (release notes, internal blog posts) but should still feel sparing.
56+
57+
**Empty states.** Diagnostic, not cute. State what's missing and what to do, in one sentence.
58+
59+
**Capitalization of disciplines.** Always Title Case for named fields (Computational Biology, Materials Science, Medieval Studies). Lowercase for general descriptors (interdisciplinary, quantitative methods).
60+
61+
---
62+
63+
## Visual Foundations
64+
65+
### Color
66+
67+
The colour system follows the **University of Nottingham brand palette** (see [nottingham.ac.uk/brand/visual/colour.aspx](https://www.nottingham.ac.uk/brand/visual/colour.aspx)). The full set of UoN tokens lives in `colors_and_type.css` under "UoN PRIMARY", "UoN SUPPORTING", and "UoN NEUTRAL" blocks.
68+
69+
**Rules from the UoN brand site — enforced here:**
70+
71+
- **Nottingham Blue must be visually dominant** on every asset. Body copy, headings, and the primary brand mark are all Nottingham Blue.
72+
- **Black is not used.** Any historical black in the system has been replaced with Nottingham Blue.
73+
- **Maximum two supporting colours per design**, and together they should account for less than half the colour make-up. Supporting colours are accents — illustrations, icons, calls-to-action — not primary surfaces.
74+
- **Body copy must be Nottingham Blue or white.** No supporting colour appears as body text.
75+
- **White is avoided as a digital background.** Use Portland Stone 40% tint (`#FDFBF9`) or Nottingham Blue 5% tint (`#F3F4F5`) instead.
76+
77+
**Primary** — Nottingham Blue `#10263B`. Five official tints: 80% `#405162`, 60% `#707D89`, 40% `#9FA8B1`, 20% `#CFD4D8`, 5% `#F3F4F5`.
78+
79+
**Supporting palette (9, max 2 per design):**
80+
81+
| Name | Hex |
82+
|---|---|
83+
| Jubilee Red | `#B91C2E` |
84+
| Mandarin Orange | `#F98109` |
85+
| Rebel's Gold | `#DEB406` |
86+
| Pioneering Pink | `#D7336C` |
87+
| Civic Purple | `#792D85` |
88+
| Forest Green | `#005F36` |
89+
| Bramley Apple | `#93D500` |
90+
| Trent Turquoise | `#37B4B0` |
91+
| Malaysia Sky Blue | `#009BC1` |
92+
93+
**Matchboard's chosen pair:** Forest Green (strong matches, success, "Funded") + Rebel's Gold (skill tags, partial matches, warm accent). Pick a different pair for other DRS products as long as you stick to two.
94+
95+
**Neutral** — Portland Stone `#FAF6EF` and its 40% tint `#FDFBF9` (preferred body background). White `#FFFFFF` for text on dark surfaces only.
96+
97+
**Semantic mapping** (system uses these):
98+
99+
- Success → Forest Green
100+
- Warning → Mandarin Orange
101+
- Error / destructive → Jubilee Red
102+
- Info → Nottingham Blue
103+
104+
### Typography
105+
106+
**Geist** for everything (UI, body, display) and **Geist Mono** for tabular data, codes, and identifiers. Single-family discipline keeps the system feeling editorial — variation comes from weight (400, 500, 600), size, and tracking, not from family-mixing.
107+
108+
- Display headings: tight tracking (`-0.02em` to `-0.04em`), generous size jumps.
109+
- Body: `1rem` (16px) at `1.55` line-height, optical kerning enabled.
110+
- Small caps eyebrows: `0.75rem` Geist Medium, `0.14em` letter-spacing, uppercase.
111+
- Numerals: tabular figures by default in data contexts (`font-variant-numeric: tabular-nums`).
112+
113+
### Spacing & Layout
114+
115+
A 4px base scale: `4, 8, 12, 16, 24, 32, 48, 64, 96`. Page gutters are generous — content columns rarely exceed 720px for reading or 1200px for app surfaces. Generous white space is a feature, not a bug.
116+
117+
Most layouts are left-aligned, asymmetric, with a clear primary column and a narrower secondary rail. Centered layouts are reserved for empty states and modals.
118+
119+
### Backgrounds
120+
121+
- **Default:** flat Paper (`#fdfcf8`). No textures, no gradients.
122+
- **Section breaks:** a single 1px Ink-at-12% hairline — the editorial rule.
123+
- **Cards:** Paper, with a 1px hairline border in Ink-at-10%. No drop shadows in the default state.
124+
- **Imagery:** when used, treated as editorial photography — desaturated slightly, warm-leaning. Headshots are square or 4:5, never circular except in dense lists.
125+
126+
### Animation
127+
128+
Restrained. Interaction feedback is fast (120ms) and uses a custom ease (`cubic-bezier(0.2, 0, 0, 1)`). Page transitions are static — no slide-ins. Loading uses a single 1px progress bar at the top of the viewport (Forest), not spinners. Avoid bounces entirely.
129+
130+
### Hover States
131+
132+
- **Buttons:** background darkens by ~6% (Forest → darker Forest). Never lighten.
133+
- **Links:** underline appears (was absent). Color unchanged.
134+
- **Cards:** border shifts from Ink-at-10% to Ink-at-25%. No lift, no shadow.
135+
- **Icon buttons:** background fills with Ink-at-6%.
136+
137+
### Press States
138+
139+
A subtle scale-down (`scale(0.98)`) on buttons only. No color change beyond hover. Released animation is 80ms.
140+
141+
### Borders
142+
143+
Always 1px. Always Ink-at-N% — never Forest as a border on body content (Forest borders are reserved for active/selected states). Border-radius is restrained: `4px` for inputs/buttons, `6px` for cards, `2px` for tags. No fully-rounded pills except for filter chips.
144+
145+
### Shadows
146+
147+
Almost none. The system uses **borders, not shadows** to define edges. Two exceptions:
148+
- **Floating menus / popovers:** a single soft shadow — `0 6px 24px -8px rgba(26, 26, 26, 0.18)`.
149+
- **Modals:** `0 24px 64px -24px rgba(26, 26, 26, 0.28)`.
150+
151+
No inner shadows anywhere.
152+
153+
### Capsules vs Protection Gradients
154+
155+
Capsules are used for tags, status chips, and filter pills. Protection gradients (white-to-transparent fades over imagery) are not used in this brand — imagery is always supported by adjacent text, not overlaid.
156+
157+
### Layout Rules
158+
159+
- App chrome is fixed (top bar + left rail). Content scrolls.
160+
- Maximum content width on app surfaces: 1200px.
161+
- Reading column: 65ch (~640px).
162+
- Sticky elements use the Paper background with a 1px hairline; never blurred backdrops in product UI.
163+
164+
### Transparency & Blur
165+
166+
Used sparingly. Modal scrim is `rgba(26, 26, 26, 0.4)`, no blur. Toast notifications and the top bar are solid Paper.
167+
168+
### Imagery
169+
170+
Editorial documentary style: real researchers in real labs/offices, mid-action, warm color cast, slight film grain in hero contexts. Avoid stock photography clichés (gleaming microscopes, glowing molecules, hands-on-keyboards). When real photography isn't available, use **placeholders with a clear caption** — never AI-generated stand-ins.
171+
172+
### Cards
173+
174+
Paper background, 1px Ink-at-10% border, 6px radius, no shadow. Internal padding `24px`. Title row at top in Geist Medium. Metadata in Geist Mono small caps at the bottom.
175+
176+
---
177+
178+
## Iconography
179+
180+
**Heroicons** — line variant (1.5px stroke, 24×24 nominal). Loaded via CDN from `unpkg.com/heroicons` in HTML files, or rendered inline from the SVGs in `assets/icons/heroicons/` for offline / production use.
181+
182+
- **Stroke weight:** always 1.5px at 24px nominal. Scale uniformly; do not adjust stroke.
183+
- **Color:** always inherit `currentColor`. Never apply gradient or two-tone treatments.
184+
- **Sizing:** common sizes are 16, 20, 24, 32. Icon should equal the surrounding text cap-height + 4px when paired with text.
185+
- **Alignment:** vertically optical-aligned with text, not centered on bounding box.
186+
187+
**Emoji:** never used in product UI. See Content Fundamentals.
188+
189+
**Unicode glyphs:** the following are used as semantic typographic marks (not icons):
190+
- `` (U+2192) for "see also" and inline navigation hints.
191+
- `·` (U+00B7) as a metadata separator.
192+
- `` (U+2014) em dash for editorial pauses (always with thin spaces, never spaces).
193+
194+
**Logo:** the **University of Nottingham** master logo is the lead mark on every Matchboard surface (`assets/uon-logo-blue.png` on light, `assets/uon-logo-white.png` on the navy inverse). It pairs with the Matchboard wordmark via a 1px vertical divider — see `preview/brand-logo.html` for the lock-up. Use the official Nottingham brand-portal files in any production build; the screen-resolution PNGs supplied here are placeholders. The DRS mark in `assets/drs-mark.svg` is an internal placeholder and is not the public-facing mark.
195+
196+
---
197+
198+
## Font Substitution Notice
199+
200+
The brand specifies **Geist** (Vercel's open-source typeface, available on Google Fonts and GitHub). Files are loaded via Google Fonts CDN; if you need self-hosted woff2 files, download from the Geist GitHub repo and place in `fonts/`. **No font substitution is currently active** — Geist is the real, intended choice.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
name: drs-design
3+
description: Use this skill to generate well-branded interfaces and assets for Digital Research Service (DRS), either for production or throwaway prototypes/mocks/etc. Contains essential design guidelines, colors, type, fonts, assets, and UI kit components for prototyping the cross-disciplinary research-matching product Matchboard.
4+
user-invocable: true
5+
---
6+
7+
Read the `README.md` file within this skill, and explore the other available files.
8+
9+
If creating visual artifacts (slides, mocks, throwaway prototypes, etc), copy assets out and create static HTML files for the user to view. If working on production code, you can copy assets and read the rules here to become an expert in designing with this brand.
10+
11+
If the user invokes this skill without any other guidance, ask them what they want to build or design, ask some questions, and act as an expert designer who outputs HTML artifacts _or_ production code, depending on the need.
12+
13+
## Quick map
14+
15+
- **`README.md`** — full brand reference: content fundamentals, visual foundations, iconography.
16+
- **`colors_and_type.css`** — design tokens (colors, type scale, spacing, radii, shadows, motion). Import this from any HTML artifact.
17+
- **`assets/`** — logos and wordmarks (SVG): `drs-mark.svg`, `drs-wordmark.svg`, `matchboard-wordmark.svg`.
18+
- **`ui_kits/matchboard/`** — interactive UI kit for the Matchboard web app. Read `ui_kits/matchboard/README.md` for the component map. Components are React (Babel-in-browser) and cleanly factored — copy whole files when prototyping.
19+
- **`preview/`** — small per-token preview cards used in the Design System tab. Reference for "what does X look like in isolation".
20+
21+
## Top rules — do not violate
22+
23+
1. **Use the University of Nottingham brand palette.** Nottingham Blue `#10263B` is the primary; it must be visually dominant on every asset. Max **two** supporting accents per design (Matchboard's chosen pair: Forest Green `#005F36` + Rebel's Gold `#DEB406`).
24+
2. **Black is not part of the palette.** All text is Nottingham Blue or one of its tints; never pure black.
25+
3. **Background is never pure white.** Use Portland Stone 40% `#FDFBF9` (preferred) or Nottingham Blue 5% `#F3F4F5`.
26+
4. **No emoji in product UI.** Use Heroicons (outline, 1.5px stroke).
27+
5. **Sentence case everywhere** — buttons, headings, menus. Exceptions: proper nouns and the single ALL-CAPS eyebrow with `0.14em` tracking.
28+
6. **Geist + Geist Mono** only. No other typefaces. Variation comes from weight, size, tracking.
29+
7. **Borders, not shadows.** Cards get a 1px Nottingham-Blue-alpha hairline border, not drop shadows. Only popovers and modals use shadow.
30+
8. **Restrained motion.** 120ms `cubic-bezier(0.2,0,0,1)`. No bounces, no slide-ins, no scale-ups.
31+
9. **No filler content.** Don't pad designs with stock copy or invented sections.
32+
10. **No AI-generated imagery.** Use real editorial photography or labelled placeholders.
33+
11. **UoN logo lock-up first** in every product surface — institution leads, then the product wordmark.
Lines changed: 6 additions & 0 deletions
Loading
Lines changed: 10 additions & 0 deletions
Loading
Lines changed: 8 additions & 0 deletions
Loading
11 KB
Loading
10.2 KB
Loading

0 commit comments

Comments
 (0)