Work / Wave Smart Flow

Wave Smart Flow

Workforce management for construction staffing companies

The product

Wave Smart Flow is an HR and operations system for staffing companies that place construction workers with building contractors. One office manages hundreds of workers end to end: permits and visas, housing, site assignments, daily attendance, getting hours approved by the client, payroll and invoicing.

It is a large, multi-tenant Next.js application, built by a team over several years:

  • 217 database models and more than 600 API routes

  • A mobile clock-in app for workers and a portal in seven languages

  • AI scanning of passports, visas and insurance documents

  • Integrations with invoicing, attendance, payroll and messaging systems

The screenshots here use demo data, with the interface translated into English.

My part

I was one of several developers on the team from February 2024 to September 2025, working on both the backend and the frontend. I wrote the first version of the codebase: sign-in, the session middleware, the first database schema and the shared UI kit the rest of the app is built from. Then I built and extended core modules:

  • The worker file: the list and the detail tabs for fees, bank details, medical records, accidents, events, training and tags

  • Construction companies with their contacts, projects, contracts and documents, and worker housing with tenants, payments and equipment

  • Working hours and payroll screens, bulk schedule and hours uploads, and hours reports by worker, project and company

  • Invoicing through an external accounting system, calculated from hours and project rates

  • An inventory module for the clothing and equipment issued to each worker, and salary advances

  • The flow that sends a month's working days to the client for review, with approve and reject, push notifications and email

  • The mobile layout of the live attendance dashboard

The admin dashboard with active workers, workers by status and expiry tracking

The dashboard: active workers, workers by status, expiring documents and birthdays.

Moving a company onto it

When the first client company moved onto the system, I wrote the migration scripts that imported its workers, construction companies, apartments and project assignments from their old spreadsheets. The scripts created missing banks and branches on the way, rebuilt serial numbers and logged every worker, so the office could check the import line by line.

What I took from it

Working on a codebase this size with a team taught me to build in small, reviewable pieces, to keep data migrations repeatable, and to design screens for people who use them all day.