Processor lifecycle
Authorize or collect full payment/deposit, handle processor webhooks, refunds, failed payments, saved methods, receipts, and reconciliation. Never store raw card data.
Owned scheduling + commerce · 13 August 2026
Yes, but “all of Acuity” is a scheduling, payments, commerce, ledger, communications, and operations programme. There is no single open-source fork that gives us the whole thing.
Build the owned product on the existing Nowhere stack if long-term control is the goal. For a prototype, inspect Easy!Appointments for scheduler ideas, Cal.com for modern scheduling/API patterns, LibreBooking for resources, and Saleor/Medusa or ERPNext for commerce. Do not assume any of them removes the work of building credit packs, appointment capacity, cancellation/refund semantics, and a safe payment/booking ledger.
| Area | Parity we would need to own |
|---|---|
| Services | Appointment types, categories, duration, price, add-ons, padding, locations, and direct booking links. |
| Availability | Calendars, calendar pooling, availability groups, start intervals, advance notice, blocks, daily limits, look-busy and gap rules. |
| Capacity | One-to-one appointments, overlap rules, classes, seats, class series, rooms/resources, and waitlists. |
| Booking flow | Date/time selection, add another time, recurring bookings, quantity/multiple spots, timezones, client accounts, and confirmation. |
| Client data | Profiles, history, forms, agreements, file uploads, internal forms, notes, and labels. |
| Commerce | Full payment, deposits, saved card details, later charges, payment links, invoices, cash, tips, refunds, receipts, and payment status. |
| Products | Packages, gift certificates, subscriptions, booking codes, redemption, balance allocation, and expiry. |
| Growth and operations | Coupons, add-ons, reminders, email/SMS templates, calendar sync, webhooks, reports, exports, permissions, and mobile admin. |
A serious replacement needs explicit state for orders, payment intents, transactions, refunds, appointments, and entitlements. It must handle payment success followed by booking failure, booking success followed by payment failure, retries, disputes, and webhook reconciliation without double-charging or double-booking.
Authorize or collect full payment/deposit, handle processor webhooks, refunds, failed payments, saved methods, receipts, and reconciliation. Never store raw card data.
Product → order → certificate/code → immutable balance ledger → redemption tied to an appointment. Cancellations and manual adjustments become auditable events.
Guests should be able to buy a credit pack without a time, book with a code, pay for a single appointment, or buy a gift for someone else.
A browser retry, processor retry, or webhook retry must not create a second appointment or second charge. Partial success needs a documented compensation policy.
GPLv3, self-hosted PHP/MySQL. Services, providers, working plans, booking rules, Google/CalDAV sync, group sessions, REST API, and webhooks. Official marketing mentions payments, but public docs do not establish an Acuity-style product/package/certificate/subscription layer.
Verdict: useful scheduler reference or prototype fork; not a complete fit for Nowhere.
Modern React/Next.js-oriented scheduling with event types, custom fields, seats, recurring bookings, limits, buffers, APIs, webhooks, and Stripe payments. The repository documents AGPLv3 core plus commercial enterprise areas.
Verdict: best scheduling/API reference; weak for products, packages, certificates, and a credit ledger.
GPLv3 resource scheduling with multi-resource booking, waitlists, quotas/credits, reporting, and Stripe/PayPal gateways. PHP/MySQL and oriented around reservations rather than customer commerce.
Verdict: strongest resource-capacity reference; not an Acuity commerce fork.
GPLv3 ERP with products, orders, invoices, payment requests, pricing rules, subscriptions, accounting, and commerce. Its appointment feature is a basic lead/employee meeting flow.
Verdict: strong commerce/accounting base; custom scheduling app required.
Saleor provides API-first products, checkout, promotions, gift cards, customers, orders, and payments. Medusa provides MIT commerce modules for carts, payments, products, promotions, bundles, and subscriptions.
Verdict: useful commerce components; neither supplies appointment capacity or booking rules.
The open-source ecosystem is fragmented by domain. A mature scheduler, a mature commerce engine, and a custom entitlement ledger still need to be integrated and operated together.
Verdict: choose a base for the hardest domain, not by star count.
| Requirement | Easy | Cal | Libre | ERPNext | Saleor/Medusa | Nowhere |
|---|---|---|---|---|---|---|
| Appointment types/schedules | Strong | Strong | Partial | Partial | None | Build |
| Calendars/providers | Strong | Strong | Strong | Partial | None | Build |
| Classes/seats/recurrence | Partial | Partial | Partial | Weak | None | Build |
| Shared resources | Unclear | Partial | Strong | Partial | None | Build |
| Payments at booking | Unclear | Stripe | Stripe/PayPal | Gateway | Strong | Provider |
| Products/cart | Weak | None | Weak | Strong | Strong | Build/module |
| Packages/credits/certificates | None documented | None documented | Credits | Custom | Gift cards | Domain fit |
| Fit with Next/Cloudflare/D1 | Poor | Better | Poor | Poor | Separate service | Best |
| License simplicity | GPLv3 | AGPL + EE | GPLv3 | GPLv3 | MIT/BSD options | Own code |
Build the owned product on the current Next.js + Cloudflare Workers + D1 foundation if we decide that booking rules, customer experience, product economics, and data ownership are strategic. Do not replace the whole system in one pass.