Timeclock Settings Overview
9:41
Location Tracking Active
GPS Tracking Record location on clock-in/out and at intervals
Geofence Enforcement Require crew within job site boundary to clock in
Geofence Radius 150 ft
50 ft500 ft
Auto Clock-Out After inactivity period
12 hours
Break Policy
30 min unpaid Auto-deduct ON
Overtime Rules
40h/wk → 1.5x 60h/wk → 2x
OH Compliant
Quick Actions

TimeclockSettings — overview hub for all timeclock config

useQuery(api.timeclock.settings.get), useMutation(api.timeclock.settings.update)

GPS & Geofencing
9:41
W Market St S Main St
1247 W Market St, Akron In Zone
Geofence Radius 150 ft
50 ft150 ft300 ft500 ft
Smaller radius = stricter location verification. Recommended: 100-200 ft for residential jobs.
Out-of-Bounds Alert Notify when crew leaves geofence during active shift

Auto-Pause Timer Pause clock when outside geofence for 10+ minutes
Verification Frequency
5 min
15 min
30 min
Lower frequency = better battery. Adaptive GPS adjusts based on movement.
Track Between Jobs Record GPS during transit between sites

GeofenceConfig — per-job or global geofence settings

useQuery(api.timeclock.geofence.get), expo-location, MapView

Overtime Rules
9:41
Compliance
Ohio Labor Law
Ohio follows federal FLSA: overtime after 40 hours/week at 1.5x rate. No daily overtime requirement.
Weekly Overtime
Enable Weekly OT Calculate overtime after weekly threshold
40
1.5x (Time and a Half)
Daily Overtime
Enable Daily OT Calculate overtime after daily threshold (not required in OH)
8
Double Time
Enable Double Time 2x rate after extended overtime hours
60
Holiday Overtime
1.5x holidays 6 days configured
Auto-Calculate OT Automatically apply rates to timesheets

OvertimeRulesConfig — FLSA + state-specific OT rules

useMutation(api.timeclock.overtime.update), Ohio R.C. 4111.03

Break Policies
9:41
Break Type
Paid
Unpaid
Mixed
Break Duration
30 Minutes Standard lunch break
15 Minutes Short rest break
60 Minutes Extended meal break
Custom Set your own duration
Auto-Deduct Breaks Automatically deduct break time from shifts over 6 hours

6 hours
Break Reminders Push notification after 4 hours without a break

Manager Alerts Alert when employee skips mandatory break
Ohio has no mandatory break law for adults 18+. These policies are company-defined best practices.

BreakPolicyConfig — company break rules and auto-deduction

useMutation(api.timeclock.breakPolicy.update), push notification triggers


Clock-In / Out Interface
7:58
GPS Verified — Within Geofence
Active Job
Kitchen Remodel — Johnson 1247 W Market St, Akron
Elapsed Time
04:23:17
Clocked in at 7:58 AM
Today Mon, Feb 24
Regular 4h 23m
Break 0m
OT 0h

TimeclockInterface — primary clock-in/out with GPS verification

useMutation(api.timeclock.clockIn), useMutation(api.timeclock.clockOut), expo-location

Timesheet Review
4:30
Feb 17 – Feb 23, 2026
Regular 152.5h
Overtime 18.5h
Crew 5
Name Mon Tue Wed Thu Fri Sat Total
MR
Marcus
8.0 8.5 8.0 9.0 8.0 4.0 45.5
JW
James
8.0 8.0 7.5 8.0 7.0 - 38.5
AK
Amy
8.0 8.0 8.0 8.0 8.0 - 40.0
DP
Derek
8.0 8.0 8.5 8.5 8.0 5.0 46.0
LS
Lisa
6.0 7.5 7.0 6.0 6.0 - 32.5
2 employees exceeded 40h/wk. Overtime of 11.5h total will be applied at 1.5x.

TimesheetReview — weekly grid with approve/reject per row

useQuery(api.timeclock.timesheets.listForWeek), useMutation(api.timeclock.timesheets.batchApprove)


Payroll Export
5:15
Export Format
ADP ADP Workforce Now format
Gusto Gusto payroll CSV import
QuickBooks QuickBooks Time IIF format
CSV Generic spreadsheet export
Pay Period
From
Feb 10, 2026
To
Feb 23, 2026
Period Summary
Regular Hours 312.5h
Overtime Hours 28.0h
Double Time Hours 4.5h
Estimated Total Pay $14,837.50
Preview 5 employees
NameRegOTDTTotal
Marcus R.72.011.5-$3,412
James W.76.0--$2,736
Amy K.80.04.0-$3,120
Derek P.68.08.04.5$3,465
Lisa S.64.54.5-$2,105

PayrollExport — multi-format payroll export with preview

useMutation(api.timeclock.payroll.export), ADP/Gusto/QB/CSV formatters

