# Rank Interactive feature prioritization tool for `rank.friborg.uk`. ## Product definition Rank is a fast intake and prioritization board for product ideas from Jimmi and agents. Core loop: `Capture idea → score impact/effort/confidence/urgency → drag into milestone → revisit top-ranked work` Chosen subdomain: `rank.friborg.uk` — short, memorable, and honest about the job. ## UX principles - One-screen capture, no modal ceremony. - Keyboard-first: `/` focuses capture, Enter saves. - Plain sharp visual system: zero rounded corners, dark space/glass, high contrast. - Milestones are customizable lanes, not a rigid roadmap prison. - Agents can post ideas through the same API endpoint as the UI. ## Architecture - Node/Express app on port `3045` - Static SPA in `public/` - Appwrite TablesDB persistence - Docker deploy on Unraid - Gitea remote repo - Nginx Proxy Manager routes `rank.friborg.uk` → `192.168.30.100:3045` ## Appwrite schema Database: `priority_rank` Tables: - `ideas` — title, description, source, sourceName, milestoneId, impact, effort, confidence, urgency, score, rank, labels, notes, archived - `milestones` — name, description, horizon, color, position, active - `activity` — small append-only UX feed ## Commands ```bash npm run setup:appwrite npm run check PORT=3045 node server.js npm run smoke ``` Agent idea post: ```bash curl -X POST https://rank.friborg.uk/api/ideas \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $RANK_AGENT_TOKEN" \ -d '{"title":"Add public roadmap export","source":"agent","sourceName":"Rook","impact":8,"effort":3,"confidence":7,"urgency":5}' ```