elk-zone/elk
Reviewed against Rams quality heuristics: accessibility, color, typography, spacing, components, motion, UX, and craft.
30 files reviewed·July 25, 2026
Top fix
Keep enforcing consistent spacing tokens as new components ship
More findings
- Timeline hierarchy stays legible across dense reply threads
- No accessibility or contrast regressions found across reviewed views
Verdict
Elk's UI is quiet, consistent, and unremarkable in the best sense: nothing fights the content. The biggest risk is complacency, a clean sweep like this can hide small drift if future PRs aren't held to the same bar.
Files Rams reviewed
app/pages/[[server]]/@[account]/[status].vue
app/pages/[[server]]/@[account]/index.vue
app/pages/[[server]]/@[account]/index/index.vue
app/pages/[[server]]/explore.vue
app/pages/[[server]]/explore/index.vue
app/pages/[[server]]/explore/links.vue
app/pages/[[server]]/explore/users.vue
app/pages/[[server]]/list/[list]/index.vue
app/pages/[[server]]/list/[list]/index/accounts.vue
app/pages/[[server]]/lists/index.vue
app/pages/[[server]]/tags/[tag].vue
app/pages/notifications.vue
app/pages/settings.vue
app/pages/settings/about/index.vue
app/pages/settings/language/index.vue
app/pages/settings/preferences/index.vue
app/pages/settings/profile/appearance.vue
app/pages/settings/profile/index.vue
app/pages/settings/users/index.vue
app/components/account/AccountAvatar.vue
app/components/account/AccountBigCard.vue
app/components/account/AccountBigCardSkeleton.vue
app/components/account/AccountFollowButton.vue
app/components/account/AccountFollowRequestButton.vue
app/components/account/AccountHeader.vue
app/components/account/AccountHoverWrapper.vue
app/components/account/AccountInfo.vue
app/components/account/AccountMoreButton.vue
app/components/account/AccountPaginator.vue
app/components/account/AccountPostsFollowers.vue
Working well
- The relationship?.blockedBy state pairs a primary message with a distinct secondary explanation via text-secondary and text-secondary-light, giving blocked-profile feedback two levels of hierarchy instead of one flat notice.
- Focusing and blurring the search input on activate/deactivate (onActivated/onDeactivated) is a thoughtful touch for keyboard users navigating a keep-alive tab structure, avoiding stale focus state.
- Using onReactivated to silently refresh status and context on keep-alive reentry, rather than blocking with a full loading state, keeps navigation feeling instant while still staying fresh.
- Using useLocalStorage with a hydration guard (isHydrated) before rendering the alert avoids a server/client mismatch flash, which is a common SSR pitfall handled correctly here.
Scored July 25, 2026 with Rams Engine v0.0.3 · Engine changelog
First scored July 9, 2026: 71/100. This rescore on v0.0.3: 98/100.
This page is an automated design review of elk-zone/elk’s UI code: 30 files read against 309 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.