All work

Client project · Training and consulting

IAGO System – from course catalogue to e-invoice

For IAGO GmbH, a training and consulting firm for dangerous goods, aviation security, data protection and compliance, I built website, internal system and client portal as one connected system. It replaces an older ERP.

My role Concept, development, data migration and operations – for IAGO GmbH

  • 3 applications from one codebase: website, internal system, client portal
  • EN 16931 e-invoicing as ZUGFeRD or XRechnung, selectable per company
  • 1,400+ automated checks against a dedicated test database
  • 2 languages on the website and in the client portal
Kanban board in the IAGO System with columns lead, quote, negotiation and order, holding booking cards with course, company, date and blurred amount.
Bookings as a board from lead to order, in streamer mode with unreadable amounts. Sample data.

Context and approach

Courses, dates and prices lived in an older ERP, the website was a separate system, and whatever corporate clients wanted to know about their staff – certificates, dates, invoices – went back and forth by email.

Today it is one system with three interfaces. What is maintained in the system appears on the website without a rebuild; bookings from the website land as cases on the booking board, and corporate clients see their status in their own portal. The data of the old ERP was migrated.

What the system does

  • 01

    Bookings as a sales board

    Every case moves from lead through quote and negotiation to order, separated into training, e-learning, consulting and books. A wizard brings client, date, participants, documents and shipping together.

  • 02

    Courses, dates and calendar

    Courses with formats, prices and tiered pricing, dates with trainer, location and checklist. The calendar syncs both ways with Nextcloud.

  • 03

    Certificates with authenticity check

    Certificates are created once per participant as PDF, stored immutably with a checksum and can be verified on the website – only with three details, so nobody can find out by trial and error who was trained.

  • 04

    Documents, dunning and e-invoicing

    Quote, order confirmation, invoice, credit note and reminder, every issued version archived immutably. Invoices go out per company as PDF, ZUGFeRD or XRechnung; deadlines count working days without public holidays.

  • 05

    Consulting billing with contingents

    Consulting contracts with monthly fee, hour contingent and a rate for extra hours. Hours come from appointments and minutes; the invoice carries the contingent status and a statement of work as an attachment.

  • 06

    Newsletter with consent records

    Audiences are derived from bookings, and only people with documented consent are contacted. The log of every sign-up and opt-out is immutable; the system keeps the send schedule itself.

  • 07

    Self-hosted podcast

    Upload, schedule, publish: the website serves audio and the feed for Spotify, Apple Podcasts and others. Statistics follow the IAB rules and store no IP addresses.

  • 08

    Client portal for companies

    Corporate clients see their staff’s certificates, dates, invoices, client file, consulting hours and checklists – in German and English, with their own account and optional second factor.

  • 09

    Installable app with streamer mode

    The system can be installed and sends push notifications per device. Streamer mode makes every euro amount unreadable so a screen share reveals nothing.

Inside the system

Screenshots of the system and portal come from an empty data store with made-up companies, people and figures; amounts are blurred. No real data of IAGO GmbH is shown. The last image shows the public website.

How it is built

  • Developed with AI agents (Claude Code) – every commit reviewed by me
  • One workspace with three applications and four shared packages: types and business logic, data access, PDF, interface
  • One data layer with two implementations: PostgreSQL in production, file storage for development and demos
  • Every issued version of a document stays immutable, with a checksum in the archive
  • Background tasks such as backup, sync, newsletter and podcast run inside the server process, without a separate service

Technology

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • PostgreSQL
  • Supabase
  • pdf-lib
  • ZUGFeRD
  • XRechnung
  • CalDAV
  • CardDAV
  • Web Push
  • Mailjet
  • ALTCHA
  • Docker

A system like this for your business?

Tell me where things get stuck today — I usually reply within one working day.

Discuss a project