···11-# Binaries
21bin/
32tmp/
43*.exe
···65*.dll
76*.so
87*.dylib
99-1010-# Test binary
118*.test
1212-1313-# Templ generated files
149*_templ.go
1515-1616-# Output of the go coverage tool
1710*.out
1818-1919-# Generated files
1111+*.secret
2012static/css/output.css
2121-2222-# Database
2313*.db
2414*.db-shm
2515*.db-wal
2626-2727-# IDE
2816.vscode/
2917.idea/
3018*.swp
3119*.swo
3220*~
3333-3434-# OS
3521.DS_Store
3636-3737-# Dependencies
3822vendor/
3939-4040-# Logs
4123*.log
4242-4343-# Nix
4424result
4525result-*
4626/arabica
4727/ogcard
4848-4949-# Other
5028*.bak
5151-5252-# Development files
5329known-dids.txt
5430moderators.json
5531roles.json
+49
.impeccable.md
···11+# Arabica Design Context
22+33+## Design Context
44+55+### Users
66+Mixed audience ranging from casual home brewers to serious hobbyists. The core user cares about their coffee craft — they track beans, dial in recipes, and want to see what the community is brewing. They use Arabica on phones (morning brew logging) and desktop (exploring data, browsing the feed). Context is unhurried — this isn't a work tool, it's a hobby companion.
77+88+### Brand Personality
99+**Cozy, social, inviting** — like a neighborhood specialty cafe where regulars share what they're drinking. Not clinical or corporate. The warmth comes from the subject matter (coffee, ritual, craft) and the community layer (AT Protocol federation, shared feed, likes/comments).
1010+1111+### Emotional Goals
1212+- **Calm satisfaction**: The quiet pleasure of a well-made cup — unhurried, grounded, warm
1313+- **Geeky delight**: Data is fun, details are rewarding — dialing in extraction is part of the joy
1414+- **Community belonging**: Seeing what others brew, sharing discoveries, social warmth
1515+- **Craft pride**: Your brewing journey documented — mastery over your process
1616+1717+### Aesthetic Direction
1818+**Visual references:**
1919+- Specialty coffee bag packaging (Counter Culture, Onyx, George Howell) — craft labels, earthy tones, confident typography, tactile feel
2020+- Analog journals — Moleskine notebooks, handwritten brew logs, the texture of paper and ink
2121+2222+**Anti-references:**
2323+- Generic SaaS dashboards, corporate productivity tools
2424+- Overly techy/developer aesthetic — data should feel warm, not cold
2525+- Social media feed clones (Instagram/Twitter layouts with no personality)
2626+2727+**Theme:** Light + dark (both supported, OS preference + manual toggle). The warm brown palette (#4a2c2a family) and cream backgrounds (#FAF7F5) are core to the identity.
2828+2929+**Typography:** Iosevka Patrick (custom monospace Nerd Font) is the established body/UI font and well-liked by users. Open to pairing with a warmer display font for headings to soften the technical feel while keeping Iosevka's character for body text and data.
3030+3131+### Design Principles
3232+3333+1. **Warmth over precision** — Brown paper, not graph paper. Even data-heavy views should feel handcrafted, not clinical. Tint everything toward the coffee palette.
3434+3535+2. **Quiet confidence** — Like a well-designed coffee bag: strong typography, restrained color, no need to shout. Let the content (brews, beans, community) be the star.
3636+3737+3. **Tactile texture** — Evoke the analog: the weight of a ceramic mug, the grain of a kraft label, the soft edge of a journal page. Avoid flat, sterile surfaces.
3838+3939+4. **Community as atmosphere** — The social feed should feel like overhearing conversations at a cafe, not scrolling a timeline. Presence over performance.
4040+4141+5. **Respect the ritual** — Coffee brewing is meditative. The interface should match that pace — no urgency, no pressure, no gamification. Every interaction should feel intentional.
4242+4343+### Existing Design System
4444+- **Colors:** Brown 50-900 scale + amber accents, CSS custom properties for all surfaces
4545+- **Font:** Iosevka Patrick (400/500/600 weights), monospace throughout
4646+- **Components:** Cards, tables, combo-selects, feed cards, filter pills, modals, badges
4747+- **Shadows:** 3-tier system (sm/md/lg) with warm-tinted rgba
4848+- **Animations:** Quick (100-400ms), fade+slide patterns, like-pop interaction
4949+- **Theme:** Full light/dark with CSS variables, OS preference detection
+25
CLAUDE.md
···230230- `go mod download -json MODULE` — get dependency source path
231231- `go doc foo.Bar` — read package/type/function docs
232232- `go run ./cmd/server` instead of `go build` to avoid artifacts
233233+234234+## Design Context
235235+236236+See `.impeccable.md` for the full design system reference. Key points:
237237+238238+### Brand Personality
239239+**Cozy, social, inviting** — like a neighborhood specialty cafe. Warm, not
240240+clinical. The emotional goals are calm satisfaction, geeky delight, community
241241+belonging, and craft pride.
242242+243243+### Visual References
244244+- Specialty coffee bag packaging (Counter Culture, Onyx) — craft labels, earthy
245245+ tones, confident type
246246+- Analog journals — Moleskine, handwritten brew logs, texture of paper and ink
247247+248248+### Design Principles
249249+1. **Warmth over precision** — Brown paper, not graph paper
250250+2. **Quiet confidence** — Strong typography, restrained color, let content shine
251251+3. **Tactile texture** — Evoke the analog: ceramic, kraft, journal pages
252252+4. **Community as atmosphere** — Cafe conversations, not social media timelines
253253+5. **Respect the ritual** — No urgency, no gamification, intentional interactions
254254+255255+### Typography
256256+Iosevka Patrick (custom monospace) is the core UI font. Open to pairing with a
257257+warmer display font for headings.
+91
docs/design-audit.md
···11+# Design Audit — April 2026
22+33+## What's Already Working
44+55+- **Coffee-tinted shadows** (`rgba(61,35,25,...)` instead of black) — subtle, distinctive
66+- **Like-pop animation** — multi-point spring scale, genuinely delightful
77+- **Feed card stagger** — nth-child delays create alive-feeling lists
88+- **Dark mode** — thoughtful (amber focus rings, warm undertones preserved, not lazy inversion)
99+- **Custom Iosevka Patrick font** — gives personality that system fonts can't
1010+- **Filter pill hover/active pattern** — outline previews type color, fills on select
1111+- **Brown palette** — custom, not Tailwind defaults; follows coffee color progression
1212+- **CSS variable architecture** — 100+ design tokens, robust theme switching
1313+1414+## Core Problem
1515+1616+Arabica has strong *tokens* (colors, font, shadows) but **generic *patterns***. The
1717+brown palette is distinctive, but it's applied to layouts that could be any admin
1818+dashboard: same-sized cards in grids, identical icon+label metadata rows repeated
1919+30+ times, flat tab navigation, uniform spacing. The "craft coffee journal" feeling
2020+lives in the color tokens but not in the structure or typography.
2121+2222+## High-Impact Opportunities
2323+2424+### 1. Typography — Display Font Pairing
2525+2626+Iosevka does everything: headings, body, labels, data. No typographic *contrast*.
2727+A warm display face for headings paired with Iosevka for body/data would separate
2828+"content you read" from "data you scan."
2929+3030+Brand words: cozy, textured, handcrafted. Think: the typeface on a specialty coffee
3131+bag label — confident, slightly imperfect, warm. Not a geometric sans. Something
3232+with character like Bitter (earthy slab serif), Vollkorn (warm old-style), or
3333+Zilla Slab (humanist slab — sturdy, approachable, uncommon).
3434+3535+### 2. Entity Cards Need Visual Identity
3636+3737+Bean, Roaster, Grinder, Brewer, Recipe cards are structurally identical — same
3838+layout, same icon+label grid, same spacing. They should feel like different kinds
3939+of objects in a collection:
4040+4141+- **Bean cards**: roast-level color indicator, origin as visual badge
4242+- **Brewer cards**: method icon (V60, espresso portafilter, AeroPress)
4343+- **Recipe cards**: different proportions, recipe-card feel
4444+- **Roaster cards**: location as primary visual element
4545+4646+### 3. Feed Cards — Replace the Left-Stripe
4747+4848+The 3px `border-left` colored stripe is the most recognizable Arabica pattern, but
4949+it's also one of the most generic dashboard conventions. The type-color system
5050+(brew=#6b4423, bean=#b45309, etc.) is good — needs a less templated expression:
5151+5252+- Small colored dot or pill badge with type name
5353+- Subtle background tint (bean cards get faint amber wash)
5454+- Type icon in card header instead of a border
5555+5656+### 4. Spacing Rhythm
5757+5858+Almost everything is `p-4` or `p-6`. Pages feel evenly padded rather than composed.
5959+Brew view should breathe differently than a management table. Rating deserves more
6060+space. Section transitions need varied gaps — tight within, generous between.
6161+6262+### 5. Welcome/Landing Experience
6363+6464+Unauthenticated visitors see a login form and bullet points. No hero moment, no
6565+imagery, no personality. First impression should feel like picking up a beautiful
6666+bag of coffee, not opening a SaaS tool.
6767+6868+### 6. Empty States & Loading
6969+7070+Skeletons are generic pulse animations. Empty states are plain text. Missed
7171+personality moments — "No beans yet. Time to visit your local roaster."
7272+7373+### 7. Form Modals Are Interchangeable
7474+7575+All 5 entity creation dialogs identical. Fields could be grouped semantically.
7676+Required vs optional have no visual distinction. Forms work but feel like database
7777+admin, not a coffee journal.
7878+7979+## Medium-Impact Opportunities
8080+8181+- **Buttons too uniform** — every button is `btn-primary`, no hierarchy
8282+- **Section headers** use `uppercase tracking-wider` as visual crutch
8383+- **Rounded corners everywhere** — no sharp edges for texture contrast
8484+- **No micro-interactions** beyond like-pop — card hovers only change shadow
8585+8686+## Suggested Priority
8787+8888+1. Display font pairing (foundational — touches every page)
8989+2. Feed card + entity card visual identity (most-seen components)
9090+3. Welcome/landing redesign (first impression)
9191+4. Spacing rhythm on key pages (brew view, feed)