Timeline
Timeline
Visualize gear usage history, maintenance schedules, and ROI over time
Overview
The Timeline — the Gear History view on the Sub-Rentals page — is a visual history of your equipment: when it went out on a sub-rental, when it came back, and when maintenance or a repair was logged against it. Those events are also what the utilization and ROI figures elsewhere in the app are calculated from, so keeping them accurate is what makes those numbers right.
Requirements
Functional Requirements
| ID | Requirement | Acceptance Criteria | Priority | Source |
|---|---|---|---|---|
| REQ-TML-001 | The system shall display a chronological timeline of gear usage events per owned item | Open Sub-Rentals → Gear History → events listed newest-first, 10 per page; each shows date, type, description; 0 events → "No events found for this period" | Must | timeline |
| REQ-TML-002 | The system shall show events grouped by type: Project Usage, Maintenance, Purchase, Sub-Rental | Timeline loads → events grouped under type headers; each group collapsible; count per group shown; empty group hidden | Must | timeline |
| REQ-TML-003 | The system shall allow manually adding timeline events (maintenance performed, repairs, calibration) | Click "Add Event" → form with type, date, notes; save → event appears on timeline; edit/delete supported | Must | MaintenanceLogForm + useGearTimelineLogHandler |
| REQ-TML-004 | The system shall display ROI accumulation as a visual progression alongside the timeline | Timeline shows cumulative earnings line/bar; grows with each rental/usage event; hover → shows running total amount | Should | timeline |
| REQ-TML-005 | The system shall auto-populate project usage events from project date ranges where the item appears | Item used in project → timeline shows project name, dates, role; multiple projects → multiple entries shown | Must | no concrete source — see note below |
| REQ-TML-006 | The system shall support filtering events by type, date range, and gear item | Apply filter → results update immediately; clear → full data restored; empty query → all items shown | Should | timeline |
| REQ-TML-007 | The system shall show maintenance reminders when scheduled maintenance is overdue | Maintenance date passed → warning badge on item; overdue count shown in timeline header; click → opens maintenance form | Should | timeline |
Note (2026-09-08): REQ-TML-005 is not shipped as stated.
project_useis a declared event type intimelineService, but nothing writes one — the onlyevent_typevalues ever persisted arerental_out/rental_in(fromsubrentalTimelineWrites) and whatever the manual form submits, andgetAllGearTimelineonly filters and sorts events that already exist. Project usage IS derived from project shoot periods, but only as utilization/ROI periods incollectUsagePeriods— those never become timeline events, so no project-usage entry appears on the timeline. The row is retained as planned scope.
Note (2026-09-10): REQ-TML-002, REQ-TML-004 and REQ-TML-007 are also not shipped as stated, and are retained as planned scope on the same basis.
- REQ-TML-002 (grouping). Events are not grouped under collapsible type headers.
GearTimelinerenders one flat list, newest first, paginated 10 per page, with a single total count in the header. Event type appears as a row of filter toggles, not as group headings — filtering to one type is the closest shipped equivalent.- REQ-TML-004 (ROI progression). There is no cumulative ROI line, bar or hover total anywhere on the timeline. Timeline events do feed the ROI and utilization figures shown elsewhere —
USAGE_EVENT_TYPESingearUtilizationServicecountsrental_out,project_useandmaintenance— but that is a number on another surface, not a visual progression on this one.- REQ-TML-007 (overdue maintenance reminders). Nothing on the timeline computes or displays an overdue state: no badge, no header count, no click target. Owned Gear has its own maintenance schedule (
useMaintenanceSchedule); the timeline does not read it.
Non-Functional Requirements
| ID | Requirement | Metric | Priority |
|---|---|---|---|
| NFR-TML-001 | Timeline shall render within 300ms for ≤100 events | Render time | Should |
Data Requirements
- Event types: sub-rental out and in (written for you when gear moves), maintenance and repair
(from the Log Maintenance form).
purchaseandproject_useare declared in the service but nothing writes them — see the notes above. - Event fields: Date, type, description, linked project/item ID
- Persistence: Events stored in IndexedDB → cloud sync
- Source data: owned gear and sub-rental records. Project data feeds utilization/ROI, not the event stream.
Constraints & Limits
- Available to all tiers (Free and Pro)
- Auto-populated events depend on project date ranges being set
- Timeline renders client-side and paginates at 10 events per page; filters apply to the whole set before paging
Offline Behavior
- Fully available offline — timeline data is derived from local stores
- Manual event additions sync to cloud when connectivity is restored
Dependencies
- Requires: Projects — timeline events per project
Accessing the Timeline
Open Sub-Rentals from the sidebar and switch to the Gear History view. That is the timeline — it covers your whole inventory at once, with a Gear Item filter for narrowing to one piece.
There is no Timeline tab on an individual owned-gear item, and no standalone Timeline sidebar entry; the legacy /timeline route redirects to Sub-Rentals.
Viewing the Timeline
Event Types
Events are colour-coded and icon-tagged:
| Shown as | Icon | Colour | When it appears |
|---|---|---|---|
| Rented Out | Up arrow | Blue | Gear went out on a sub-rental |
| Returned | Down arrow | Green | Gear came back from a sub-rental |
| Maintenance | Wrench | Yellow | You logged maintenance of any type except Repair |
| Repair | Wrench | Red | You logged maintenance and chose Repair |
| Purchased | Shopping cart | Purple | Declared, but nothing writes one — see the notes above |
| Project Use | Briefcase | Orange | Declared, but nothing writes one — see the notes above |
Repair and Maintenance share the wrench; the colour is what separates them. Only the first four event types can actually appear on your timeline today.
Adding Events
- Click Log Maintenance in the Gear History header
- Pick the gear item (or leave it as No specific item)
- Choose a maintenance type — Sensor Cleaning, Firmware Update, Repair, Calibration, Inspection or Other
- Enter the date, service provider, cost and notes
- Click Save
This is the only way to add an event by hand, and it always produces a Maintenance event — or a Repair event when you pick Repair. There is no free-form "add any event type" form: rental events are written for you when gear goes out and comes back on a sub-rental.
The cost you enter is also mirrored onto the item's own maintenance log, which is where Owned Gear reads it for total cost of ownership.
ROI and utilization
The timeline itself draws no ROI chart — there is no cumulative line or running total overlaid on the events. What the events do is feed the utilization and ROI figures shown on the Sub-Rentals page and in Analytics & ROI: rental, project-use and maintenance events are the periods those calculations count, de-duplicated so two events covering the same day count once.
So logging maintenance and running sub-rentals through the app is what makes those numbers right — you just read the result elsewhere, not here.
Tips
- Log maintenance regularly: Helps with warranty claims and resale value
- Set maintenance intervals in Owned Gear: overdue tracking lives there, not on the timeline — the timeline records what was done, not what is due
- Cross-reference with analytics: Timeline events feed into the ROI dashboard
- Use for insurance documentation: Maintenance history demonstrates proper care
Related Documentation
Last Updated: 2026-09-10 Version: 0.790.2
