Platform
Platform Overview
High-level product and technical overview of the T1 Platform.
Platform Overview
T1 Platform is a Symfony 7 application that coordinates workforce operations for electrical contracting work. It has browser portals for admins, client users, supervisors, payroll, finance, and electricians, plus API v2 endpoints for the mobile app.
Personas
| Persona | UserType value | Typical role | Main surface |
|---|---|---|---|
| Admin | admin | Platform-wide setup and intervention | /admin |
| Client Admin | clientAdmin | Client-scoped configuration and approvals | /client, selected /admin/clients/{id} pages |
| Client Supervisor | clientSupervisor | Review and sign off submitted work | /supervisor, /api/v2/supervisor |
| Payroll Manager | payrollManager | Payroll review, employee week summaries, approval, Xero-ready workflows | /payroll |
| Client Finance | clientFinance | Invoice and finance review | /finance |
| Electrician | electrician | Project work, timesheets, expenses, mobile submissions | /electrician, /api/v2/electrician |
The enum source is app/src/Enum/UserType.php. Client-scoped membership roles are also represented by ClientMembershipRole values: clientAdmin, clientSupervisor, electrician, clientFinance, and payroll.
Core records
| Record | Purpose |
|---|---|
User | Authenticated person. Stores user type, managed/assigned clients, supervised projects, timesheets, expenses, and notifications. |
Client | Top-level customer account. Owns projects, rates, allowances, materials, cost codes, work conditions, expense categories, and client memberships. |
Project | Client work site or job. Owns timesheets, expenses, assigned electricians, client supervisors, project configuration, location data, and project allowance settings. |
Timesheet | Weekly employee timesheet. Owns time entries, allowance lines, calculation snapshots, change logs, approval sheet items, attachments, and risk assessment. |
TimeEntry | A single work entry with date/start/end, job/cost code, vehicle, allowance selections, material selections, work conditions, and optional expense link. |
Expense | Reimbursement or expense claim with attachments, category, project, user, status, and Xero submission data. |
TimesheetAllowanceLine | Calculated allowance result generated from ClientAllowance rules and timesheet/project data. |
TimesheetCalculation | Award calculation snapshot generated by AwardTimesheetCalculator. Contains detailed TimesheetCalculationLine rows. |
PayrollInvoice | Finance/payroll invoice aggregate with invoice items, project/client/user scope, status, and PDF/export support. |
The important architectural split
The platform deliberately separates these concepts:
- Manual selections from users, stored on time entries as
allowances_data,materials_data, andwork_conditions_data. - Client and project configuration, stored on client matrix tables and project JSON fields.
- Calculated allowance lines, stored in
timesheet_allowance_lines. - Award calculation snapshots, stored in
timesheet_calculationsandtimesheet_calculation_lines. - Invoice and payroll outputs, which can consume award snapshots but remain separate records and workflows.
That separation lets the system recalculate results after configuration changes without rewriting the original submitted timesheet input.