Skip to main content
Back to projects

Case study

Laburo

Smart workforce management

Mobile app for workforce attendance management with QR check-ins, geolocation, and biometric verification. Integrated with a NestJS API.

Role

Fullstack development: mobile app (React Native / Expo) and backend (NestJS).

Stack

React NativeExpoTypeScriptNestJSTypeORMMySQLJWT
1 / 3
The problem

Companies needed a reliable way to track staff clock-ins and clock-outs without manual spreadsheets or dedicated attendance hardware.

Technical decisions

Dynamically generated QR clock-in, additionally validated against a geographic radius via expo-location, to prevent clock-ins from outside the workplace.

Clock-in confirmation using whichever biometric the user already has set up on their device (fingerprint or face), without capturing or storing any biometric data of its own.

JWT authentication (access + refresh token) with bcrypt password hashing, using guards and a custom @CurrentUser decorator in NestJS.

Session persistence with expo-secure-store instead of AsyncStorage, to avoid storing tokens in plain text on the device.

Challenges

The biggest challenge was designing location validation that tolerated normal GPS drift without allowing fraudulent clock-ins from outside the office — solved with a per-company configurable radius instead of requiring an exact point.

Learnings

Working with native permissions (camera, location, notifications) in Expo forced me to design for error UX: what to show when a user denies a permission, and how to gracefully degrade functionality instead of blocking the rest of the app.