Registration Portal

1. Overview

The Registration Portal is a self-service web application that enables users to register for memberships and events. Built as a JHipster gateway application, it provides streamlined, process-driven workflows for onboarding Members and Event Participants.

Application Type: JHipster Gateway with OAuth2 Authentication

1.1. Multi-Tenant Architecture

The Registration Portal supports multi-tenant operation where a single application instance serves multiple organizations:

  • URL-based Tenant Determination - The organization is determined from the URL (e.g., subdomain or path parameter)

  • Data Isolation - Each organization’s data is completely isolated from other organizations

  • Shared Infrastructure - Single application deployment serves all organizations

  • Custom Branding - Each organization can have custom branding and configuration

1.2. User Identity Model

The portal uses a flexible user identity system:

User ID:

  • Unique identifier for each user across the system

  • Can be an anonymous profile or authenticated user

  • Persisted across sessions via Device ID

User Profile:

  • External ID - Links to authentication provider (e.g., WordPress user ID, Keycloak user ID)

  • Device ID - Browser-based identifier stored in localStorage for anonymous users

  • User Key - Secure token for registration workflows (sent via email/SMS links)

Identity Persistence:

// Device ID stored in browser localStorage
localStorage.setItem('deviceId', generateDeviceId());

// User Key from registration link
const userKey = route.queryParamMap.get('u');
sessionStorage.setItem('userKey', userKey);

This model allows users to:

  • Start registration workflows without creating an account

  • Resume registration from the same browser

  • Link multiple persons to a single user profile

  • Transition from anonymous to authenticated user

2. Key Features

The Registration Portal provides three main functional areas:

2.1. LinkedPerson Management

Manage groups of related people for simplified registration:

  • Family Members - Group family members for family membership pricing

  • Friends - Manage friend groups for group registrations

  • Club/Team Members - Club administrators and team managers can manage their rosters

  • Person Lookup - Search for existing persons in the system or create new records

  • Profile Linking - Link existing User/Person records to the current user’s profile

See LinkedPerson Management for details.

2.2. Membership Registration

Process-driven workflow for membership applications:

  • Person Selection - Choose which LinkedPersons to include in membership

  • Pricing Tiers - Automatic calculation of individual vs. family pricing

  • Adult/Child Classification - Group participants into appropriate pricing categories

  • Form-Based Process - Sequential questions with back navigation support

  • Batch Processing - Handle all members simultaneously (e.g., ask School for all at once)

  • Indemnity Acknowledgement - Organisation-specific indemnity forms

2.3. Event Participant Registration

Comprehensive participant information capture:

  • Participant Details - School, emergency contacts, insurance, doctor information

  • Guardian Information - Capture guardian details for minors

  • Team Assignment - Team name and affiliation

  • License Verification - National Federation license/membership check

  • Day License - Manage day license inclusion if no active license

  • Form-Based Process - Sequential questions with back navigation

  • Batch Processing - Handle all participants simultaneously

  • Indemnity Acknowledgement - Event-specific indemnity forms

3. Architecture

registration-portal-architecture

Technology Stack:

  • Frontend: Angular, TypeScript, Bootstrap

  • Gateway: JHipster 8.11.0, Spring Boot, Spring Cloud Gateway

  • Authentication: OAuth2 with JWT tokens

  • Backend: admin-service (Spring Boot REST API)

  • Database: MySQL (via admin-service)

See Architecture for detailed architectural documentation.

4. Process Flow Integration

The Registration Portal leverages the Process entities (ProcessDefinition, ProcessInstance, ProcessStep) to create dynamic, sequential form workflows:

Process Characteristics:

  • Sequential Steps - One question/screen at a time

  • Back Navigation - Users can go back to previous steps

  • Batch Processing - Single question asked for all participants/members simultaneously

  • Dynamic Forms - Process definitions drive form structure

  • Progress Tracking - Visual indicators show progress through workflow

Process Flow Example:

Step 1: Select People
  → Choose which LinkedPersons to include

Step 2: Contact Information
  → Collect email, phone for all selected persons

Step 3: Emergency Contacts
  → Collect emergency contact for all selected persons

Step 4: Additional Details
  → School, team, license information

Step 5: Review
  → Confirm all entered information

Step 6: Indemnity
  → Acknowledge organisation-specific indemnity

Step 7: Payment
  → Process payment

Step 8: Confirmation
  → Display confirmation and next steps

See Process Flow Integration for implementation details.

5. User Workflows

5.1. Membership Registration Workflow

membership-workflow

5.2. Event Registration Workflow

event-workflow

6. API Proxy Design

As a JHipster gateway, the Registration Portal acts as a reverse proxy for backend services:

Proxy Configuration:

  • All requests to /api/* are proxied to admin-service

  • Gateway handles authentication and passes JWT tokens

  • Stateless communication - no session affinity required

  • Retry and timeout policies configured

Local vs. Proxied Endpoints:

Endpoint Pattern Handled By Purpose

/api/account

Gateway (local)

User account management

/api/authenticate

Gateway (local)

OAuth2 authentication

/api/persons

admin-service (proxied)

Person entity CRUD

/api/linked-persons

admin-service (proxied)

LinkedPerson entity CRUD

/api/memberships

admin-service (proxied)

Membership entity CRUD

/api/event-participants

admin-service (proxied)

EventParticipant entity CRUD

/api/events

admin-service (proxied)

Event entity queries

/api/processes

admin-service (proxied)

Process flow management

See API Proxy Design for configuration details.

7. Security

Authentication:

  • OAuth2 with JWT tokens

  • Keycloak integration (or similar identity provider)

  • Token-based stateless authentication

Authorization:

  • Role-based access control (ROLE_USER, ROLE_ADMIN)

  • Organisation-scoped data access

  • Person-level security for LinkedPerson associations

Data Security:

  • HTTPS-only communication

  • Secure token storage

  • CORS configuration for cross-origin requests

A security update is planned for the Registration Portal. This documentation will be updated once the security enhancements are implemented.

See Security for detailed security documentation.

8. Deployment

The Registration Portal is deployed as a standalone JHipster application:

Development:

# Backend (Spring Boot)
./mvnw

# Frontend (Angular)
npm start

Production:

# Build for production
./mvnw -Pprod package

# Run executable JAR
java -jar target/event-registration-ui-*.jar

Configuration:

  • application.yml - Main configuration

  • application-dev.yml - Development overrides

  • application-prod.yml - Production settings

9. Entity Relationships

Key entities managed through the portal:

entity-relationships

For complete entity documentation, see Domain Entities.

10. Module Documentation