PhoenixKitBookings

Universal booking module for PhoenixKit.

One install runs any mix of booking shapes — the shape is per-service configuration, never a module-level setting:

ArchetypeConfigExample
Day / night staystime_unit: night (or day), pooled seats inventory, min/max stay, check-in/out timesA hotel room type with 7 rooms
Fixed slotstime_unit: minutes, duration + slot_interval gridA massage parlor booked on the hour, for an hour
Free-formflexible_duration, min_duration, max_duration (blank = unlimited)A gym floor booked from any time, for any length

All three coexist in one install (a hotel that also offers massages), share one admin, one public surface, and one bookings table.

Features

Installation

# mix.exs of your PhoenixKit host app
{:phoenix_kit_bookings, "~> 0.1.0"}

Run mix deps.get, then mix phoenix_kit.update — the module owns its versioned migration (PhoenixKitBookings.Migrations.Schema, discovered via migration_module/0), so no core upgrade is needed. Enable Bookings on the admin Modules page.

Development

mix test.setup # createdb phoenix_kit_bookings_test + migrations
mix test # 74 tests; :integration auto-excluded without a DB
mix precommit # compile --warnings-as-errors, credo --strict, dialyzer

Cross-repo work against local checkouts: PHOENIX_KIT_PATH=../phoenix_kit and/or PHOENIX_LIVE_CALENDAR_PATH=../phoenix_live_calendar (unset = the published Hex pins). See AGENTS.md for architecture notes.