azaharizaman / nexus-time-tracking
Time entry and timesheet rules: hours validation, approval workflow, immutability. Reusable for projects, support, internal work.
Package info
github.com/azaharizaman/nexus-time-tracking
pkg:composer/azaharizaman/nexus-time-tracking
Requires
- php: ^8.3
- azaharizaman/nexus-common: dev-main
- psr/log: ^3.0
Requires (Dev)
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2026-05-05 03:24:36 UTC
README
Time entry and timesheet rules (hours, approval, immutability) for the Nexus ERP ecosystem.
Overview
The Nexus\TimeTracking package is a Layer 1 atomic package that owns timesheet entry (date, hours, optional work item ID), validation (e.g. hours not negative, max 24h/day/user), approval state machine, immutability of approved timesheets, and rules for billing rate default. No project/task persistence—only IDs and interfaces for work item and approver. Reusable for any domain that logs time.
Architecture
- Layer 1 Atomic Package. Pure PHP 8.3+. No framework dependencies.
- Namespace:
Nexus\TimeTracking
Key Interfaces
TimesheetManagerInterface– create/update timesheet lifecycleTimesheetQueryInterface– read timesheetsTimesheetPersistInterface– persistence contractTimesheetApprovalInterface– approval workflow
Requirements (mapped)
- FUN-PRO-0254/0566: Time tracking and timesheet entry
- FUN-PRO-0575: Timesheet approval workflow
- BUS-PRO-0056: Timesheet hours cannot be negative or exceed 24h/day/user
- BUS-PRO-0063: Approved timesheets are immutable
- BUS-PRO-0070: Task actual hours = sum of approved timesheet hours
- BUS-PRO-0101/0125, REL-PRO-0396, SEC-PRO-0460
Installation
composer require azaharizaman/nexus-time-tracking
License
MIT.