Phase F11: Design System Overhaul + UX Redesign
Goal: Replace the AI-generated aesthetic with a distinctive, professional design system that prioritizes the "what are my latest projects / what changed recently" user story. Kill the AI slop.
Owner: Dev agent (code), Betty Sue (design direction + QA coordination)
Repo:
forgejo_admin/pal-e-appDepends on: F5 (auth), F6 (private notes), F8 (editing), F9 (board CRUD) — all COMPLETED
Context
The current pal-e-app aesthetic was built fast by dev agents and hits every AI slop anti-pattern: cyan-on-dark, pink neon accents on near-black, identical card grids, system fonts, centered everything, no design token system. The color palette (
#e94560 accent, #0a0a14 background, #55efc4/#00cec9 type badges) is the textbook AI color palette warned against by the frontend-design guidelines.The home page shows all 10 projects alphabetically — it doesn't answer the primary user question: "What are my latest projects? What changed? What needs attention?"
Current technical state: Tailwind 4.1, zero CSS custom properties, all colors hardcoded as arbitrary Tailwind values (
bg-[#0e0e18]), no font imports, no type scale.Design Direction
Aesthetic: Editorial / Command Center. Not a generic SaaS dashboard. Not a dark-mode dev tool. A well-typeset intelligence briefing — clean, scannable, information-dense but not cluttered. Every pixel earns its place.
- Light mode primary (dark mode secondary) — dark mode is lazy; light mode forces real design decisions
- Real typography — distinctive heading font + clean body font. Not Inter, not Roboto, not system defaults.
- Warm neutrals — stone/slate/warm grays, not blue-tinted near-black
- One accent color — not a rainbow of type badges. Typography-driven hierarchy.
- Activity-first home page — "Recently updated," "In progress," "Needs attention" — not alphabetical dumps
- Left-aligned, asymmetric layout — break the centered-everything pattern
- Progressive disclosure — the home page is a briefing, not a directory
Scope
F11a: Design Token System + Color Palette (COMPLETED — PR #35)
- Create CSS custom properties in
app.cssfor all design tokens (colors, spacing, typography, radii) - Replace ALL hardcoded hex values (
bg-[#0e0e18]) with token references - Choose a professional color palette — warm neutrals, one strong accent
- Support light mode (primary) and dark mode (secondary) via
prefers-color-schemeor toggle - Tint neutrals toward brand hue for cohesion
- Note type colors: simplify from 16 distinct colors to a restrained system (3-4 hues max with shade variations)
F11b: Typography + Font Loading (COMPLETED — PR #35)
- Select and import distinctive fonts: display/heading + body pair
- Implement modular type scale with
clamp()for fluid sizing - Font loading strategy:
font-display: swap, preload critical fonts - Vary weights and sizes to create clear visual hierarchy without relying on color
F11c: Home Page Redesign — "What Are My Latest Projects?" (COMPLETED — PR #37, Issue #36)
- Activity-first layout: recently updated notes/projects at top
- In-progress board items section — what's actively being worked on across all projects
- Project cards with last-updated timestamps and activity indicators
- Board summary with progress bars (backlog/in-progress/done ratios)
- Kill the alphabetical project dump and full tag wall
- Prototype approved in
html-playground/6-pal-e-homebefore port
F11d: Navigation Rethink
- Streamline nav: Primary (Home/Activity, Projects, Search) vs Secondary (Notes, Tags, Repos)
- Consider sidebar navigation vs top bar
- Mobile-responsive hamburger menu
- Keyboard shortcuts (existing
/for search is good — extend) - Breadcrumb improvements for note navigation
- Gamification elements: progress indicators on project links, notification badges
F11e: Search + Discovery UX
- URL-driven search (
?q=param should work on notes page) - Search results with better context (snippet, project, type, date)
- Filter persistence across navigation
- Consider semantic search toggle (backend already supports it)
F11f: Private Notes + Auth UX Polish
- Lock icon visibility audit — current
h-3 w-3 text-gray-600is too subtle on dark backgrounds - Signin page design — not Auth.js default
- Signout confirmation or redirect behavior
- Role display in nav (not just username)
F11g: Component Library Polish
- Cards: break the identical grid pattern. Vary sizes by importance/type.
- Badges: typography-driven, not rainbow colored
- Buttons: clear primary/secondary/ghost hierarchy
- Tables: readable in light mode
- Code blocks: proper syntax highlighting theme
- Empty states: teach the interface, not just "nothing here"
Investigation Required
- Does the pal-e-docs API support
?sort=updated_ator similar for activity-first queries? — YES, default sort isupdated_at DESC,limit/offsetparams added in PR #181 - Can we add
updated_atto the notes list response for "recently updated" sorting? — YES, already inNoteSummaryschema - What data does the DORA dashboard already expose that could feed gamification?
- Playground-first approach: should design experiments happen in
html-playgroundbefore pal-e-app? — YES, SOP created:sop-frontend-experiment
Acceptance Criteria
- Zero hardcoded hex values in component code — all via CSS custom properties
- Home page answers "what changed recently?" within 2 seconds of loading
- Passes the AI Slop Test: if someone saw it, they wouldn't immediately say "AI made this"
- Lock icons visible and tested for private notes
- Search works via URL params
- Light mode looks professional; dark mode looks intentional (not the default)
- Lighthouse accessibility score >= 90
QA Nits (deferred from PR #37)
- Negative
relativeTimehandling for future dates - Implicit
boardProgressreturn type — add explicit TS type - Asymmetric in-progress test assertion
Related
plan-pal-e-docs— parent planphase-pal-e-docs-validation-hardening— F10 (predecessor — design audit started there)phase-pal-e-docs-frontend-auth— F5 (auth foundation)phase-pal-e-docs-private-notes— F6 (private notes foundation)convention-frontend-css— CSS custom property rulessop-frontend-experiment— prototype-first workflow