Back to projects
// 001
Project file

Registration and training management platform

Catalogue, registrations, attendance and exports in one tool used by a training organisation.

The platform lets a training organisation publish its catalogue, take registrations online and manage sessions from a single admin area. The client stayed confidential, but the scope covers in-person courses, webinars, companies and trainers.

Diagram of the registration flow, from catalogue to reporting
Client
Confidential client
Sector
Professional training
Year
2022
// 002
Project content

The context

This platform is used by a training organisation. It publishes the catalogue, takes registrations online and gives the admin team visibility over each session. In-person courses and webinars are listed with their locations, trainers, participants, registered companies and registration statuses.

The project ran from 2018 to 2022 and has been maintained occasionally since. The client chose to stay anonymous. The visuals in this case study are diagrams of the flow and the roles, with no application screenshot and no organisation name.

The registration flow

A participant can register for a session directly from the public catalogue. An administrator or a company can register several learners at once, then update attendance from the admin area.

Each registration keeps the link between the session, the participant, the company and the invoice. Statuses show whether a place is confirmed, pending or cancelled. Lists can be filtered by session, company and status, so nobody has to scan a full export to find one learner.

The dashboard groups courses by month, registrations, learners and companies. Administrators see everything. Companies only get access to their own data.

The model separates the course from the session. A course describes the content, duration and audience. A session adds the date, location, trainer and available places. A registration connects a learner, a session and, when relevant, a company. That separation lets the organisation publish several sessions of the same course without duplicating the content.

One GraphQL API

The server uses ASP.NET Core with Entity Framework Core and PostgreSQL. The GraphQL API, built with HotChocolate, exposes courses, sessions, registrations, learners, trainers and statistics. Mutations go through validation and business rules.

Queries and mutations are covered by integration tests. The tests also cover authorisation cases, not just the happy path. A participant cannot read another company's data, and a trainer only sees the sessions they are assigned to.

On the client side, the interface is a React application in TypeScript, with Ant Design for tables, forms and the dashboard. Types are generated from the GraphQL schema, which removes the need to maintain contracts by hand. The site is available in French and Dutch.

The public catalogue separates courses and sessions. A course can have several dates, locations and trainers. Webinars follow the same model, with a Zoom link instead of an address. Companies can register several learners for one session and receive a single invoice.

The admin area also covers attendance, confirmations and Excel exports. A session can be closed, duplicated or cancelled without losing the registrations already linked to it. The monthly view gives the organisation a simple way to compare course demand across the year.

Roles stay explicit. A participant, a company account and an administrator do not see the same data. The API enforces those boundaries, and the interface only exposes the actions each role can perform.

The integrations

Three integrations complete the system:

  • Zoom for webinars;
  • SendGrid for confirmation and reminder emails;
  • NPOI for Excel exports.

Everything runs in Docker and deploys through Azure Pipelines. Occasional maintenance has kept the application in step with the organisation without rebuilding it every time the catalogue changes.

Confirmation emails leave when a registration is created, and reminders follow the session calendar. The Excel exports support attendance sheets and administrative follow-up.

What the project shows

The project rests on a simple idea: a training organisation does not need three tools to publish a catalogue, register learners and track attendance. It needs a clear data model and permissions that match the real roles.

The diagrams below summarise the flow and the access boundaries. They replace screenshots to protect the client's anonymity.

The platform has stayed in production for several years, through catalogue changes and new session formats. That longevity comes from a narrow domain model and a small set of stable integrations.

Diagram of the roles, from participant to administration

// 003

Ready to build something great?

Let's talk about your project. No commitment, no pressure — just an honest conversation about what you need.