Weekly class module
The weekly class module is Hob’s module for recurring class and course operations. It is written for club admins and instructors — this page describes day-to-day use, not the technical API.
Members see the module as Classes and courses. The technical identifier in the system remains danceclub (URL paths, API, permissions).
The module usually works with the membership and payments modules. Members, family members, and balances come from those.
Introduction
The module covers:
- Seasons — activity is split into seasons (e.g. autumn, spring).
- Classes (activities) — recurring or one-off groups that get events under them.
- Courses — enroll once for a whole season or period on one activity.
- Enrollment — members enroll for events or courses online; instructors can enroll on their behalf.
- Payments and balance — drop-in prices, season passes, discounts; payments via the payments module.
- Queues — automatic queue when a class or course is full.
- Reports — season-level Excel exports.
The module fits both open group classes and private lessons.
Terminology
| Term | Meaning |
|---|---|
| Season | Time window that classes and events belong to. In the admin view, data is filtered by the selected season (top-right menu). |
| Class (activity) | Weekly or one-off offering (e.g. beginners foxtrot on Tuesdays). Defaults for price, instructor, venue, capacity, and other settings live on the activity; events are created under it. |
| Event | A single class occurrence on a date and time. An event may override activity defaults (price, instructor, venue, capacity). |
| Course | An activity where the member enrolls once for the whole season or period. Course enrollment does not automatically add the member to every event — the member confirms attendance per event (see below). |
| Enrollment mode | How the activity accepts enrollments: Drop-in (per event), Course (course enrollment only), or Both (course and drop-in). |
| Drop-in price | Price for attending one event. Set on the activity; per-event override possible. |
| Season pass | Prepaid product that covers attendances on selected activities. Choose price, covered activities, and optional description. After purchase, the pass clears attendances automatically (except visit-limited passes). |
| Visit pass | A season pass with a limited number of uses (e.g. 10 visits). Uses decrease; after the limit, attendances are charged normally. |
| Forced season pass | A pass bought automatically when a condition is met. Drop-in: Force pass after N visits — purchase runs only after the triggering event has ended; the member is notified. Course: Free visits — empty means payment is required on course confirmation; 0 means the preferred pass is bought as soon as the course enrollment is confirmed (the member is notified). |
| Private lesson | An activity hidden from the public enrollment list. Enrollment needs a special permission and/or a passcode given on first enrollment. |
| Venue | Location or room. Default on the activity; per-event override possible. |
| Balance | The member’s weekly-class payment position: negative = amount due, positive = credit. Separate from membership fee balance. |
| Queue | When an event or course is full, a new enrollee is queued. Queued members are not charged until confirmed. An admin can promote someone from the queue. |
Member view
For a signed-in member at /dc (Classes and courses):
- Enrollment — classes today and soon; enroll or cancel (not for past events).
- Courses — courses you can join for the season; per-event attendance confirmation on the course page.
- Balance — amount due and payment via Hob.
- Attendances — your enrollments for the selected season.
- Shop — buy season passes; refunds possible (with exceptions, see Season passes).
- Family members — the primary member can enroll and buy passes for minors and family members.
Enrollment opens by default at 06:00 on the day before the event. An activity can set a separate Enroll N hours before limit.
Cancellation removes the attendance and returns the charge to the balance (not for past events).
Courses and course enrollment
A course is an activity whose enrollment mode is Course or Both.
Course enrollment
- The member enrolls once (Enroll for course).
- Course enrollment does not create attendances for every upcoming event.
- A course member confirms per event (Attending / Not attending). Unset means no decision yet.
- A course member can confirm attendance even before the normal drop-in enrollment window opens.
- In Course mode, drop-in without a course enrollment is not allowed.
- In Both mode, the member may enroll for the course or drop in to individual events.
Course payment
- Creating a course can set a Course price, which creates a course pass and marks it preferred.
- On a paid course, the preferred pass is bought automatically when course enrollment is confirmed (not while queued), unless the member already has a covering pass.
- Free visits allows N drop-ins before payment is required (same idea as forced pass on drop-in).
Leaving a course
- A member may leave a course (Leave course) if they have not attended a past event on that course.
- Leaving removes future event attendances and refunds a pass that covers only that course, if one was bought.
- A queued course enrollment can be cancelled without payment.
Course queue
- A course can have a capacity limit. When full, a new enrollee is queued without charge.
- An admin or instructor confirms the queued member onto the course; payment and pass purchase happen only after confirmation.
Admin view
Navigation
- Calendar — all events in the season.
- Classes and courses — link to the member view from the dashboard.
- Seasons — create and edit seasons (permission required).
- Classes — manage activities and create events (multiple days at once).
- Season passes — define passes (permission required).
Event management
Per event:
- participant list (including queue)
- add and remove participants
- confirm payment (cash, free, other methods)
- edit time, price, limit, instructor, and venue
- SMS or email to all participants
Course management
On the classes admin view:
- enrollment mode is shown on the activity (drop-in / course / both)
- for course or both, the selected activity shows course enrollments, fill level, and queue
- confirm queue and cancel a member’s course enrollment
On the course page (member view): upcoming events and attendance confirmations.
Activity settings
| Setting | Description |
|---|---|
| Enrollment mode | Drop-in, Course, or Both |
| Drop-in price | Default event price (drop-in / both) |
| Course price | Course pass price; creates the pass and marks it preferred (course) |
| Free visits | Visits before course payment is required; empty = pay on course enrollment |
| Split cost | Cost is split evenly among participants (e.g. private lesson) |
| Capacity | Default max for events |
| Private lesson | Hidden from public enrollment |
| Enrollment window | Hours before the event, or default (previous day 06:00) |
| Preferred pass | Guides the member to the right season pass |
| Force pass | Automatic preferred-pass purchase after N drop-in visits; purchase runs after the event ends; the member is notified |
| Instructor | Default instructor for events |
| Venue | Default venue for events |
| Event fields | Extra enrollment fields (e.g. roles: leader/follower) |
| Type | Internal grouping key (e.g. newsletter filter); not shown to enrollees |
Per-event overrides: price, instructor, venue, capacity.
Pricing and payments
Drop-in payment
Enrollment creates a charge on the member balance. Payment goes through Hob (reference, online payment).
Course payment
On a paid course, the preferred season pass is charged automatically when course enrollment is confirmed. A queued member is not charged until confirmed.
Discounts
- Day discount (activity group discount): Enrolling for several same-day classes — first full price, second discounted, third further discounted (set on the activity group).
- Member discount: Percentage or fixed discount on selected classes or season passes (e.g. student, senior).
- Family discount on season passes: Multiple family-member pass purchases — price decreases per pass bought in the same family.
Discounts are calculated automatically; cancellation updates prices.
Instructor payment handling
At an event, an instructor can:
- mark attendance as free
- record cash or another payment method (e.g. Edenred)
Split cost (private lessons)
When Split cost is on, the drop-in price is divided evenly among all participants. A new participant updates everyone’s charge.
Season passes
- A pass is tied to one season and covers selected activities from that season.
- Unlimited season pass: after purchase, past and future attendances on those activities are cleared automatically.
- Visit pass: only the first N attendances; the rest are charged separately.
- A member can refund an unused pass; the balance is corrected.
- Forced purchase (drop-in): when the Force pass limit is exceeded, the preferred pass is bought only after the triggering event has ended. If the event is already past, purchase is immediate. The member is notified and asked to pay the balance.
- A forced course-covering pass cannot be refunded while the member remains enrolled on a course that requires that coverage. If another pass still covers the course, the course pass can be refunded.
- A primary member can buy a pass for a family member; a minor cannot buy on behalf of the primary member.
- An admin can add a pass to a member manually.
Queues
Event queue
When event capacity is full:
- New enrollee → queue (no charge).
- Cancellation or raising the limit → next in queue is confirmed automatically.
- An admin can confirm someone from the queue manually (including over capacity).
Course queue
When course capacity is full:
- New course enrollee → queue (no charge and no pass purchase).
- An admin or instructor confirms the queued member onto the course.
Capacity can be set on the activity (default) or on the event (override). Past event limits lock when the activity default limit changes.
Reports
Season-level Excel exports:
| Report | Contents |
|---|---|
| Member list | Name, email, phone — season participants |
| Negative balance | Members with an amount due |
| Attendances total | Attendance count per season (multiple seasons at once) |
| Attendances per class | One column per activity in the selected season |
| Purchases | Purchases per class/pass in one season |
| Season pass purchases | Separate report for pass purchases |
Public calendar
Without signing in:
- Public calendar — upcoming events (not private lessons).
- iCalendar feed — subscribe in your own app; filter by venue possible.
- Happening today — front-page cards for today’s classes (enrollment for signed-in users).
Private lessons are visible only to authorized users.
Permissions
| Role | Rights |
|---|---|
| Weekly class admin | Full control: seasons, classes, events, passes, members, payments, attendances, and course enrollments |
| Class instructor | View events, enroll members, manage attendances and course enrollments |
| Private lesson admin | Enroll for and manage private lessons |
Extra permission enroll_private_activities — enroll for private lessons with a passcode.
Integrations
Membership module
- Members and family members (primary / minor).
- Automation: e.g. buying a given season pass → membership application or membership class automatically.
Payments module
- All charges and payments as transactions.
- A weekly-class payment reference pays only the weekly-class balance.
Notifications
- A member can subscribe to email or push for season newsletters.
- Filtering by activity type is possible when the club uses the type field to group classes.