Timeclock Analytics
5:30
This Pay Period Feb 10 – 23
7.8h Avg Hours / Employee
12.4% Overtime Rate
94% On-Time Clock-In
97% GPS Compliance
Hours by Employee
Marcus
83.5h
Amy
80.0h
James
76.0h
Derek
80.5h OT
Lisa
64.5h
Overtime Trends +8%
W1
W2
W3
W4
W5
W6
OT hours trending up — review crew capacity
Labor Cost by Job
Kitchen Remodel
$6,240
Bathroom Reno
$4,180
Deck Build
$2,890
Roof Repair
$1,528

Total Labor Cost $14,838

TimeclockAnalytics — workforce metrics and labor cost insights

useQuery(api.timeclock.analytics.dashboard), Recharts bar/line components


Data Architecture

Schema — Settings

timeclockSettings {
  contractorId: Id<contractorUsers>
  gpsEnabled: boolean
  geofenceEnabled: boolean
  geofenceRadiusFt: number (50-500)
  autoClockOutMinutes: number (default 720)
  verificationFreqMin: 5 | 15 | 30
  autoPauseOnExit: boolean
  trackBetweenJobs: boolean
}

overtimeRules {
  contractorId: Id<contractorUsers>
  weeklyOtEnabled: boolean
  weeklyOtThreshold: number (hours)
  weeklyOtMultiplier: 1.5 | 2.0
  dailyOtEnabled: boolean
  dailyOtThreshold: number (hours)
  doubleTimeEnabled: boolean
  doubleTimeThreshold: number (hours)
  holidayMultiplier: number
  holidays: string[] (ISO dates)
  autoCalculate: boolean
  stateCompliance: "OH" | "CA" | "federal"
}

Schema — Break & Time

breakPolicy {
  contractorId: Id<contractorUsers>
  breakType: "paid" | "unpaid" | "mixed"
  breakDurationMin: 15 | 30 | 60 | custom
  autoDeduct: boolean
  autoDeductAfterHours: number
  breakReminders: boolean
  managerAlerts: boolean
}

timeEntries {
  contractorId: Id<contractorUsers>
  employeeId: Id<contractorUsers>
  jobId: Id<jobs>
  clockInAt: number (timestamp)
  clockOutAt: number?
  clockInLocation: {lat, lng, accuracy}
  gpsSnapshots: [{lat, lng, ts}]
  breakMinutes: number
  overtimeMinutes: number
  status: active | completed | adjusted
}

Mutations

settings.update(fields)
  → updated timeclockSettings

overtime.update(rules)
  → updated overtimeRules

breakPolicy.update(policy)
  → updated breakPolicy

clockIn(jobId, lat, lng)
  → {entryId, geofenceStatus}

clockOut(entryId, lat, lng)
  → {duration, otMinutes}

startBreak(entryId, type)
  → {breakId, startedAt}

timesheets.batchApprove(
  timesheetIds[])
  → {approved, rejected}

payroll.export(
  format, dateRange)
  → {fileUrl, summary}

Queries & Hooks

settings.get()
  → timeclockSettings

geofence.get(jobId?)
  → {center, radius, status}

activeEntry.get()
  → current clock-in or null

timesheets.listForWeek(
  weekStart)
  → [{employee, daily, total, ot}]

payroll.preview(
  format, dateRange)
  → {employees, regH, otH, totPay}

analytics.dashboard(
  dateRange)
  → {avgHours, otRate, onTime%,
    gpsCompliance%, otTrend[],
    laborByJob[]}

Hooks:
  useTimeclock() — clock state
  useGeofence() — location check
  usePayrollExport() — formatter

Integrations

expo-location
  GPS, background location
  Geofencing API (enter/exit)

react-native-maps
  MapView + Circle overlay
  Job site pin markers

Payroll Exporters
  ADP Workforce Now (CSV)
  Gusto (CSV import format)
  QuickBooks Time (IIF)
  Generic CSV/PDF

Push Notifications
  Break reminders
  Geofence exit alerts
  Auto clock-out warnings

Compliance Engine
  OH R.C. 4111.03 (FLSA)
  State-specific OT rules
  Break law requirements

Research Sources

TSheets / QuickBooks Time
  Geofence auto clock-in/out
  QB payroll integration
  Facial recognition + GPS

ClockShark
  GPSFence (adaptive GPS)
  Battery-aware frequency
  Construction-first UI

BusyBusy
  Dynamic geofences (resize)
  Elevation-aware tracking
  On-site verification gate

Homebase / Deputy
  Break compliance engine
  Multi-format payroll export
  Scheduling integration

Clockify
  Analytics dashboard UX
  Timesheet approval flow
