All work

Part-time, OPUS HR

OPUS-365

An HR app: attendance with geofenced clock-in, guests, requests and approvals.

My role
Started the app and wrote most of the first release; 405 of 511 commits before two developers joined
When
Nov 2025 – Jun 2026
Platforms
Android, iOS
Status
Live on Google Play and the App Store

Overview

Employees clock in for their shifts, register guests, and file requests that go through an approval flow. I built the attendance rules, offline clock-in, guests, requests and biometric login.

In the recording

Onboarding and sign-in, clock in inside the office geofence, then a hybrid shift: on-site is refused outside the allowed location, and the employee clocks in as remote.

Recorded from the real appRecorded from the real Flutter app in the iOS Simulator. The app ran from a throwaway copy pointed at a local mock server with made-up data, with crash reporting and analytics switched off; nothing reached the production backend. The app’s fake-GPS check and its request for “Always” location were turned off in that copy, because a simulator’s location is always simulated.

Private to OPUS HR. The company, office and employee in the recording are made up. The orientation module, QR scanner and payslips were built by other developers and are not shown.

Screens

6 stills from the recording above. Select one to see it larger.

  1. 01Onboarding
  2. 02Home: today’s shifts, hours and requests
  3. 03Clocked in inside the office geofence
  4. 04A hybrid shift asks where you are working
  5. 05On-site refused: outside the allowed location
  6. 06Attendance by day

Clock-in rules

An onsite shift can only start inside one of the shift’s allowed locations: the app measures the distance to each and compares it with that location’s radius. Hybrid shifts ask whether you are working remotely or onsite first.

With no connection, the clock-in is stored locally with its time and position and sent when the device reconnects; entries older than 24 hours are dropped. Shifts that require a selfie can’t be clocked into offline.

Other work

  • Guest registration and check-in
  • Employee requests with an approval flow and approval history
  • Biometric login; Arabic and English; UTC handling for request dates

Stack

  • Flutter
  • Riverpod 3
  • Freezed
  • Hive CE
  • go_router
  • geolocator