Skip to main content

Case study · Public Transport

One system from attendance to plate for a metro rail operator.

Meal counts compiled by hand from attendance sheets, catering requests on paper, and a kitchen with no view of stock or cost. We replaced it with one system that starts from who actually turned up for the shift.

Client
Metro rail operator(anon.)
Industry
Public Transport
Duration
On-premise, phased
Team
Senior pod, FORGE

The challenge

What stood in the way.

A metro rail operator feeds a shift-based workforce along 27 km of elevated track. Meal counts were compiled by hand from attendance sheets, catering requests arrived on paper, riders carried meals out with no record of who received what, and the kitchen had no view of stock or cost.

Our approach

How we framed it.

Start from attendance. If the system knows who is on shift, where, it can forecast what each site needs, route it, and record the hand-over against an employee code. Everything downstream, menu planning, stock, purchasing, cost per meal, hangs off that one feed. The platform runs in the client's own data centre on IIS and SQL Server, integrated hourly with the HRIS.

The solution

What we built.

  • Hourly attendance sync from the HRIS
  • Forecasting by shift, department and location
  • Rider routing to sites with duplicate-meal protection; every meal recorded against an employee code
  • Menu planning, stock, purchasing and cost-per-meal in the same system
  • Public portal and a nightly digest
  • Angular 18 (standalone components, signals) on ASP.NET Core 9 with MediatR/CQRS; SQL Server reporting; Hangfire for sync and digest

Results

What changed.

Three meals a day for more than a thousand staff across thirty-plus sites, each one forecast from real attendance and recorded at hand-over. The kitchen sees stock and cost per meal for the first time.

Stack

Tools used in production.

  • Angular 18
  • Tailwind
  • Angular Material
  • ASP.NET Core 9
  • MediatR
  • CQRS
  • EF Core
  • FluentValidation
  • SQL Server
  • Hangfire
  • IIS

Practices

Practices on the engagement.

Talk to us

Have a similar problem? Bring it to a senior engineer.

A senior engineer plus the relevant department lead joins the first call. No discovery gauntlet, no junior reps.