Settings + GPS Geofencing
9:41
Timeclock Settings
Location Tracking
Active
GPS + Geofence enabled
GPS Tracking
Geofence
Auto Clock-Out
12h
Break Policy
30m unpaid
Overtime Rules
Ohio Labor Law
Weekly OT (40h) 1.5x
Double Time (60h) 2.0x
Holiday OT 1.5x · 6 days
GPS & Geofencing
W Market St S Main St
1247 W Market St, Akron In Zone
Geofence Radius 150 ft
50 ft150 ft300 ft500 ft
Out-of-Bounds AlertNotify when crew leaves geofence
Auto-Pause TimerPause clock outside geofence 10+ min
Track Between JobsRecord GPS during transit
Verification Frequency
5 min
15 min
30 min
Lower frequency = better battery life

Clock-In/Out + Timesheet Review
7:58
Timeclock
GPS Verified — Within Geofence
Active Job
Kitchen Remodel — Johnson1247 W Market St, Akron
Elapsed Time
04:23:17
Clocked in at 7:58 AM
Today Mon, Feb 24
Regular4h 23m
Break0m
OT0h
Weekly Timesheet
Feb 17 – Feb 23, 2026
Regular152.5h
Overtime18.5h
Crew5
NameMonTueWedThuFriSatTotal
MR
Marcus
8.08.58.09.08.04.045.5
JW
James
8.08.07.58.07.0-38.5
AK
Amy
8.08.08.08.08.0-40.0
DP
Derek
8.08.08.58.58.05.046.0
LS
Lisa
6.07.57.06.06.0-32.5
2 employees exceeded 40h/wk. Overtime of 11.5h total at 1.5x.

Payroll Export + Analytics
5:15
Payroll & Analytics
Export Format
ADPWorkforce Now format
GustoPayroll CSV import
QuickBooksTime IIF format
CSVGeneric spreadsheet
Period Summary
Regular Hours312.5h
Overtime Hours28.0h
Double Time4.5h
Estimated Total$14,838
Workforce Analytics
7.8h Avg Hours/Employee
12.4% Overtime Rate
94% On-Time Clock-In
97% GPS Compliance
Hours by Employee
Marcus
83.5h
Amy
80.0h
Derek
80.5h OT
James
76.0h
Lisa
64.5h
Labor Cost by Job
Kitchen Remodel
$6,240
Bathroom Reno
$4,180
Deck Build
$2,890
Roof Repair
$1,528

Total Labor Cost $14,838
Timeclock — Dashboard
https://app.3bids.io/contractor/timeclock
3Bids
Dashboard ⌘1
Clock In/Out ⌘2
Timesheets ⌘3
Payroll ⌘4
Analytics ⌘5
GPS & Geofence ⌘6
Overtime Rules ⌘7
Break Policy ⌘8
MK
Mike Kowalski
Contractor
Settings ⌘,
Timeclock Dashboard
Feb 10 – 23
345h
Total Hours
28h
Overtime
94%
On-Time Rate
$14,838
Total Labor
Weekly Timesheet — Feb 17–23
NameMonTueWedThuFriSatTotal
Marcus R.8.08.58.09.08.04.045.5
James W.8.08.07.58.07.0-38.5
Amy K.8.08.08.08.08.0-40.0
Derek P.8.08.08.58.58.05.046.0
Lisa S.6.07.57.06.06.0-32.5
Hours by Employee
Marcus
83.5h
Amy
80.0h
Derek
80.5h
James
76.0h
Lisa
64.5h
2 employees with OT. Review crew capacity.
Overtime Trends
+8%
W1
W2
W3
W4
W5
W6
OT hours trending up — review crew capacity
Labor Cost by Job
Kitchen Remodel
$6,240
Bathroom Reno
$4,180
Deck Build
$2,890
Roof Repair
$1,528

Total$14,838
Quick Payroll Export
Regular Hours312.5h
Overtime28.0h
Double Time4.5h
Est. Total$14,838

Timeclock — Settings
https://app.3bids.io/contractor/timeclock/settings
3Bids
Dashboard ⌘1
Clock In/Out ⌘2
Timesheets ⌘3
Payroll ⌘4
Analytics ⌘5
GPS & Geofence ⌘6
Overtime Rules ⌘7
Break Policy ⌘8
MK
Mike Kowalski
Contractor
Settings ⌘,
GPS & Geofence Settings
GPS Configuration
GPS Tracking
Geofence
Out-of-Bounds Alert
Auto-Pause Timer
Track Between Jobs
Geofence Radius
50 ft150 ft500 ft
Verification Frequency
5 min
15 min
30 min
Overtime Rules
Ohio Labor Law
Weekly OTAfter 40 hours/week
1.5x
Daily OTNot required in OH
Double TimeAfter 60 hours/week
2.0x
Holiday OT6 holidays configured
1.5x
Auto-Calculate OT
Break Policy
Break Type
Unpaid
Duration
30 min
Auto-Deduct
Break Reminders
Manager Alerts
Pro Tip:
Ohio has no mandatory break law for adults 18+. Auto-deduct with reminders ensures compliance with company policy while protecting against liability.