NobGit
public imalexnord read

Slot

Calendar-first scheduling powered by Cloudflare Workers and Google Calendar.

Languages

Repository composition by tracked source files.

TypeScript
TypeScript 79% CSS 19% SQL 2% HTML 0%
Create file Wiki Documentation
Clone
https://nobgit.com/user/imalexnord/slot.git
ssh://[email protected]:2222/user/imalexnord/slot.git

Trace

ARCHITECTURE.md

Trace helps you understand code history line by line. See who changed each line, when it changed, and which commit introduced it.

ARCHITECTURE.md on main
Author Date Commit Line Code
Alex Nord 3 days ago 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
1
# Architecture
Open commit View diff
1 # Architecture
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
2
Open commit View diff
2
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
3
```text
Open commit View diff
3 ```text
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
4
Visitor
Open commit View diff
4 Visitor
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
5
Open commit View diff
5
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
6
Open commit View diff
6
Alex Nord 3 days ago 56fdb61

Remove personal domain defaults

Full commit hash
56fdb6196bb38f86706331fa1d085936c70c7ac8
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
7
your-booking-domain.example
Open commit View diff
7 your-booking-domain.example
Alex Nord 3 days ago 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
8
Open commit View diff
8
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
9
  ├── static React UI ───────────────┐
Open commit View diff
9 ├── static React UI ───────────────┐
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
10
  │                                  │ one Worker deployment
