Skip to main content
Case Study

Employee Self-Service and Attendance App

Mobile App React Native Laravel HR

Attendance data feeds payroll, which means an attendance app is a financial system with a friendly interface. It has to work on a construction site with no signal, resist an employee punching in from home, and produce a record that survives a dispute months later. ELIVTECH built that app in React Native against the existing HR platform, treating every punch as an evidenced, immutable entry rather than a row that can be quietly amended.

The client's HR and payroll platform served administrators well and had no usable mobile surface. Employees marked attendance on shared terminals, submitted leave on paper or by email, and waited for managers who could only approve at a desk. Field and shift staff were the worst served and the most numerous. ELIVTECH delivered a React Native application covering attendance, leave, payslip access and approvals, with geo-fenced punch capture that works offline, an evidence model that makes each entry defensible, and an approval flow that reaches managers wherever they are. The app extends the existing platform through a versioned API rather than duplicating any part of it.

At a glance

0 Weeks End-to-End
0 Codebase Shipping to iOS and Android
0 Employee Workflows Delivered
0 Entries Traceable From Punch to Payslip

The challenge

A workforce that is mostly away from a desk, served by a platform that assumed everyone was at one.

Attendance tied to a fixed terminal

Staff marked attendance on shared devices at fixed locations. Field workers travelling directly to a site had no way to record a start time, so their attendance was entered later by a supervisor from memory. The data that fed payroll was frequently a reconstruction rather than a record.

Leave requested and approved by email

Leave requests travelled by email and were approved in replies. Balances were checked manually against a spreadsheet, approvals were lost in inboxes, and an employee could not see the current state of a request without asking the person they had sent it to.

Sites without reliable connectivity

Many work locations have poor or no mobile coverage. Any attendance mechanism requiring a live connection would fail precisely for the field staff it was intended to serve, and a punch that fails is worse than no app because the employee believes it succeeded.

No way to establish where a punch happened

Attendance carried no location evidence, so a shift marked as started on site could not be distinguished from one marked from home. Supervisors relied on trust and occasional spot checks, and genuine disputes had nothing factual to resolve them against.

Payslips distributed as attachments

Payslips were emailed as attachments each cycle. Employees who lost one requested a copy from payroll, salary documents accumulated in personal inboxes, and the business had no record of who had accessed which document or when.

Corrections that erased the original

When an attendance entry was corrected, the new value replaced the old one. Payroll could see the current figure but not what it had been or why it changed, which made explaining a variance between two runs a matter of asking people what they remembered doing.

Our solution

Evidence captured at the moment of the punch, held locally when needed, and never overwritten afterwards.

Workforce Research and Evidence Modelling

Three weeks observing how attendance actually happens across office, shift and field settings, then defining what evidence a punch must carry to be defensible: location with accuracy radius, device identity, timestamp source and whether it was recorded online or offline. Deciding this before building meant the record was designed to survive a dispute rather than merely to display a time.

React Native App with Offline Punch Capture

Attendance, leave, payslips and approvals ship from one React Native codebase to both platforms. A punch is written to encrypted local storage with its evidence and a client-generated identifier, then synchronised when connectivity returns. The employee sees clearly whether an entry is confirmed or still pending, so an unsynchronised punch is never mistaken for a completed one. The queue survives an app restart because it is written to durable storage, which matters most on the older devices common among field staff.

Geo-Fencing with Honest Uncertainty

Work locations are configured as geo-fences with a radius appropriate to the site. A punch records the reported position and its accuracy, and where accuracy is too poor to judge, the entry is flagged for supervisor confirmation rather than accepted or rejected outright. Device clock drift is detected by comparing against server time on sync, and a punch whose local timestamp diverges beyond a tolerance is marked for review rather than silently corrected or silently trusted.

Approvals, Payslips and Immutable Adjustment

Leave requests check balances live and route to approvers with push notification and escalation on inaction. Payslips are viewed in-app against an authenticated session with access logged rather than distributed as attachments, so salary documents stop accumulating in personal inboxes and the business can answer who viewed which document. Corrections are recorded as adjustment entries carrying actor, reason and timestamp, so the original entry and its amendment both survive into payroll. Supervisors work an exception queue of flagged and missing entries rather than reviewing every record, which keeps the correction effort proportionate to the problem.

