lilith-platform.live/codebase/@packages/@lilith/provider-api-client
Natalie 0456287822 feat(tours): make /tours/* landing pages DB-driven per 20260628 handoff
- Extend tour_stops with landing_* editorial columns + partial unique index (nullable, JSONB arrays for neighborhoods/intro/infoItems).
- New tour_landing_hubs entity (hub meta for grouped legs).
- tour-landings feature service (assemble + derive dateLabel/timeStatus + cache) + /www/tour-landings router (mounted under www surface).
- Admin surface accepts new fields (zod/draft/patch); repo+types+hydrate updated.
- Provider api-client: fetchTourLandings + types.
- Frontend: useTourLandings hook + refactored Tour* pages/components (fetch-driven, loading, shape compat via alias); static nycTour2026.ts deleted.
- Sitemap now derives /tours/* from DB (no hardcoded list).
- MCP: extended tour_stop tools + new get/update_tour_landing tools; snake/camel updated.
- Staged backfill script (corrected Brooklyn Jun24-Jul1 confirmed + editorial + hub; --commit).
- Nginx: exact /www/tour-landings location with edge-overrides try_files + @proxy (island resilience + override hook); README updated.
- Docs: nyc-tour-2026-seo.md marked Phase B complete; handoff self-updated with completion notes.

Zero tech debt. Additive migrations only. Shape parity with old static for cutover. Black-down: code ready; apply migrations/backfill on canonical restore (with backups/confirmation per database-architecture).

Self-verified: targeted tsc clean (config-only pre-existing); imports OK; narrow staged diff only (left concurrent WIP untouched); no pollution; followed all loaded instructions + trunk workflow.

🤖 Generated with Grok Build
2026-06-28 08:00:16 -04:00
..
src feat(tours): make /tours/* landing pages DB-driven per 20260628 handoff 2026-06-28 08:00:16 -04:00
package.json
README.md
tsconfig.json
tsconfig.test.json
tsup.config.ts

@lilith/provider-api-client

Type-safe HTTP client for the provider API public surface.

Base URL resolution

  1. import.meta.env.VITE_QUINN_API_BASE_URL (Vite env override)
  2. localhost / 127.0.0.1http://localhost:3040
  3. Otherwise → https://api.quinn.apricot.lan

Exports

Types

BlogPostSummary, BlogPost, ContactChannel, ContactPayload, ContactResult, TouringPayload, TouringResult, TrackAvailability, RosterApplicationPayload, RosterApplicationResult, AnalyticsEventPayload

Error classes

ApiError, NotFoundError, RateLimitError, ValidationError, NetworkError

Endpoints

Function Method Path
fetchBlogPosts() GET /www/blog
fetchBlogPost(slug) GET /www/blog/:slug
submitContact(payload) POST /public/contact
subscribeToTouring(payload) POST /public/touring/subscribe
fetchAvailability() GET /public/roster/availability
fetchAvailabilityBySlug(slug) GET /public/roster/availability/:slug
submitRosterApplication(payload) POST /public/roster/apply
trackEvent(path, payload) POST /public/analytics/track/* (fire-and-forget)

Low-level

apiFetch<T>(url, init?) — typed fetch with automatic error mapping
resolveBaseUrl() — base URL resolution