@ossy/booking
v3.0.5
Published
Booking feature package — services, availability, and appointment management for Ossy providers
Readme
@ossy/booking
Booking feature package for the Ossy platform. Lets providers define services, set weekly availability, and accept client bookings.
Pages
| Page | Path | Audience |
|------|------|----------|
| public-booking | /book/:providerSlug · /boka/:providerSlug | Public (clients) |
| services | /services · /tjanster | Provider (authenticated) |
| bookings | /bookings · /bokningar | Provider (authenticated) |
| availability-setup | /availability · /tillganglighet | Provider (authenticated) |
| booking-detail | /bookings/:bookingId · /bokningar/:bookingId | Provider (authenticated) |
Public booking flow
- Client opens
public-booking(no auth;metadata.public: true) - Picks a service → calendar slot → contact details
@ossy/booking/actions/createstores a pending booking and sends notification emails
Actions
Actions are declared in *.action.js and discovered at build time. Each action delegates to a matching *.task.js.
| Action | Access |
|--------|--------|
| @ossy/booking/actions/get-services | public |
| @ossy/booking/actions/create-service | workspace |
| @ossy/booking/actions/update-service | workspace |
| @ossy/booking/actions/delete-service | workspace |
| @ossy/booking/actions/create | public |
| @ossy/booking/actions/list | workspace |
| @ossy/booking/actions/confirm | workspace |
| @ossy/booking/actions/decline | workspace |
| @ossy/booking/actions/cancel | authenticated |
| @ossy/booking/actions/get-availability | workspace |
| @ossy/booking/actions/save-availability | workspace |
| @ossy/booking/actions/get-available-slots | public |
Schemas
Resource schemas live in src/*.schema.js and are auto-discovered by @ossy/app build. Canonical ids are exported from schema-ids.js as BookingSchema:
| Schema | Id | File |
|--------|----|------|
| Service | @ossy/booking/schema/service | service.schema.js |
| Booking | @ossy/booking/schema/booking | booking.schema.js |
| Availability | @ossy/booking/schema/availability | availability.schema.js |
| Public booking form | @ossy/booking/schema/public-booking-form | public-booking-form.schema.js |
Documents are stored under canonical locations. Import paths from @ossy/booking (services, bookings, availability).
Tasks write resources via commitResource / mutateResource from @ossy/resources/server, using schemaId on resource events (ADR 0008).
Projections
| Projection | Id | Purpose |
|------------|----|---------|
| BookingListProjection | @ossy/booking/data/booking-list | Workspace-scoped booking list; @ossy/booking/actions/list reads this first and falls back to a resource scan |
View slots
| Component | Slot key |
|-----------|----------|
| service-detail.component.jsx | @ossy/booking/view/service |
| service-card-slot.component.jsx | @ossy/booking/view/service/card |
| booking-card.component.jsx | @ossy/booking/view/booking/card |
See SPEC.md for the full product specification.
Preview
Booking pages and flows are exercised in @ossy/app-test on the production build path. Enable the package in devEntitlements, then open Booking from the sidebar or /packages/booking. See packages/app-test/README.md.
