My FIFO LifeOne app for the roster, the tickets and the rest of it

My FIFO Life is built for Australian fly-in fly-out workers: the shift calendar, the licences and certificates, the job board and the support numbers, in one place. We designed the product and built it as a progressive web app with an Android release.

The My FIFO Life shift calendar on a tablet and on a phone, showing a two weeks on, one week off rotation
Client
My FIFO Life
Sector
Mining and resources
Year
2025 to 2026
Platforms
Progressive web app, Android
Services
Product and UX design, Web development, Mobile apps

A fly-in fly-out worker runs their life on a rotation. The app holds that rotation, the documents that keep them on site, the jobs that would suit their next swing, and the support services they might need at two in the morning in a camp.

Built for

  • FIFO workers on rotation in Western Australia and across the country.
  • Their partners and families, who plan around the swing.
  • Workers between contracts, looking for the next site.

The problem

A swing is not a work pattern any calendar app understands. Two weeks on and one week off, day shift then night shift, rest and recuperation that moves, and a roster that changes when the site changes it. Workers were keeping it in a spreadsheet, a whiteboard at home, and their heads.

The tickets are the other constant worry. A high risk work licence, a white card, a medical, a driver licence, each with its own expiry, and losing track of one means being turned away at the gate. They were living in a folder of photographs.

Everything else in that life is scattered too: job listings across a dozen company career pages, a resume that needs to pass an applicant tracking system, and mental health services nobody wants to search for when they need them.

Goals

  1. 01Make the swing something you set up once and then read.
  2. 02Hold licences and certificates securely, and warn before one expires.
  3. 03Bring mining and resources jobs into one searchable place.
  4. 04Keep crisis support one tap away, not buried in a wellbeing section.
  5. 05Work offline on a camp connection, and install like an app.

Our role

We designed and built the product, shipped it to Google Play, and maintain it.

What we delivered

  • Product design for the whole app, mobile first
  • Progressive web app built on React, installable and offline capable
  • Android build and Google Play release
  • Express and Drizzle back end on PostgreSQL
  • Encrypted credential storage with expiry notifications
  • Job scraping and matching from resources industry employers
  • Resume analysis against real job requirements
  • Account security: multi-factor authentication, passkeys and session control

How we worked

  1. 01

    Start with the swing

    The calendar was designed around rotation patterns rather than individual events. You describe the pattern once and the app generates the shifts, which is how workers already think about their year.

  2. 02

    Design for the worst connection

    Camp internet is bad. The app was built as a progressive web app so it installs, caches and keeps working when the connection does not.

  3. 03

    Treat documents as sensitive

    Licences carry names, numbers and photographs. Each one is encrypted with its own key before it is stored, and the app shows the encryption status so a worker can see that it happened.

  4. 04

    Bring the jobs in

    Rather than link out to employer career pages, listings are collected, normalised into one shape and made searchable by state, region and site.

  5. 05

    Ship to the store

    The same codebase was wrapped for Android and released on Google Play, so the app is installable the way this audience expects to install things.

Screens and features

The My FIFO Life homepage with the headline Manage Your Swing. Reclaim Your Life. and a phone showing the roster pattern screen
The site states what the app is for in the words workers use for it.
The credentials screen listing a working at heights ticket, a driver licence, a white card and a generic induction, each marked active with a lock icon
Every credential is encrypted individually, and the screen says so.
The jobs screen listing maintenance technician, electrician and concrete finisher roles with locations and apply buttons
Listings are collected from employers and filtered by state and region.
  • Rotation patterns, not events

    Set a two and one, or an eight and six, and the calendar fills itself. Day, night, rest and recuperation and rostered days off are distinct types with their own colours.

  • Share a roster

    A partner or a crew member can be given the calendar, so planning around a swing does not depend on screenshots.

  • A credential vault with a calendar

    Documents are stored encrypted, tagged by type, and checked against their expiry dates so a reminder arrives before a ticket lapses rather than after.

  • Send a whole set of tickets

    Credentials can be sent to an employer in one action, which is the moment the folder of photographs usually falls apart.

  • A resume audit against real listings

    A resume is scored against the requirements of actual mining and resources jobs, and missing tickets are flagged.

  • Support on the home screen

    Crisis lines and mental health services sit in the wellbeing section with their numbers ready to dial, not behind a search.

Technical choices

What the product is built with, and why.

A progressive web app, then Android
One codebase installs from the browser and ships to Google Play. Workers who will not install an app still get an icon on the home screen, and the store listing exists for the ones who look there first.
Envelope encryption for credentials
Each document is encrypted with its own data key under a managed master key, using AES-256-GCM. A database copy on its own reveals nothing, and a key can be rotated without rewriting the documents.
Drizzle on PostgreSQL
Shifts, rosters, credentials and job listings are relational and queried by date range constantly. The schema is typed in the same language as the application, so a column change surfaces as a type error.
Server-side job collection
Listings are gathered, deduplicated and normalised on a schedule rather than fetched when someone opens the screen, so search is fast and employer sites are not hit by every user.
Passkeys and multi-factor authentication
The app holds identity documents. Sign-in supports authenticator apps and passkeys, and a worker can see and end their own sessions.

Building for people who are not at a desk?

Offline behaviour, installability and real device testing are part of how we work. Tell us who you are building for.