Feature check · dance school
77 requirements from a dance school with several locations, checked against the code on 7 November 2026. Each item shows its status and what is still missing.
- 15
- 30
- 32
A · Locations & Calendar 3
2 live · 1 partial
A1 · Multiple locations and rooms
Admins can add and deactivate rooms for each location, assign rooms to occurrences, and view room names in event details. The system rejects room overlaps.
A2 · Shared calendar
Admin calendar shows all locations and filters by
placeId, kind and contributor. A public location filter was not verified.A3 · Location sync with aggregators
USC only: one API key per org and opt-in per offering, with no mapping from a place to a USC venue. No code for ClassPass, Wellhub or Wellpass (see F2–F4).
B · Class Types 6
4 live · 2 partial
B1 · Weekly drop-in classes
Recurring offerings (RRULE) are materialised into occurrences, and each occurrence is bookable via RSVP with optional Stripe payment.
B2 · Closed groups
DANCE_COURSEofferings with course bookings, roster, attendance per lesson, make-up credits and waitlist.B3 · One-day workshops
EVENToffering with one occurrence, capacity and paid RSVP. There is no workshop type of its own, and price tiers are limited (see D5).B4 · Multi-day workshops
One offering can hold several occurrences. A single booking that covers all sessions was not verified end to end.
B5 · Events
The festival module (editions, slots, tracks, timetable, cart, passes) fits workshop weekends. The dance-school fit (party add-on, combo pricing) is untested.
B6 · Parties
EVENToffering with Stripe booking, capacity and a signed QR ticket per RSVP. There are no time or quota tiers (see D5).
C · Class Management 10
6 live · 3 partial · 1 not built yet
C1 · Multiple instructors per class
Many contributors per offering with role INSTRUCTOR, plus a substitute instructor per occurrence.
C2 · Leader/follower roles
Roles can be enabled per offering. Course and workshop bookings accept LEAD, FOLLOW or FLEXIBLE; role-balanced courses count flexible bookings when checking and promoting participants.
C5 · Flag new customers
No first-visit flag in the instructor roster. Only the attendance kind TRIAL exists. Small effort.
C6 · Class cancellation
A studio cancel sets the occurrence to CANCELLED, cancels RSVPs and sends a push. Lessons also restore make-up credits. No automatic Stripe refund for paid RSVPs on a studio cancel: the refund runs only in the user-cancel path.
C7 · Participant limits
Offering.capacityis enforced, with party size per RSVP and a separate USC spot limit.C8 · Automatic waitlist
FIFO waitlist per offering. A freed spot promotes the next person automatically and notifies them, up until the booking deadline.
C10 · Booking deadlines
rsvp_deadline_minutesper offering. Late bookings fail withRSVP_DEADLINE_PASSED.C11 · Cancellation deadlines
Courses have a cancel deadline with a flat or percent fee. Dance-school absences have a notice window for make-up credit. No customer cancel deadline for single-class RSVPs was found.
C12 · Check-in system
Signed QR tickets, staff scan (offline capable),
Checkinentity, no-show job, and per-lesson attendance by instructors.C14 · Participant lists
Instructors see a roster with dance roles. The CSV export lives under admin (
/admin/occurrences/{id}/rsvps/rsvps.csv), and there is no export in the instructor view.
D · Booking & Products 12
2 live · 6 partial · 4 not built yet
D1 · Guest checkout without an account
Booking endpoints require login. Login is a passwordless email code, so the account is created on the fly, but no true guest flow exists. Carts require an owner. Medium effort.
D2 · Single classes
Per-occurrence booking with capacity (see B1) and per-lesson attendance.
D3 · Trial class / new customer offer
trialMaxPerParticipantlimits trials per participant and dance type. Enforced per participant record, not per person, so a new family member gets a new trial. No special trial price.D4 · Class passes
Value cards with units, validity in days and price. A unit is redeemed by staff QR scan, and the card is not linked to online class booking.
D5 · Tickets with price tiers
Tiers are audience-based (STANDARD, STUDENT, EMPLOYEE, EXTERNAL, …). No time-based or quota-based early bird / regular / late tiers. Medium effort.
D6 · Cancellation with refund/credit
Course cancel refunds automatically via Stripe minus the fee. RSVP cancel refunds. A timely absence earns a make-up credit. Value-card units are not credited back.
D7 · Discount codes
Promo codes exist for festival passes only. Not usable for courses, tickets, shop or value cards: medium to large effort.
D8 · Vouchers
Shop value vouchers with a balance and partial staff redemption. No online redemption and no product-specific vouchers.
D9 · Couple booking
CouplePairinglinks two bookings via an invite token, holds the partner's place and expires unclaimed invites.D10 · Bring a friend / referral
No referral code or entity. Small to medium effort.
D11 · Combo tickets
No bundle entity. Festival pass types come closest. Medium effort.
D12 · Single tickets at events
A workshop offering inside a festival edition can carry its own RSVP and price. Slot-level single tickets were not verified end to end.
E · Memberships & Subscriptions 10
8 live · 2 partial
- Live
E1 · Credit-based membership
Credit plans charge each RSVP the offering's configured credit cost per person. Fixed-class plans cover linked offerings.
- Live
E2 · Credit allowance per period
Paid invoices refill credits once per billing period. A stored period marker prevents duplicate refills.
- Live
E3 · Subscription for a fixed class
A fixed-class plan covers bookings for its linked offering.
- Partial
E4 · USC add-on subscription
USC add-on plans and weekly reminders exist. Account matching uses email and can miss changed addresses.
- Live
E5 · Notice periods
Cancellation schedules against the notice period and billing boundary.
- Live
E6 · Minimum terms
Cancellation cannot take effect before the minimum term ends.
- Live
E7 · Automatic renewal
Stripe renews active subscriptions by default. Non-renewing plans schedule an end date.
- Live
E8 · Freeze / pause periods
Members can pause and resume Stripe payment collection.
- Live
E9 · Upgrades / downgrades
Changing a plan updates the recurring Stripe price with proration.
- Partial
E10 · Automatic dunning
Failed invoices mark memberships past due and trigger notifications. Retry settings depend on each connected Stripe account.
F · Aggregators 5
1 partial · 4 not built yet
F1 · Urban Sports Club
Native partner API, toggled per module. USC pulls classes, and bookings and cancellations arrive as RSVPs that appear in the check-in lists. Missing: check-in push back to USC, fee/payout tracking, and mapping several locations to USC venues.
F2 · Wellhub
No code. A connector like the USC one plus partner API access: medium effort per aggregator.
F3 · ClassPass
No code. Same effort as F2.
F4 · Wellpass (EGYM)
No code. Same effort as F2.
F5 · Merge customers across channels
USC members live in a separate
UscMembertable that is not linked toAppUser. Matching by email is small to medium effort.
G · Customer Management & Communication 6
3 partial · 3 not built yet
G1 · Customer profile
Email, display name, locale and marketing consent. No photo and no mobile phone field.
G3 · Tags with bulk tagging
No customer tags. A tag table plus a bulk action on participant lists: small to medium effort.
G4 · Reduced rates
Student participants can upload a PDF or image proof up to 10 MB, and admins can approve or reject it. Approval does not yet gate the STUDENT price tier.
G5 · Communication
Email (SMTP templates), push and in-app announcements. No SMS or WhatsApp.
G6 · Newsletter integration
Only a marketing-consent flag. No connector to Mailchimp, Brevo or similar: small to medium effort.
G7 · Invoices
No invoice model, numbering or PDF.
docs/MONETIZATION.mdconfirms. Medium effort.
H · Payments 6
1 live · 5 partial
H1 · Credit card
Cards are a Stripe Checkout default.
H2 · PayPal
Works only if enabled in the venue's Stripe dashboard. Not tested.
H3 · SEPA direct debit
One-off SEPA via the Stripe dashboard setting. Async payment success/failure webhooks are handled. No recurring SEPA mandate (see H6).
H4 · Google Pay
Appears in Stripe Checkout when enabled for the account. Not tested.
H5 · Apple Pay
Same as H4. Domain verification may be needed. Not tested.
H6 · One-off and recurring payments
One-off checkout and recurring membership subscriptions use Stripe Connect. Recurring SEPA and connected-account retry settings were not verified.
I · Automation & Marketing 5
1 partial · 4 not built yet
I1 · Automated emails with customizable triggers
Built-in reminders and lesson cancel/move/waitlist mails. No welcome or birthday mail, and no admin-defined triggers or template editor.
I4 · Reactivation of inactive customers
No win-back job. A scheduled job plus a mail: small to medium effort.
I5 · Funnel tracking
No GA4, GTM or dataLayer code, and no embeddable widget to track inside. Possible design: push
dataLayerevents from the server-rendered booking pages, and usepostMessagefrom an iframe to the parent page. Medium effort.I6 · Cross-domain tracking and UTM
UTM is not captured or stored on checkout or payment. Small to medium effort.
I7 · Ad tracking
No Meta Pixel, Conversions API or Google Ads code. A server-side hook fits on Stripe payment settlement. Medium effort.
J · Website Integration 5
2 partial · 3 not built yet
J1 · Class schedule in WordPress
No plugin, shortcode or widget, and framing headers are not configured. The server-rendered calendar fragment is a base for an iframe. Medium effort.
J2 · Individual workshops in WordPress
Share links exist, but no embed. Same work as J1.
J3 · Voucher sales on the website
Vouchers and value cards are sold in the app/API. No public web checkout.
J4 · SEO, AEO, GEO
No schema.org / JSON-LD anywhere. Needs public pages per class and event first. Small to medium effort.
J5 · Multilingual
App in DE/EN/ES, and mails switch DE or EN. Invoices do not exist (G7).
K · API & Extensibility 2
1 partial · 1 not built yet
K1 · Full REST API
OpenAPI documents 131 paths for the app (user and staff roles, rate limits on auth and login). No API keys or partner scopes, and admin features are server-rendered rather than exposed as an API.
K2 · Webhooks
Only an incoming Stripe webhook. No outgoing subscriptions or dispatcher. Medium effort.
L · App 2
1 partial · 1 not built yet
L1 · Booking and subscription management
Flutter app for iOS and Android with bookings, tickets, wallet passes and payments, branded per venue at runtime (one shared store app, not a separate white-label app). No subscriptions (E).
L2 · Aggregator bookings in the app
USC bookings become RSVPs linked to
UscMember, not toAppUser(F5), so they likely do not show in the customer app. Not confirmed in the Flutter code.
N · Exports & Reports 2
2 partial
N1 · Booking export
Admin CSV exports for the dance-school report, event RSVPs and pass attendees. No single all-bookings export and no Excel.
N2 · Reports for the tax advisor
Some CSV reports. No revenue/VAT report and no DATEV format: medium effort.
O · Other 1
1 partial
O1 · Merchandise sales
Own shop module with products, variants and orders. No Spreadshirt or print-on-demand integration.
P · Migration & Data Ownership 2
1 partial · 1 not built yet
P1 · Full migration from Eversports
No Eversports importer (
migrate/only moves existing app users). Customers: small to medium effort. Active subscriptions: blocked until the subscription engine exists (E). Remaining balances: medium effort, target is value cards. Vouchers: medium effort, target is shop vouchers. SEPA mandates: Unverified, depends on whether Eversports can hand mandates over to Stripe.P2 · Exit strategy
Per-user privacy export plus several admin CSVs. No full export per organisation.