Common Application Design
Data Modelling
-
Enum Modelling: Codes, Converters and Filters - How an enumerated value is stored as a short code, read through a JPA converter, serialised by name in API responses, and resolved strictly from a
StringFilter
List Screens
-
Filterable List Pattern - Substrate (ColumnConfig + JHipster query adapter + widgets) and composition patterns (out-of-band filters, side panel, bulk lifecycle, effects discipline)
-
List Screen Affordances - Visual + interaction spec for the chrome around any list screen (page header, stats strip, filter chips, utilities row, side panel, hover panel)
Forms
-
Form System Architecture - Process-based question/answer data capture system
Custom Lists
-
Custom Lists: Design and UserMeta Persistence - Organisation-scoped lookup values (club, team, school, …) and the
meta_keycontract that carries a rider’s selection across events
Data Imports
Design documents for spreadsheet import services:
Identity Model
-
Participant Identity & External Identifiers (XID) - The cross-cutting identity-correlation model: Person-XID vs Participant-XID, the
PersonExternalReferenceschema, the four-field identity DTO, and the design rationale. Read this first — both EP and result import build on it. -
Person Matching & Deduplication on Import - How a row resolves to an existing Person: the five-tier matching ladder, the supplied-but-unmatched identity rule, collision handling, and the merge-candidate path. Distinguishes the import ladder from the Registration Portal’s progressive matching.
Import Types
-
Event Participant Import - Bulk registration of participants via XLSX/CSV
-
Membership Import - Bulk member creation with person/number/order handling
-
Results Import - Race results import with automatic points calculation
Implementation Designs
-
Import Process Implementation - ImportController-based orchestration (current)
-
Import Fluxnova Implementation - BPMN-based orchestration (future)
Leaderboards
-
Leaderboard Model & Result Classification - The durable data model: how series results are scored, classified, and aggregated into standings. The foundation the per-league configuration procedures build on.
-
Leaderboard Synchronization - The deferred event-driven layer that recalculates standings automatically when results change
Async Processing
-
Reactor Catalogue - Signal types, aggregate key conventions, and the concrete reactors built on the Signal & Sweep framework. The reactor-specific companion to the framework architecture
Quality
-
Recurring Defect Classes - Shapes of bug that have appeared more than once here, each one silent in the sense that the system reports success while doing the wrong thing: streaming responses that log an error after succeeding, disabled form controls dropped from the payload, mandatory associations over nullable columns, development-only profiles that vanish in production, and unnamed controller bindings
Supply Chain
-
Dependency Update Checks - Keeping third-party references honest: the two opposing failure modes (unpinned drift vs frozen pin), why images are pinned as
tag@digest, why the checks propose rather than apply, and the scoping rule that keeps them clear of the release-promotion pipeline