H1FareHarbor integration via simple html pages
Status: working for booking pages and Lightframe, but not the best final shape for app-router widget rendering.
H2What we tested
- Direct booking button with the FareHarbor Lightframe API.
- General calendar embed.
- General item grid embed.
- Specific calendars for Córdoba and Granada Walks.
H2What worked
- The Lightframe book button works inside the Next.js app route.
- The same embed markup works in the standalone static HTML test page.
- The app-router route works when the FareHarbor widget markup is isolated inside a parsed HTML island.
H2What failed
- Rendering the calendar and grid widgets directly as React children caused hydration mismatch and/or no render.
- Deferring the scripts with
next/scriptdid not reliably reproduce the static HTML behavior.
H2Current conclusion
For now, the safest app-side test surface is an isolated route that renders the working FareHarbor markup inside a browser-parsed HTML island.
That means:
- Keep the simple static booking pages as a fallback if needed.
- Keep the app-router test route as the integration verification surface.
- Treat the calendar and item-grid embeds as DOM-parsing widgets, not ordinary React components.
H2Deployment note
If the final production surface uses a Next.js app, the booking entry can stay in-app, but the widget-heavy pages should either:
- be embedded through a parsed HTML island, or
- remain on simple HTML pages linked from the app.
The main lesson is that Lightframe and the calendar/grid embeds do not share the same render behavior.