Adds the unified rStack app switcher with pastel badges, emoji icons,
and categorized navigation across all 17 rStack apps.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace all fetch() calls and static fallbacks with real-time WebSocket
connection to the shared demo community. All card components now display
live Alpine Explorer 2026 data synced across the r* ecosystem.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- rVote proxy: use space-scoped /api/s/{slug}/api/proposals instead of top-level
- rNotes proxy: fetch all notebooks and filter by slug server-side
- rCart demo: map carts array directly (each cart = one gear item)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Convert demo page from static server component to interactive client
component with live data fetching and graceful static fallbacks
- Add /api/trips/by-slug/[slug] for slug-based trip lookup
- Add /api/trips/[id]/packing/[itemId] PATCH for toggling packed status
- Add proxy routes for rNotes, rVote, rCart (server-side, no CORS needed)
- Add demo trip seed script (prisma/seed-demo.ts)
- Packing checkboxes are now interactive with optimistic updates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>