Open commit View diff
10 │ │ one Worker deployment
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
11
  └── /api/* Cloudflare Worker ──────┘
Open commit View diff
11 └── /api/* Cloudflare Worker ──────┘
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
12
Open commit View diff
12
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
13
             ├── D1
Open commit View diff
13 ├── D1
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
14
             │    settings
Open commit View diff
14 │ settings
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
15
             │    bookings
Open commit View diff
15 │ bookings
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
16
             │    OAuth token (AES-GCM encrypted)
Open commit View diff
16 │ OAuth token (AES-GCM encrypted)
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
17
             │    OAuth state
Open commit View diff
17 │ OAuth state
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
18
             │    short-lived slot locks
Open commit View diff
18 │ short-lived slot locks
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
19
             │    basic rate limits
Open commit View diff
19 │ basic rate limits
Alex Nord about 23 hours ago 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
20
             │    Stripe payment/refund state
Open commit View diff
20 │ Stripe payment/refund state
same change 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
21
             │    reschedule proposals (hashed bearer tokens)
Open commit View diff
21 │ reschedule proposals (hashed bearer tokens)
Alex Nord about 22 hours ago 92deb90

feat: add public booking IDs and self-service cancellation

Full commit hash
92deb90d0872b02f6bac0f855281cdb9a73596db
Author
Alex Nord <[email protected]>
Date
about 22 hours ago
Selected line
22
             │    append-only admin activity events
Open commit View diff
22 │ append-only admin activity events
Alex Nord 3 days ago 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
23
Open commit View diff
23
Alex Nord 1 day ago 9abcc27

Added Stripe payments

Full commit hash
9abcc271f095921a2c76e260009e53cda98d817a
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
24
             ├── Google Calendar API
Open commit View diff
24 ├── Google Calendar API
same change 9abcc27

Added Stripe payments

Full commit hash
9abcc271f095921a2c76e260009e53cda98d817a
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
25
             │    FreeBusy
Open commit View diff
25 │ FreeBusy
same change 9abcc27

Added Stripe payments

Full commit hash
9abcc271f095921a2c76e260009e53cda98d817a
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
26
             │    Event creation
Open commit View diff
26 │ Event creation
same change 9abcc27

Added Stripe payments

Full commit hash
9abcc271f095921a2c76e260009e53cda98d817a
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
27
             │    Google Meet creation
Open commit View diff
27 │ Google Meet creation
same change 9abcc27

Added Stripe payments

Full commit hash
9abcc271f095921a2c76e260009e53cda98d817a
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
28
             │    attendee invitation
Open commit View diff
28 │ attendee invitation
same change 9abcc27

Added Stripe payments

Full commit hash
9abcc271f095921a2c76e260009e53cda98d817a
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
29
Open commit View diff
29
same change 9abcc27

Added Stripe payments

Full commit hash
9abcc271f095921a2c76e260009e53cda98d817a
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
30
             └── Stripe API
Open commit View diff
30 └── Stripe API
same change 9abcc27

Added Stripe payments

Full commit hash
9abcc271f095921a2c76e260009e53cda98d817a
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
31
                  Checkout Sessions
Open commit View diff
31 Checkout Sessions
Alex Nord about 23 hours ago 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
32
                  PaymentIntent refunds
Open commit View diff
32 PaymentIntent refunds
same change 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
33
                  signed payment/refund webhooks
Open commit View diff
33 signed payment/refund webhooks
Alex Nord 3 days ago 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
34
```
Open commit View diff
34 ```
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
35
Open commit View diff
35
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
36
## Booking transaction
Open commit View diff
36 ## Booking transaction
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
37
Open commit View diff
37
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
38
1. Calculate candidate times inside weekly availability.
Open commit View diff
38 1. Calculate candidate times inside weekly availability.
Alex Nord 1 day ago 110f91e

Adding indication for test/live key

Full commit hash
110f91e747192b16de709ea11c5eea17eaeadd48
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
39
2. Subtract Google FreeBusy ranges and recent D1 reservations.
Open commit View diff
39 2. Subtract Google FreeBusy ranges and recent D1 reservations.
Alex Nord 3 days ago 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
40
3. Visitor chooses a start and duration.
Open commit View diff
40 3. Visitor chooses a start and duration.
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
41
4. Server recomputes availability rather than trusting the browser.
Open commit View diff
41 4. Server recomputes availability rather than trusting the browser.
Alex Nord 1 day ago 110f91e

Adding indication for test/live key

Full commit hash
110f91e747192b16de709ea11c5eea17eaeadd48
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
42
5. D1 reserves each time segment touched by the booking and buffers.
Open commit View diff
42 5. D1 reserves each time segment touched by the booking and buffers.
Alex Nord 3 days ago 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
43
6. Google FreeBusy is checked once more.
Open commit View diff
43 6. Google FreeBusy is checked once more.
Alex Nord 1 day ago 110f91e

Adding indication for test/live key

Full commit hash
110f91e747192b16de709ea11c5eea17eaeadd48
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
44
7. If payment is disabled, the normal Google event is created and the booking is confirmed immediately.
Open commit View diff
44 7. If payment is disabled, the normal Google event is created and the booking is confirmed immediately.
same change 110f91e

Adding indication for test/live key

Full commit hash
110f91e747192b16de709ea11c5eea17eaeadd48
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
45
8. If payment is enabled, Slot creates a **private owner-only Google Calendar hold** with no attendee invitation. A Google Meet conference may be attached to the hold internally, but it is not exposed to the visitor.
Open commit View diff
45 8. If payment is enabled, Slot creates a **private owner-only Google Calendar hold** with no attendee invitation. A Google Meet conference may be attached to the hold internally, but it is not exposed to the visitor.
same change 110f91e

Adding indication for test/live key

Full commit hash
110f91e747192b16de709ea11c5eea17eaeadd48
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
46
9. Stripe Checkout opens for the calculated duration × per-minute rate. The Checkout Session expires after 30 minutes.
Open commit View diff
46 9. Stripe Checkout opens for the calculated duration × per-minute rate. The Checkout Session expires after 30 minutes.
same change 110f91e

Adding indication for test/live key

Full commit hash
110f91e747192b16de709ea11c5eea17eaeadd48
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
47
10. A signed Stripe webhook is the primary fulfillment signal. Only after `payment_status=paid` does Slot convert the private hold into the attendee event, send Google Calendar updates, expose the Meet link, and mark the booking confirmed.
Open commit View diff
47 10. A signed Stripe webhook is the primary fulfillment signal. Only after `payment_status=paid` does Slot convert the private hold into the attendee event, send Google Calendar updates, expose the Meet link, and mark the booking confirmed.
same change 110f91e

Adding indication for test/live key

Full commit hash
110f91e747192b16de709ea11c5eea17eaeadd48
Author
Alex Nord <[email protected]>
Date
1 day ago
Selected line
48
11. Cancelled or expired Checkout sessions release the private hold and D1 locks. A return-page status check provides an idempotent fallback if the webhook and browser redirect arrive in the opposite order.
Open commit View diff
48 11. Cancelled or expired Checkout sessions release the private hold and D1 locks. A return-page status check provides an idempotent fallback if the webhook and browser redirect arrive in the opposite order.
Alex Nord 3 days ago 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
49
Open commit View diff
49
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
50
## Why D1 exists
Open commit View diff
50 ## Why D1 exists
same change 45c38c3

Prepare Slot booking worker

Full commit hash
45c38c3ae5284118e8d65aa9d49e90850b1209f5
Author
Alex Nord <[email protected]>
Date
3 days ago
Selected line
51
Open commit View diff
51
Alex Nord about 22 hours ago 92deb90

feat: add public booking IDs and self-service cancellation

Full commit hash
92deb90d0872b02f6bac0f855281cdb9a73596db
Author
Alex Nord <[email protected]>
Date
about 22 hours ago
Selected line
52
Google Calendar owns calendar truth. D1 only holds application state Google does not provide: UI settings, booking metadata, encrypted OAuth credentials, concurrency locks, payment/refund state, and the admin activity history.
Open commit View diff
52 Google Calendar owns calendar truth. D1 only holds application state Google does not provide: UI settings, booking metadata, encrypted OAuth credentials, concurrency locks, payment/refund state, and the admin activity history.
Alex Nord about 23 hours ago 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
53
Open commit View diff
53
same change 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
54
## Booking management
Open commit View diff
54 ## Booking management
same change 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
55
Open commit View diff
55
same change 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
56
A direct admin reschedule acquires short-lived D1 locks for the destination, rechecks Google FreeBusy, PATCHes the existing Google Calendar event with `sendUpdates=all`, and then moves the D1 booking record. The booking ID and Stripe payment remain the same.
Open commit View diff
56 A direct admin reschedule acquires short-lived D1 locks for the destination, rechecks Google FreeBusy, PATCHes the existing Google Calendar event with `sendUpdates=all`, and then moves the D1 booking record. The booking ID and Stripe payment remain the same.
same change 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
57
Open commit View diff
57
same change 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
58
A suggested new time does **not** move or release the original booking. Slot stores the proposed start/end plus a SHA-256 hash of a random bearer token, then PATCHes the Google event description with a secure acceptance URL using `sendUpdates=all`. When the attendee accepts, Slot re-runs normal availability checks before moving the existing event.
Open commit View diff
58 A suggested new time does **not** move or release the original booking. Slot stores the proposed start/end plus a SHA-256 hash of a random bearer token, then PATCHes the Google event description with a secure acceptance URL using `sendUpdates=all`. When the attendee accepts, Slot re-runs normal availability checks before moving the existing event.
same change 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
59
Open commit View diff
59
same change 9aa588b

feat: add rescheduling, time proposals and Stripe cancellation refunds

Full commit hash
9aa588b368f7c46ba3d287199a3d95506867c927
Author
Alex Nord <[email protected]>
Date
about 23 hours ago
Selected line
60
For a paid cancellation, Slot creates an idempotent full refund using the stored Stripe PaymentIntent before finalizing cancellation. Refund webhook events keep the D1 refund status current. If the configured Stripe mode does not match the payment's Checkout Session mode, Slot refuses the paid cancellation rather than cancelling without a safe refund path.
Open commit View diff
60 For a paid cancellation, Slot creates an idempotent full refund using the stored Stripe PaymentIntent before finalizing cancellation. Refund webhook events keep the D1 refund status current. If the configured Stripe mode does not match the payment's Checkout Session mode, Slot refuses the paid cancellation rather than cancelling without a safe refund path.
Alex Nord about 22 hours ago 92deb90

feat: add public booking IDs and self-service cancellation

Full commit hash
92deb90d0872b02f6bac0f855281cdb9a73596db
Author
Alex Nord <[email protected]>
Date
about 22 hours ago
Selected line
61
Open commit View diff
61
same change 92deb90

feat: add public booking IDs and self-service cancellation

Full commit hash
92deb90d0872b02f6bac0f855281cdb9a73596db
Author
Alex Nord <[email protected]>
Date
about 22 hours ago
Selected line
62
Every booking also has a separate high-entropy public booking ID (`SLT-...`). It is shown to the attendee on confirmation and written into the Google Calendar event description. The public cancellation endpoint accepts only this reference, rate-limits attempts, requires a future confirmed booking, and then delegates to the same cancellation/refund function used by Admin. The internal UUID remains the relational key and is not used as the guest-facing cancellation reference.
Open commit View diff
62 Every booking also has a separate high-entropy public booking ID (`SLT-...`). It is shown to the attendee on confirmation and written into the Google Calendar event description. The public cancellation endpoint accepts only this reference, rate-limits attempts, requires a future confirmed booking, and then delegates to the same cancellation/refund function used by Admin. The internal UUID remains the relational key and is not used as the guest-facing cancellation reference.
same change 92deb90

feat: add public booking IDs and self-service cancellation

Full commit hash
92deb90d0872b02f6bac0f855281cdb9a73596db
Author
Alex Nord <[email protected]>
Date
about 22 hours ago
Selected line
63
Open commit View diff
63
same change 92deb90

feat: add public booking IDs and self-service cancellation

Full commit hash
92deb90d0872b02f6bac0f855281cdb9a73596db
Author
Alex Nord <[email protected]>
Date
about 22 hours ago
Selected line
64
Open commit View diff
64
same change 92deb90

feat: add public booking IDs and self-service cancellation

Full commit hash
92deb90d0872b02f6bac0f855281cdb9a73596db
Author
Alex Nord <[email protected]>
Date
about 22 hours ago
Selected line
65
## Activity history
Open commit View diff
65 ## Activity history
same change 92deb90

feat: add public booking IDs and self-service cancellation

Full commit hash
92deb90d0872b02f6bac0f855281cdb9a73596db
Author
Alex Nord <[email protected]>
Date
about 22 hours ago
Selected line
66
Open commit View diff
66
same change 92deb90

feat: add public booking IDs and self-service cancellation

Full commit hash
92deb90d0872b02f6bac0f855281cdb9a73596db
Author
Alex Nord <[email protected]>
Date
about 22 hours ago
Selected line
67
Slot writes lifecycle events to `activity_events` after successful booking, payment, reschedule, suggestion, refund, cancellation, and payment-hold transitions. Idempotency keys suppress duplicate webhook events. Activity writes are deliberately non-blocking so analytics can never make a booking or refund fail. The Admin Activity endpoint computes aggregate booking metrics from the booking table and reads the latest activity events for the chronological feed. Monetary totals stay grouped by currency.
Open commit View diff
67 Slot writes lifecycle events to `activity_events` after successful booking, payment, reschedule, suggestion, refund, cancellation, and payment-hold transitions. Idempotency keys suppress duplicate webhook events. Activity writes are deliberately non-blocking so analytics can never make a booking or refund fail. The Admin Activity endpoint computes aggregate booking metrics from the booking table and reads the latest activity events for the chronological feed. Monetary totals stay grouped by currency.
Alex Nord about 15 hours ago 456feae

feat: add self-service booking management and free payment durations

Full commit hash
456feae6ef68a3e3bf55a0ea617bac46f7dc289e
Author
Alex Nord <[email protected]>
Date
about 15 hours ago
Selected line
68
Open commit View diff
68
same change 456feae

feat: add self-service booking management and free payment durations

Full commit hash
456feae6ef68a3e3bf55a0ea617bac46f7dc289e
Author
Alex Nord <[email protected]>
Date
about 15 hours ago
Selected line
69
Open commit View diff
69
same change 456feae

feat: add self-service booking management and free payment durations

Full commit hash
456feae6ef68a3e3bf55a0ea617bac46f7dc289e
Author
Alex Nord <[email protected]>
Date
about 15 hours ago
Selected line
70
## Optional paid durations
Open commit View diff
70 ## Optional paid durations
same change 456feae

feat: add self-service booking management and free payment durations

Full commit hash
456feae6ef68a3e3bf55a0ea617bac46f7dc289e
Author
Alex Nord <[email protected]>
Date
about 15 hours ago
Selected line
71
Open commit View diff
71
same change 456feae

feat: add self-service booking management and free payment durations

Full commit hash
456feae6ef68a3e3bf55a0ea617bac46f7dc289e
Author
Alex Nord <[email protected]>
Date
about 15 hours ago
Selected line
72
Stripe is optional. When Stripe payments are enabled, `paymentFreeDurations` can mark selected configured meeting lengths as free. Booking creation decides whether Checkout is required from the selected duration. Free bookings take the normal immediate-confirmation path; paid bookings use the Stripe hold/Checkout/fulfillment path.
Open commit View diff
72 Stripe is optional. When Stripe payments are enabled, `paymentFreeDurations` can mark selected configured meeting lengths as free. Booking creation decides whether Checkout is required from the selected duration. Free bookings take the normal immediate-confirmation path; paid bookings use the Stripe hold/Checkout/fulfillment path.
same change 456feae

feat: add self-service booking management and free payment durations

Full commit hash
456feae6ef68a3e3bf55a0ea617bac46f7dc289e
Author
Alex Nord <[email protected]>
Date
about 15 hours ago
Selected line
73
Open commit View diff
73
same change 456feae

feat: add self-service booking management and free payment durations

Full commit hash
456feae6ef68a3e3bf55a0ea617bac46f7dc289e
Author
Alex Nord <[email protected]>
Date
about 15 hours ago
Selected line
74
## Public booking management
Open commit View diff
74 ## Public booking management
same change 456feae

feat: add self-service booking management and free payment durations

Full commit hash
456feae6ef68a3e3bf55a0ea617bac46f7dc289e
Author
Alex Nord <[email protected]>
Date
about 15 hours ago
Selected line
75
Open commit View diff
75
same change 456feae

feat: add self-service booking management and free payment durations

Full commit hash
456feae6ef68a3e3bf55a0ea617bac46f7dc289e
Author
Alex Nord <[email protected]>
Date
about 15 hours ago
Selected line
76
Confirmed bookings expose a high-entropy public `SLT-...` reference. The public Manage booking flow uses that bearer reference to load limited booking metadata and lets the attendee cancel or reschedule an upcoming confirmed booking. Rescheduling preserves duration and existing payment state, rechecks live availability, and updates the existing Google Calendar event. Public management endpoints are rate-limited.
Open commit View diff
76 Confirmed bookings expose a high-entropy public `SLT-...` reference. The public Manage booking flow uses that bearer reference to load limited booking metadata and lets the attendee cancel or reschedule an upcoming confirmed booking. Rescheduling preserves duration and existing payment state, rechecks live availability, and updates the existing Google Calendar event. Public management endpoints are rate-limited.