minpeter/minpeter.v2
Reviewed against Rams quality heuristics: accessibility, color, typography, spacing, components, motion, UX, and craft.
30 files reviewed·July 25, 2026
More findings
Verdict
A one-page site with strong accessibility bones undone by two arbitrary values sitting in an otherwise disciplined scale. The biggest risk is that off-scale spacing and type quietly erode the calm, considered feel the rest of the page earns.
Files Rams reviewed
app/[locale]/73e3da8fa7a397e7b1bc36efabb2cbb265524a75d7d5e6d1620b9e10e694257/page.tsx
app/[locale]/blog/[...slug]/page.tsx
app/[locale]/blog/page.tsx
app/[locale]/layout.tsx
app/[locale]/page.tsx
app/[locale]/resume/page.tsx
app/[locale]/show/dynamic-hacked-text/page.tsx
app/[locale]/show/model-card-artwork/page.tsx
app/[locale]/show/new-year-clock/page.tsx
app/[locale]/show/page.tsx
app/[locale]/show/tech-stack-ball/page.tsx
app/[locale]/show/unstructured-0828/page.tsx
app/[locale]/show/unstructured/page.tsx
app/[locale]/show/yet-another-tempfiles/page.tsx
components/not-found-page.tsx
app/[locale]/show/new-year-clock/layout.tsx
app/[locale]/blog/[...slug]/mdx-components.tsx
app/[locale]/blog/[...slug]/post-footer.tsx
app/[locale]/blog/[...slug]/post-toc.tsx
app/[locale]/blog/list-fallback.tsx
app/[locale]/blog/list.tsx
app/[locale]/blog/loading.tsx
app/[locale]/blog/og/[...slug]/route.tsx
app/[locale]/resume/loading.tsx
app/[locale]/show/dynamic-hacked-text/animated-text.tsx
app/[locale]/show/loading.tsx
app/[locale]/show/new-year-clock/countdown.tsx
app/[locale]/show/tech-stack-ball/animated-stack.tsx
app/[locale]/show/tech-stack-ball/playground-wrapper.tsx
app/[locale]/show/unstructured/styles.module.css
Typography
app/[locale]/page.tsx:75
Connect heading uses off-scale font-size and letter-spacing values
The "Connect" section heading (h2#connect-title) is styled with text-[13px] and tracking-[-0.02em], both arbitrary values with no equivalent Tailwind scale token, while sibling text elsewhere on the page (text-sm, text-base) uses the scale correctly.
Why it matters
A one-off 13px/-0.02em pairing that exists nowhere else in the type scale means this heading can silently diverge in weight or size the next time the scale changes, and future contributors have no signal for whether 13px was intentional or a stray value.
Fix
Replace arbitrary font-size and tracking with the nearest scale tokens so this heading stays governed by the same type system as the rest of the page.
<h2
className="mb-5 text-[13px] text-muted-foreground tracking-[-0.02em]"
id="connect-title"
><h2
className="mb-5 text-xs text-muted-foreground tracking-tight"
id="connect-title"
>Spacing
app/[locale]/page.tsx:39
Arbitrary pt-[6.5rem] on the page root breaks the spacing scale
The root <section className="home-page ... pt-[6.5rem] pb-12"> sets top padding with an arbitrary value instead of a scale step, while pb-12 in the same class list is a proper token. One property on the page's outermost container is off-scale and the other is on-scale.
Why it matters
Every arbitrary value like 6.5rem is a number nobody else can reuse or reason about; the next person spacing a section has to guess whether 6.5rem is meaningful or a one-off, and small drifts like this compound into a page where vertical rhythm no longer maps to a system.
Fix
Replace arbitrary padding with the nearest spacing-scale token so top spacing stays traceable to the same system as pb-12.
<section className="home-page mx-auto flex w-full max-w-lg flex-1 flex-col pt-[6.5rem] pb-12"><section className="home-page mx-auto flex w-full max-w-lg flex-1 flex-col pt-24 pb-12">Accessibility
Color
Components
Motion
UX
Craft
Working well
- The signature-mark logo Image uses alt="" paired with aria-hidden="true" while the wrapping Link carries aria-label={t("homeLabel")}: exactly one accessible name reaches the screen reader instead of duplicate or empty announcements. That's the correct pattern for a decorative image inside a labelled interactive wrapper.
- The page composition stays minimal and legible: a header with logo, name, and intro, a nav of section links, and a single Connect block for socials, with no extra chrome competing with the content. That restraint keeps the read order obvious without added hierarchy work.
Scored July 25, 2026 with Rams Engine v0.0.3 · Engine changelog
First scored July 23, 2026: 81/100. This rescore on v0.0.3: 96/100.
This page is an automated design review of minpeter/minpeter.v2’s UI code: 30 files read against 291 versioned rules covering accessibility, color, typography, spacing, components, UX, motion, and craft. The score is out of 100; confirmed criticals cap it — one at 59, two at 49, three or more at 39.
More design scores
Score your own repo.
Free on public repos, no account. The same engine that scored this page reads your UI code and mints a score page like this one.
Public repos only. The full engine reviews the UI code and mints a public score page — we email you the link too. Already-scored repos open instantly.