About this demo
This is what a guide association's website can look like when it is built only on the Keyguides Association Integration API. There is no database: every guide, tour, price, language and free time slot is fetched live from the API, and bookings are completed on keyguidesconnect.com through attributed links.
How it's built
- Server-side only. The API key lives in the server environment. Pages are Server Components; the interactive availability pickers call this site's own
/api/…/availabilityroutes, which call Keyguides. The browser never sees the key, and the API sends no CORS headers anyway. - No local copy of the catalog. Data is requested per page view; the API caches on its side. That keeps the site inside the spec's cache limits (catalog 60s, availability 30s, reference data 300s).
- Bookings stay on Keyguides. Booking links are built from
links.book.hrefTemplate, filling only parameters the API marks asimplemented, and always keeping the attribution parameters (kg_assoc,utm_*). - Only real choices. Durations, prices and the group limit come from the guide's
customTours; time slots from the availability endpoints.
Endpoints used
| Endpoint | Used on | Provides |
|---|---|---|
| GET /v1 | Footer status badge | Unauthenticated service info |
| GET /v1/associations/me | Site name, home hero | The association the API key belongs to |
| GET /v1/guides | Home, Our guides (filters, sort, paging) | Members, scoped to this association |
| GET /v1/guides/{id} | Guide profile | Profile, custom-tour durations and prices |
| GET /v1/guides/{id}/tours | Guide profile → "Tours with…" | A guide's published tours |
| GET /v1/guides/{id}/availability | Guide profile → booking widget | Free slots for a duration |
| GET /v1/tours | Home, Tours (filters, guests, paging) | Tours led by members |
| GET /v1/tours/{id} | Tour page | Description, offerings, guides |
| GET /v1/tours/{id}/availability | Tour page → booking widget | Free slots for a guide and offering |
| GET /v1/cities | Home, Destinations, filters | Cities with guide/tour counts |
| GET /v1/countries | Destinations, filters | Countries with counts |
| GET /v1/languages | Home stats, Destinations, filters | Languages with guide counts |
| GET /v1/interests | Destinations, filters, guide profile | Themes with guide counts |