Request a Demo
Domain

Program & Registration

Manages recreation program creation, scheduling, session management, instructor assignment, and the complete registration lifecycle — online/in-person enrollment, household accounts, waitlists, priority windows, cancellations, transfers, and drop-in registration.

10K+ concurrent

Registration Day

< 3 sec

Cart Checkout

< 30 sec

Waitlist Promote

200K+ registrations

Annual Volume

Purpose-Built for Canadian Municipalities

Ontario Compliant
MFIPPA Ready
AODA Accessible
Bilingual Support
Canadian Hosted
SOC 2 Aligned

Purpose & Scope

What this module owns

Clear ownership boundaries prevent duplication and ensure every capability has exactly one authoritative home.

Owns

13

Delegated to

5

Citizen authentication, address verification

civic-identity

Checkout, instalment plans, refunds

payment-engine

Confirmation emails, waitlist notifications, reminders

notification-engine

Public-facing registration portal

portal-framework

Room/space availability for sessions

facility-booking

These capabilities are handled by dedicated modules and consumed via stable API contracts — keeping boundaries clean and ownership unambiguous.

Core Capabilities

What it does

4 capability groups comprising 11 discrete capabilities — each with API surface, business rules, and data ownership.

Hierarchical categories with per-program details, seasonal catalogs, and powerful search/filter capabilities.

Categories

Hierarchical categories: swimming, skating, arts, fitness, camps, general interest. Per-program: description, age range, prerequisites, skill level, department, images, keywords.

Seasonal Catalogs

Seasonal catalogs (spring/summer/fall/winter). Searchable/filterable by age, category, location, day/time.

Templates & Cloning

Reusable program templates. Clone previous season: copy details, update dates/prices. Bulk session generation. Multi-location replication.

Individual and recurring session scheduling with exception management, makeup sessions, and calendar views.

Session Details

Individual sessions: date, time, duration, location (facility + room), instructor, min/max participants.

Recurring Templates

Weekly (same day/time × N weeks), daily (camp-style), drop-in. Exception management: cancel session (holiday/weather), add makeup.

Calendar View

Visual calendar view for scheduling, instructor management, and conflict detection.

Instructor profiles with certifications, availability, scheduling, and conflict detection.

Profiles

Certifications (First Aid, NLS, coaching), availability, hourly rate, specialties. Certification expiry alerts.

Schedule & Conflicts

Schedule view (all assignments). Conflict detection (no double-booking). Staff-to-participant ratio enforcement.

Every module owns a single bounded context, exposes stable APIs, and can be composed into any Civic product — that's the architecture that scales.

Krutik Parikh

Creator of Civic

Data Model

Entity Architecture

7 entities with 7 relationships — the authoritative schema for this bounded context.

Entities

Select an entity to explore its fields and relationships

API Surface

Integration Endpoints

9 RESTful endpoints across 6 resource groups — plus 4 domain events for async integration.

|
GET

/api/v1/recreation/programs

Browse program catalog

GET

/api/v1/recreation/programs/{id}/sessions

Session schedule for a program

Ecosystem

Products that depend on this module

1 Civic products consume Program & Registration — making it one of the most critical platform services in the ecosystem.

Technical Specifications

Performance, Compliance & Configuration

Registration Day Concurrency

Target10,000+ simultaneous users, zero downtime

Cart Checkout

Target< 3 seconds

Program Search

Target< 1 second

Waitlist Promotion

Target< 30 seconds from cancellation

Registration Volume

Target200K+ per year

Availability

Target99.9%

FAQ

Frequently Asked Questions

Ready to Integrate

Build on Program & Registration

Request an architecture brief, integration guide, or live demo environment for your team.