Timesheets and invoices
The timesheets layer is a real operational module, not a demonstration scaffold. It combines weekly time entry with the review, reporting, and invoicing workflows needed around it.
Two modules from one layer
The layer registers two PortalModuleContribution entries.
Timesheets
The Timesheets module owns routes under /timesheets and /admin/timesheets. Its menu covers:
- personal weekly time entry and timers;
- client review and reviewer configuration;
- supplier timesheets;
- internal approvals and approval settings;
- clients, projects, activities, rates, workspace settings, and reports.
Invoices
The Invoices module owns /timesheets/invoices and /admin/timesheets/invoices. Its menu separates received invoices, client invoice-viewer access, and organization-side sales invoices.
Keeping both contributions in one layer allows them to share timesheet, client, organization, approval, and tariff data while remaining distinct destinations in the shell.
Workflow capabilities
Time entry
Users can record time against projects and activities by week, use timers, update entries, and submit completed weeks.
Approvals
The feature supports internal approval rules and external client reviewers. Client access is scoped so reviewers see only the workspaces and supplier data they are allowed to review.
Supplier collaboration
Organizations can work with supplier timesheets and expose approval or invoice information to linked client organizations without granting broad portal access.
Administration and reporting
Organization administrators configure clients, projects, activities, team rates, capabilities, and workspace settings. Reports aggregate recorded time for operational and financial follow-up.
The current reporting screen can also include draft, submitted, and rejected weeks unless status is filtered through the API. Follow Report on recorded time before using totals for financial decisions.
Invoicing
The invoice workflow includes creation, numbering, line items, issue state, payment records, PDF generation, attachments, organization-specific sender details, email previews and delivery, reminders, and delivery status.
Dashboard integration
The layer contributes focused widgets rather than replacing the portal dashboard:
- the user’s current week;
- internal approvals needing attention;
- client approvals;
- supplier timesheets;
- sales invoices;
- received invoices.
The UI layer places these widgets alongside contributions from other installed features.
Permissions
The typed action set is read, create, update, submit, report, approve, and manage.
Owners and organization administrators receive every action. Members receive read, create, update, and submit; elevated workflows are checked by server handlers and capability-specific rules.
Data ownership
Feature-owned tables and enums live in the timesheets PostgreSQL schema. Cross-schema references connect them to core users and organizations. Timesheets owns an immutable migration stream that the kit applies after its declared dependencies.
Extension lessons
The layer is the best reference for:
- contributing more than one module from one feature;
- assembling route-aware module menus;
- exposing data to another organization safely;
- modeling multi-stage approvals;
- generating and delivering documents;
- splitting a large feature into domain components, composables, APIs, schemas, and shared types.
To use the feature rather than study its implementation, start with workspace setup, time entry, approvals, or invoicing.