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
See Membership Registration Workflow for details.
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
See Event Participant Registration Workflow for details.
3. 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.
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 toadmin-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
10. Module Documentation
-
Architecture - JHipster gateway architecture and design
-
Use Cases - Detailed use case documentation
-
LinkedPerson Management - Managing person groups
-
Membership Registration - Membership workflow
-
Event Registration - Event participant workflow
-
Process Flow Integration - Process entity integration
-
API Proxy Design - Gateway proxy configuration
-
Security - Authentication and authorization
11. Related Documentation
-
Domain Entities - Entity definitions
-
Process Entities - Process workflow entities
-
Frontend Applications - Related frontend apps
-
Security Architecture - Multi-dimensional security