Commit Graph

38 Commits

Author SHA1 Message Date
Jeff Emmett 54e4feef1d fix: add Traefik priority 130 to override rspace-online routing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 14:30:44 -08:00
Jeff Emmett 9f28365c96 feat: standardize header, categories, cross-app spaces
- AppSwitcher: rTube/rSwag → Creating, rSocials → Sharing, rData → Observing
- EcosystemFooter: updated link order to match new categories
- UserMenu: 🔑 Sign In button, 🔐 lock when logged in
- SpaceSwitcher: reads EncryptID token, sends Bearer header
- /api/spaces proxy: forwards to rspace.online (canonical spaces)
- /api/me: verifies EncryptID token for auth status
- Header.tsx: standardized bg-slate-900/85 across all apps

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 14:16:58 -08:00
Jeff Emmett 6ad00b2dca feat: add space subdomain routing and ownership support
- Traefik wildcard HostRegexp for <space>.r*.online subdomains
- Middleware subdomain extraction and path rewriting
- Provision endpoint with owner_did acknowledgement
- Registry enforces space ownership via EncryptID JWT

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 13:20:19 -08:00
Jeff Emmett 3eb1e9d41f Standardize emojis across header, favicons, and ecosystem links
Canonical emoji set for consistency:
- 🕸️ rNetwork (was 🌐), ⚖️ rChoices (was 🔀), 📋 rWork (was 💼)
- 🔐 rIdentity (was 🔑), 📖 rPubs (was 📰), 💸 rFunds (was 💰)
- 💰 rWallet (was 💼 in footer), 📬 rInbox (was ✉️)
- 💭 rForum (was 💬, differentiates from rChats)
- 📢 rSocials (was 📱), 🔨 rAuctions (was 🏛️ in footer)
- 🎬 rTube (was 📹 in footer)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 12:57:13 -08:00
Jeff Emmett f7437de939 Add internal provision endpoint for rSpace Registry
Simple acknowledge endpoint — trips associated on creation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 00:30:19 -08:00
Jeff Emmett 572f9feea3 feat: expand landing page and move Header to layout
Add Features and Built for Groups sections. Move Header from page.tsx
to layout.tsx for all sub-routes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 00:04:31 -08:00
Jeff Emmett 6f62d8133a fix: space links use subdomain URLs instead of rspace.online path
Space links now go to <space>.<app-domain> (e.g., myspace.rfunds.online)
instead of rspace.online/<space>. Domain derived from window.location
when not explicitly provided.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:18:26 -08:00
Jeff Emmett 4fb854c3e4 fix: nest Sign Out under username dropdown in UserMenu
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:09:14 -08:00
Jeff Emmett dcca5d78fb feat: standardize header with AppSwitcher, SpaceSwitcher, and UserMenu
- Replace inline nav/Navbar with shared Header component
- Header pattern: AppSwitcher dropdown / SpaceSwitcher / actions / Sign In
- SpaceSwitcher and UserMenu work without SDK dependency
- Consistent across all r*Apps

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:03:07 -08:00
Jeff Emmett cb653de115 feat: standardize AppSwitcher and EcosystemFooter across all rApps
- Update AppSwitcher with all 26 r*Apps in 8 categories
- Add EcosystemFooter component with consistent ecosystem links
- Categories: Creating, Planning, Communicating, Deciding,
  Funding & Commerce, Social & Media, Work & Productivity,
  Identity & Infrastructure

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:47:59 -08:00
Jeff Emmett fe150f7ac0 refactor: migrate EncryptID URLs from encryptid.jeffemmett.com to auth.ridentity.online
Part of the ridentity.online branding migration. The EncryptID auth
server is now accessible at auth.ridentity.online (with the legacy
encryptid.jeffemmett.com kept as a backward-compatible alias).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:20:07 -08:00
Jeff Emmett bc00fffdbd fix: dark background + emoji favicon for rStack design consistency
Standardize to dark background (#0f172a / slate-900) and add emoji
data URI favicon matching the rStack ecosystem.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:19:08 -08:00
Jeff Emmett c086b47315 feat: add rStack AppSwitcher dropdown to header
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>
2026-02-24 19:15:53 -08:00
Jeff Emmett d6d9ad71bd Add .dockerignore for optimized Docker builds
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 17:49:05 -07:00
Jeff Emmett 2a8dd0be07 backlog: mark task-2 (Porkbun NS to Cloudflare) as Done
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 16:06:04 -07:00
Jeff Emmett 0bcc5fff48 Add rData analytics tracking and ecosystem footer link
- Inject rdata.online/collect.js tracking script in layout
- Add rData link to ecosystem footer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 18:57:08 +00:00
Jeff Emmett 5e9b3f828a feat: add EncryptID auth with role-based access control
AuthProvider wraps layout, auth.ts provides requireAuth/isAuthed/requireTripRole.
POST/PUT/DELETE routes require auth, GET routes remain open for demo access.
Trip creator is added as OWNER collaborator. Dockerfile updated for SDK copy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 10:20:17 +00:00
Jeff Emmett 608686b22d feat: standardize ecosystem footer with all 16 r-suite apps
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 09:43:05 +00:00
Jeff Emmett 240c2fa7f1 docs: add MODULE_SPEC.md with permission model and capabilities
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 12:30:14 -07:00
Jeff Emmett c0c61f4f76 chore: add rInbox to r* Ecosystem footer
Add rinbox.online link to the ecosystem footer navigation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 18:31:21 -07:00
Jeff Emmett 5dfa9516fb chore: add backlog tasks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:16:59 -07:00
Jeff Emmett fa778edc75 feat: rewrite demo page with live rSpace data via useDemoSync
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>
2026-02-15 09:39:05 -07:00
Jeff Emmett 6c6fb8a857 chore: add @encryptid/sdk dependency
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 09:36:07 -07:00
Jeff Emmett 1ffebff24c Use top-level rvote proposals endpoint (space-scoped route broken on server)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 09:34:17 -07:00
Jeff Emmett e5f4c7040e Fix proxy endpoints and demo data mapping for live cross-service data
- 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>
2026-02-15 09:25:15 -07:00
Jeff Emmett 0d3d636751 Add interactive demo with cross-service data via proxy routes
- 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>
2026-02-15 09:05:35 -07:00
Jeff Emmett 1a7e754425 feat: complete r* ecosystem footers on landing and demo pages
Replace minimal footer with full 10-app ecosystem footer on landing page.
Update demo footer: rename rStack to r* Ecosystem, add rNetwork, fix emoji order.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 08:58:44 -07:00
Jeff Emmett da52b6ad19 Add rStack demo page with Alpine Explorer 2026 showcase
Interactive demo at /demo featuring 6 rStack tool previews:
rMaps (SVG route map), rNotes (packing checklist), rCal (calendar grid),
rVote (group polls), rFunds (expense tracking), rCart (shared gear).
Each card links to the corresponding r*.online service.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 08:29:27 -07:00
Jeff Emmett 5f33bcbc7d Add task_prefix to backlog config
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:40:28 -07:00
Jeff Emmett 35ca3987a0 Add emoji favicon (✈️) for browser tab
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:13:36 -07:00
Jeff Emmett 512b6e9e13 Update backlog: DNS in progress, temp tokens revoked
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 12:48:23 -07:00
Jeff Emmett 3a2eb3ff34 Initialize backlog and add project tasks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 12:41:46 -07:00
Jeff Emmett 2a73df8ce2 Add public/.gitkeep for Docker build
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 12:38:39 -07:00
Jeff Emmett 09dd98bf6d Add tmpfs for npm cache in read_only container
Allows Prisma CLI operations to work within the
security-hardened read_only container.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 12:35:45 -07:00
Jeff Emmett b90e1fc9cd Add initial Prisma migration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 12:24:53 -07:00
Jeff Emmett 5949973d13 Add canvas creation and two-way sync API routes
- POST /api/trips/[id]/canvas: auto-creates rspace community, populates
  with trip shapes (itinerary, destinations, bookings, budget, packing)
- POST /api/trips/[id]/sync: receives shape updates from canvas postMessage
  bridge, updates corresponding DB records
- Trip dashboard: wires up onShapeUpdate callback, adds "Create Canvas" button

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 12:20:58 -07:00
Jeff Emmett cc88cdd0d8 Add canvas sync bridge for rspace.online integration
PostMessage listener in CanvasEmbed receives shape updates from
the embedded rspace canvas iframe. Canvas-sync utility provides
type guards and API helpers for pushing shapes to rspace.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 12:16:58 -07:00
Jeff Emmett 8c13f6ad71 Initial rtrips-online scaffold
Next.js 14 app with Prisma (PostgreSQL), Gemini NL parser,
Tailwind dark theme, Docker + Traefik deployment config.

Features:
- Landing page with teal/cyan branding
- NL input → Gemini 2.0 Flash parsing → structured trip data
- Full Prisma schema (trips, destinations, itinerary, bookings,
  expenses, packing items, collaborators)
- Trip CRUD API routes with all sub-entities
- Trip dashboard with tabbed views (overview, itinerary,
  destinations, bookings, budget, packing)
- Embedded rSpace canvas with full-screen mode
- Docker multi-stage build with security hardening
- Health check endpoint

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 12:10:22 -07:00