Case study · Aer Lingus Virtual

An operations portal with rules built in

An operations portal for Aer Lingus Virtual: role-based dashboards, automated OCC reporting, NOTAM acknowledgement and recruitment, built in Next.js and Supabase.

Client
Aer Lingus Virtual
Role
Full-Stack Engineer, Contract
When
Jan 2026 - Feb 2026
Where
Remote
Aer Lingus Virtual screenshot
Private build. A walkthrough is available on request.alvasim.co.uk (members only)

Overview

Aer Lingus Virtual is a virtual airline community with pilots, staff and an operations control centre (OCC). I built its operations portal from scratch as a contract full-stack engineer, in Next.js and TypeScript with Supabase.

The portal handles membership, documents, operations reporting, notices to airmen (NOTAMs), recruitment and live weather. It also replaced the community's WordPress site on cPanel with a migration to Hostinger, where I configured the server, SSL and domain.

The challenge

A virtual airline runs on process: who can see what, which reports need escalating and when, and which notices every pilot must read before flying.

The goal was a portal that enforces those rules itself, rather than relying on people remembering them, while notifying staff where they already are: Discord and email.

How it fits together

The portal is a Next.js application backed by Supabase for accounts, data and file storage. Operational events fan out to Discord (through webhooks) and to email (through SMTP) at the same time.

Members

  • Pilots
  • OCC & staff
  • AdministratorsApprove accounts, manage content
▼role-based access

Portal

  • Next.js + TypeScriptRole-gated dashboards
  • Live METARWeather and runway selection
▼reads & writes

Supabase

  • AuthEmail verification, admin approval
  • DatabaseReports, NOTAMs, vacancies
  • Blob storageNested PDF document library
▼notifications

Notify

  • Discord webhooks
  • Email via SMTP
Portal architecture: one application, role-based access, notifications to Discord and email.

Key workflows

The processes the system runs, step by step. Amber steps are checks or gates; green steps are the outcome.

Joining the portal

New members can't simply sign up and walk in. Registration is email-verified, then an administrator approves the account, and only then does the member see the dashboard for their role.

  1. 01Register
  2. 02Verify email
  3. 03Admin approval
  4. 04Role-based dashboard

OCC report with escalation

Operations reports use conditional forms across multiple categories, so each report asks only for what's relevant. Filing one notifies staff on Discord and by email at the same time. A report left without action for 60 minutes escalates automatically, and comment threads lock after 24 hours to keep the record clean.

  1. 01File reportConditional multi-category form
  2. 02Notify Discord + emailSimultaneously
  3. 03Actioned within 60 min?
  4. 04Resolved

from 03 · No action after 60 minutes

  1. Automatic escalation
  2. Comments auto-lock after 24 h

NOTAM acknowledgement gate

Notices to airmen must be read. When a NOTAM is published, pilots are locked out of the dashboard until they acknowledge it. NOTAMs expire automatically, so outdated notices never block anyone.

  1. 01NOTAM published
  2. 02Dashboard lockedFor pilots who haven't acknowledged
  3. 03Pilot acknowledges
  4. 04Access restored

from 01 · At its expiry date

  1. NOTAM expires automatically

Recruitment

Vacancies are posted in the portal with a deadline, announced on Discord, and applications are made inside the portal. When the deadline passes, the vacancy removes itself.

  1. 01Post vacancyWith a deadline
  2. 02Announce on Discord
  3. 03Applications in portal
  4. 04Auto-deleted at deadline

What I built

  • Accounts and access

    Email-verified registration with administrative approval, role-based dashboards, and a nested PDF document library with blob storage.

  • Automated operations reporting

    Multi-category OCC reporting with conditional forms, 60-minute delay escalation and 24-hour comment auto-lock, with Discord and email notifications sent at the same time.

  • NOTAMs with acknowledgement

    NOTAMs expire automatically, and the dashboard stays locked until each pilot acknowledges them.

  • Recruitment and live data

    Vacancies with deadline auto-deletion, in-portal applications and Discord announcements, plus live METAR weather data and runway selection.

  • Migration

    Moved the site from WordPress on cPanel to Hostinger and configured the server, SSL and domain.

Results

80%
performance improvement after the migration
50%
more organic traffic
60 min
automatic escalation for unactioned reports
24 h
comment auto-lock on reports

Stack

  • Next.js
  • TypeScript
  • Supabase
  • Discord webhooks
  • SMTP
  • RBAC
  • Blob storage

Questions

What stack is the Aer Lingus Virtual portal built on?
Next.js and TypeScript with Supabase for authentication, the database and blob storage, plus Discord webhooks and SMTP for notifications.
How does the NOTAM acknowledgement work?
When a NOTAM is published, pilots can't reach the dashboard until they acknowledge it. NOTAMs expire automatically.

Have a similar project?

I take on contract and full-time work from Muscat, Oman and remotely. Tell me what you're building.

Get in touch

More case studies