mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
1.9 KiB
1.9 KiB
Trip Doctor
A hooks-only example plugin that enriches TREK's own planner — no UI of its own.
Trip Doctor is the companion example for the provider hooks and entity metadata added in #1429. It shows how a plugin can contribute data that TREK renders natively, instead of shipping its own iframe widget.
What it does
- Warnings — scans the open trip and flags places with no map location, plus a
tip when the trip has no bookings yet. These appear as a non-blocking banner at
the top of the trip planner (via the
warningProviderhook). - Place notes — pin a private note on any place; it shows up as a "Note" row at
the foot of the place-detail panel (via the
placeDetailProviderhook). Notes are stored in the plugin's own per-plugin metadata (ctx.meta), not in a schema fork. POST /pin{ placeId, note }— set or clear a place's note. Call it from a companion widget, a keyboard shortcut, orcurl.
Permissions
| Permission | Why |
|---|---|
db:read:trips |
Read the trip's places + reservations to find gaps. Membership-checked by the host — the plugin only ever sees a trip the current user can access. |
db:meta |
Store/read the plugin's own note on a place. Isolated to this plugin; writes require the user's place_edit permission. |
hook:trip-warning-provider |
Contribute the validation warnings shown in the planner. |
hook:place-detail-provider |
Contribute the "Note" row shown on a place. |
No network access. Every read and write is bound by the host to the person viewing the planner — Trip Doctor never passes a user id, and a hook that errors or runs long is dropped without affecting the planner.
Run it
npx @trek/plugin-sdk dev # hot-reload against a local TREK
npx @trek/plugin-sdk pack # build a signed .trekplugin bundle
See the Plugin Cookbook for the individual recipes this example is built from.