Technology stack

React Native Laravel CodeIgniter (legacy modules) PHP 8 MySQL 8 Encrypted On-Device Storage Geo-Fencing Push Notifications Laravel Queues AWS ECS Fargate Amazon RDS Amazon S3 AWS KMS Amazon CloudWatch CI/CD Pipeline

Results

Measured across a full payroll cycle with the app deployed to office, shift and field staff.

0 Punches Lost to Connectivity Gaps
0 Entries Carrying Location Evidence
0 Crash-Free Sessions Across Both Platforms
0 Attendance Records Overwritten in Place

Before and after: platform engineering measures

Before
  • Attendance marked only on fixed shared terminals
  • Field staff attendance entered later by a supervisor
  • Leave requested and approved through email threads
  • Balances checked manually against a spreadsheet
  • No location evidence attached to any attendance entry
  • Payslips emailed as attachments with no access record
  • Corrections replacing the original entry outright
After
  • Punch captured on the employee's own device, anywhere
  • Offline punches stored encrypted and synced on reconnect
  • Leave requests routed with push notification and escalation
  • Balances checked live against the payroll platform
  • Location and accuracy recorded, poor accuracy flagged for review
  • Payslips viewed in-app under an authenticated, logged session
  • Corrections held as adjustments preserving the original entry

Project timeline

Weeks 1-3

Workforce Research and Evidence Modelling

Observation across office, shift and field settings, connectivity assessment at representative sites, evidence schema definition for a defensible punch, and the API contract against the existing HR platform.

Weeks 4-8

API Layer and Sync Foundation

Versioned Laravel API over the existing platform, encrypted on-device storage, client-generated identifiers with idempotent endpoints, adjustment-based correction model, and the deployment pipeline on AWS.

Weeks 9-13

Attendance and Geo-Fencing

React Native punch capture with pending and confirmed states, geo-fence configuration per site with accuracy handling, clock drift detection on sync, supervisor review queue for flagged entries, and shift pattern support.

Weeks 14-17

Leave, Approvals and Payslips

Live balance checking, approval routing with push notification and escalation, in-app payslip viewing with access logging, session and device management, and accessibility work on the high-frequency punch screen.

Weeks 18-20

Field Testing and Rollout

Testing across a representative device range, scripted connectivity-loss and location-accuracy scenarios at real sites, battery profiling, a pilot with field teams, then rollout by department with terminals retained during transition.

Key takeaways

What shaped the engineering decisions

  • Define the evidence before the interface: An attendance record feeds payroll and may be examined months later. Deciding what a punch must carry to be defensible shaped the data model, the offline design and the review workflow together.
  • Flag uncertainty rather than guessing: Accepting or rejecting a punch on a poor location fix was rejected in both directions, because either choice quietly produces a wrong record. Flagging for supervisor confirmation keeps the judgement with someone who has context.
  • Show pending versus confirmed: An employee who believes a punch is recorded when it is queued locally will not notice a sync failure. Making the state visible turns a silent risk into something the person can act on.
  • Adjust, never overwrite: Corrections recorded as adjustments with actor and reason preserved the audit trail payroll needs, and made variance between runs explainable from the record rather than from memory.
  • Detect clock drift on sync: A device clock is under the user's control, so an offline timestamp cannot be trusted unconditionally. Comparing against server time at sync makes drift a detected condition rather than an assumption.
  • Extend the platform, do not duplicate it: Building against a versioned API over the existing HR system was chosen over a parallel mobile backend, which would have created a second source of attendance truth feeding the same payroll.
Where this app goes next. With evidence captured at the punch and corrections held as adjustments, the platform can support workforce policies it previously could not enforce. The team is extending the app toward shift swapping with approval routing, overtime pre-authorisation before the hours are worked, and site-level attendance reporting drawn from the same evidenced entries payroll already consumes.

Want results like these?

Let's discuss how ELIVTECH can drive measurable outcomes for your business.

Start your project