Concepts
The app is built around a handful of core ideas. Understanding how they fit together makes everything else easier to follow.
Locations and Resources
A location is a physical Metrognome facility—a building where customers come to use studios. Each location has its own timezone (for displaying reservation times correctly) and its own Stripe account (for processing payments).
A resource is something bookable within a location. Most resources are studios, but the system also supports equipment, storage, and other bookable items. Every resource belongs to exactly one location.
Resource types you'll see:
- Hourly studios — Rehearsal rooms booked by the hour
- Monthly studios — Private spaces with ongoing subscription access
- Tours — Facility tour slots (scheduled through Acuity)
- Equipment, storage, parking — Other bookable items
Users
A user is an account in the system—either a customer who books studios or a staff member who manages operations.
Every user has an approved flag. When approved, they can make purchases and bookings. When not approved (banned), they can sign in but can't transact. New accounts are approved by default.
Roles determine what someone can access:
- User — Regular customer
- Staff — Facility staff with access to the staff dashboard
- Admin — Full system access
- Partner — Affiliate accounts
Reservations
A reservation grants a user access to a resource for a period of time. There are three types:
Hourly reservations have a specific start and end time. The customer pays per session—either with credits or a card. When the reservation is created, the system programs their access code into the door locks.
Monthly reservations represent ongoing studio access through a Stripe subscription. They don't have an end time—access continues as long as the subscription is active.
Tours are facility walkthroughs scheduled through Acuity. They don't assign a specific resource since the tour covers the whole facility.
Credits
Credits are prepaid booking currency—an alternative to paying by card at checkout.
Customers purchase credit packages (one-time or subscription), and those credits sit in their account with expiration dates. When booking with credits, the system uses the soonest-expiring credits first. If a reservation is cancelled, the credits are restored.
Key things to know:
- Credits expire and can't be used after their expiration date
- Multiple credit balances can combine for a single booking
- This is separate from Stripe balance (which is credit toward invoices, not studio time)
Access Codes
An access code is a PIN that lets users physically enter a location. Each user has a personal code that the system programs into the smart locks when they have a reservation.
This happens automatically: when a reservation is created, a background job programs the code into the lock hardware. When the reservation ends, another job removes access. Users can see their code in the app within 15 minutes of their reservation time.
The app integrates with UniFi and Schlage lock systems.