fix: single-page sponsor dashboard — inline details, drag-and-drop, no inline CSS/JS #56
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
Replaces westside-playground#54/#55. Dashboard works but violates playground conventions (inline CSS/JS) and takes too many steps to manage sponsors. This ticket consolidates into a single page with inline expandable cards and drag-and-drop.
Repo
forgejo_admin/westside-playgroundUser Story
As an admin on my phone, I want to see my entire sponsor pipeline, tap a card to see details, drag to update status, and add notes — all without leaving the page — so I manage sponsors in seconds, not minutes.
Context
Current sponsor dashboard has 3 separate HTML pages. That's 2-3 taps to do anything. Mobile-first means Marcus should open ONE page and see everything. Details expand inline (no page navigation). Status changes are drag-and-drop or tap-to-change.
Design principle: "Client sees all their data with as few steps as possible."
MANDATORY: Read these files before writing ANY code:
shared/style.css— all CSS goes here, NO inline stylesshared/app.js— all JS goes here, NO inline scriptsadmin.html— structural template (nav, page-header, container, bottom-nav)sponsor-dashboard/index.html— keep the good parts (dark theme, stats row, svelte-notes)File Targets
Files the agent should modify:
sponsor-dashboard/index.html— rebuild as single-page app with board + inline detailsshared/style.css— add/update sponsor-specific classes (drag states, expandable cards, modal)shared/app.js— add sponsor interactivity (drag-and-drop, expand/collapse, view toggle, filter)Files the agent should DELETE:
sponsor-dashboard/sponsor-card.html— absorbed into inline expandable cardssponsor-dashboard/sponsor-list.html— absorbed into list view toggleAcceptance Criteria
Single page architecture:
sponsor-dashboard/index.htmlstyle=attributes anywhere<script>blocks — all JS in shared/app.jsStats bar:
.stats-rowat top: Total (44), Contacted (23), Responded (1), Committed (2), Declined (21)View toggle:
Pipeline board (board view):
Rich sponsor cards:
List view:
Mock data (matches real database state):
Svelte-notes annotations:
@route,@auth,@api,@state,@bottom-nav,@svelte-notescomment block/* Svelte: SponsorCard.svelte */etc.Test Expectations
grep -r 'style=' sponsor-dashboard/returns 0 resultsgrep -r '<script' sponsor-dashboard/returns only<script src=(no inline)Constraints
Checklist
Related
arch-domain-sponsorship— domain modelwestside-sponsors— tier definitions, active sponsors