Skip to content

Domain deep dive — Time tracking

Single D1 narrative for engineers changing time logging, project membership, or mobile/portal clients that call api/time_tracking.py. It ties together:

In scopeOut of scope (link instead)
Time Tracker Settings, Time Tracking Project, Time Tracking User, check-in logsERPNext Project accounting — standard ERPNext docs
api/time_tracking.pyUnrelated REST surface — grep api/ for other modules
Work locations, user mapping child tablesFull HR attendance policy — product-specific
Sub-themeExamples
Settingstime_tracker_settings
Core entitiestime_tracking_project, time_tracking_user
Attendancetime_tracking_employee_checkin, time_tracking_daily_user_log
Locationswork_location_list, work_location_type, user_checkin_mapping
Membershipproject_users_list

Index: time-tracking.

LayerPrimary locations
APIleekimerp/api/time_tracking.pylog_time, app_data, login, etc. (see API inventory)
Module packageleekimerp/time_tracking_module/ — DocType controllers, modules.txt registration
Auth / guestMixed allow_guestSecurity checklist

Client / portal

time_tracking.py

Time Tracking Project

Time Tracking User

Check-in / daily logs

PriorityDocType keysRationale
P1 — Overlays presenttime_tracker_settings, time_tracking_project, time_tracking_user (see overlays.json)Entry configuration and identity
P2time_tracking_employee_checkin, user_checkin_mapping, work_location_typeAttendance edge cases
P3time_tracking_daily_user_log, project_users_listVolume tables; overlay if queries confuse support
SymptomFirst checks
API 403 / authUser linkage Time Tracking User ↔ Frappe User; session cookies vs token
Guest abuseRate limits, API inventory allow_guest column
Wrong project hoursProject Users List assignments, log_time validation

Logs: Frappe Error Log, api/time_tracking.py tracebacks, reverse proxy access logs for brute force.