NCIA Timesheet Requirements
1. 1. Time Entry Management
When the user has finished a block of work, the NCIA Timesheet shall allow the user to create a time entry specifying a project, a task, a date, and a duration.
The foundational data-capture job the application exists to serve.
JTBD 1.1.
When the user recalls work done at an earlier date that was not logged at the time, the NCIA Timesheet shall allow the user to create a time entry by specifying a past date, a start time, and a duration.
Users frequently remember work after the fact and must not lose that time.
JTBD 1.2.
When the user's reporting period is due, the NCIA Timesheet shall display all time entries for the selected period in a single view so the user can verify completeness and accuracy before submission.
Users need a checkpoint before submitting to avoid incomplete records.
JTBD 1.3.
When the user identifies an error in a time entry, the NCIA Timesheet shall allow the user to edit the project, task, date, start time, or duration of the entry without requiring administrator intervention.
Self-service correction keeps records accurate without friction.
JTBD 1.4.
When the user deletes a time entry, the NCIA Timesheet shall remove the entry from the active record and write a deletion record to the audit log before the removal is committed.
Deletion must be auditable to preserve a complete history.
JTBD 1.4, ADR-006.
When the user creates, edits, or deletes a time entry, the NCIA Timesheet shall append an immutable record to the audit log containing the operation type, the document state before the change, the document state after the change, a UTC timestamp, and the identifier and display name of the active user profile.
The audit log must capture who changed what and when for full traceability.
JTBD 1.4a, ADR-006.
When the user opens the audit log view, the NCIA Timesheet shall display all time entry mutations in chronological order, showing for each record the operation type, the previous value, the new value, the timestamp, and the profile that performed the change.
Users need to review their own editing history to verify corrections.
JTBD 1.4a.
When the user selects an existing time entry and requests a duplicate, the NCIA Timesheet shall create a new draft entry pre-populated with the same project, task, and duration, which the user can adjust before saving.
Recurring tasks should not require re-entry of the same details from scratch.
JTBD 1.5.
When the user logs time for a working day, the NCIA Timesheet shall allow the user to record the location from which they are working for that date, selecting from OFFICE, HOME, or REMOTE. One location record shall be stored per profile per calendar date, independent of individual time entries.
Location tracking enables attendance pattern analysis and satisfies reporting requirements that distinguish office presence from home or remote working.
JTBD 1.6.
2. 2. Timer
When the user selects a project and task and activates the timer, the NCIA Timesheet shall begin tracking elapsed time and display the running duration in real time on the active view.
Real-time tracking eliminates end-of-day estimation.
JTBD 2.1.
While a timer is running, the NCIA Timesheet shall persist the timer start timestamp and accumulated duration to the local database at intervals of no more than 30 seconds so that elapsed time is recoverable if the application is closed or the device is restarted.
Timer data must not be lost on unexpected closure.
JTBD 2.1, ADR-007.
When the user switches to a different project or task while a timer is running, the NCIA Timesheet shall pause the current timer and start a new timer for the newly selected project and task in a single action.
Task-switching must not disrupt flow or require multiple manual steps.
JTBD 2.2.
When the user pauses the active timer, the NCIA Timesheet shall stop incrementing elapsed time, retain the accumulated duration, and display the paused state until the user explicitly resumes or stops the timer.
Break time must not be counted as productive time.
JTBD 2.4.
While a timer is running and the elapsed time since the last recorded user interaction exceeds a configurable inactivity threshold (default: 2 hours), the NCIA Timesheet shall display a notification prompting the user to confirm, adjust, or discard the accumulated time.
Forgotten timers inflate records and must be flagged proactively.
JTBD 2.3, ADR-007.
When the application starts and a running timer is found whose last heartbeat timestamp is older than the configured inactivity threshold, the NCIA Timesheet shall prompt the user to confirm, adjust, or discard the elapsed time before creating a time entry.
The timer must be trustworthy even after the application was closed unexpectedly.
JTBD 2.3, ADR-007.
When the user stops the active timer, the NCIA Timesheet shall create a draft time entry pre-populated with the elapsed duration, the project, and the task and present it to the user for review and confirmation before saving.
Users should be able to verify and annotate timer-generated entries before committing.
JTBD 2.1.
3. 3. Projects and Tasks
The NCIA Timesheet shall classify all projects as one of three types: FORMAL (defined by the organisation), PROVISIONAL (created by the user), or OVERHEAD (system-defined for non-project time), and shall display this classification visually in all project and task lists.
Users must clearly distinguish official codes from personal placeholders.
JTBD 3.6, ADR-008.
When the user is working on an initiative without a formal project code, the NCIA Timesheet shall allow the user to create a provisional project with a user-defined name and log time against it immediately.
Time must never be lost waiting for project administration to complete.
JTBD 3.1, ADR-008.
When a formal project code becomes available, the NCIA Timesheet shall allow the user to select one or more provisional projects and reassign all associated time entries to the formal project in a single operation, retaining the original provisional projects with a resolved timestamp for audit purposes.
Retroactive assignment must be atomic and auditable.
JTBD 3.2, ADR-008.
The NCIA Timesheet shall provide a set of pre-defined OVERHEAD codes including at minimum: meetings, administration, training, and leave, against which the user can log time that does not belong to a specific project.
A full working day must always be accountable, even for non-project activity.
JTBD 3.3, ADR-008.
When logging time that spans multiple projects, the NCIA Timesheet shall allow the user to split a single time block across multiple projects by specifying a percentage or an explicit duration for each project.
Effort shared across projects must be distributable without creating multiple manual entries.
JTBD 3.4.
The NCIA Timesheet shall provide a view listing all provisional projects that have time entries and have not yet been reassigned to a formal project, enabling the user to identify and resolve outstanding unallocated time.
Users need a systematic way to clear their allocation backlog.
JTBD 3.5.
When the user creates a custom task, the NCIA Timesheet shall allow the user to optionally map the task to a formal project so that reports can aggregate hours by the formal taxonomy while retaining the custom task detail in drill-down views.
Personal shortcuts must co-exist with the official reporting taxonomy.
JTBD 3.7, ADR-008.
4. 4. Allocations and Budget
When the user creates or edits a project or task, the NCIA Timesheet shall allow the user to record an estimated number of hours and, independently, an allocated number of hours representing the formally approved commitment.
Planned effort and approved budget are distinct values that evolve at different points in a project lifecycle.
JTBD 4.6, ADR-009.
The NCIA Timesheet shall display remaining hours for each project as allocated hours minus hours logged where allocated hours are set, or estimated hours minus hours logged where only estimated hours are set.
Remaining capacity must be visible without manual calculation.
JTBD 4.1, ADR-009.
When the hours logged against a project reach a configurable warning threshold (default: 80%) of the applicable ceiling, the NCIA Timesheet shall display an in-app notification alerting the user that the budget is approaching its limit.
Early warning prevents silent overruns.
JTBD 4.2, ADR-009.
If the hours logged against a project exceed the applicable allocated or estimated hours ceiling, the NCIA Timesheet shall display a persistent in-app notification indicating that the budget has been exceeded.
A exceeded budget must remain visible until acknowledged.
JTBD 4.2, ADR-009.
When the user requests a capacity status view, the NCIA Timesheet shall display hours consumed and hours remaining for each active project, filterable by day, week, month, or year.
Status must be expressible at the granularity needed for the conversation at hand.
JTBD 4.3, ADR-010.
The NCIA Timesheet shall provide a summary showing total remaining hours across all active project allocations so the user can assess overall availability before accepting new work.
Capacity decisions require a cross-project view, not just per-project data.
JTBD 4.4.
When a time entry causes logged hours to exceed the allocated or estimated ceiling for a project, the NCIA Timesheet shall allow the user to attach a note explaining the reason for the overrun, stored with the project record.
Overruns need context to be meaningful in retrospective reviews.
JTBD 4.5.
If the allocated hours for a project are set lower than the estimated hours, the NCIA Timesheet shall display a visual indicator on the project record alerting the user to the discrepancy between planning intent and approved budget.
A planning-vs-allocation mismatch should be surfaced, not silently accepted.
ADR-009.
5. 5. Leave and Attendance
The NCIA Timesheet shall allow the user to log absence against configurable leave types including at minimum: annual leave, sick leave, training leave, and public holiday.
Different leave types carry different entitlements and must be tracked separately.
JTBD 5.6.
The NCIA Timesheet shall display the user's remaining balance per leave type, calculated as the configured annual entitlement minus the days logged against that type in the current leave year.
Users must know their remaining entitlement before planning time off.
Superseded by TS-FR-032A — unit changed from days to hours, carry-forward added.
JTBD 5.1.
The NCIA Timesheet shall display total productive hours worked by the user in the current year alongside the configured annual required hours target, showing the difference as a surplus or deficit.
Annual compliance requires knowing how actual hours track against the target at all times.
JTBD 5.2.
When the user logs hours that cause the total for a working day to exceed the configured standard working day length, the NCIA Timesheet shall record the excess as overtime, separate from standard hours.
Overtime must be tracked distinctly for time-in-lieu and compensation purposes.
Superseded by TS-FR-034A — overtime threshold now derived from contracted hours profile (TS-FR-070, TS-FR-076).
JTBD 5.3.
When the user requests an attendance summary for a selected period, the NCIA Timesheet shall display total standard hours worked, overtime hours, leave taken by type, and public holidays within that period.
HR and management reviews require a consolidated attendance breakdown, not raw entries.
JTBD 5.4.
The NCIA Timesheet shall maintain a configurable list of public holidays per year and shall automatically reduce the required hours target for any period containing a public holiday by the duration of one standard working day per holiday.
Required hours targets must reflect the actual working calendar, not a theoretical total.
JTBD 5.5.
When the user requests an attendance summary for a selected period, the NCIA Timesheet shall include a count of working days by location type (OFFICE, HOME, REMOTE) for that period, derived from the work location records associated with the user's profile.
Location summaries enable the user to review compliance with office attendance policies and share location data with HR or management on request.
JTBD 1.6.
Time entries are always entered in hours and minutes (HH:MM). There is no decimal entry mode. When reporting and exporting, the NCIA Timesheet shall allow the user to choose between two display formats via a persistent profile-level preference: Clock format (HH:MM) or Decimal format (hours as a decimal number, e.g. 1.5 for 1h 30m). The selected format shall apply to all duration and total values on the Reports page, the Monthly Prescribed Hours Status Dashboard, and all CSV/Excel exports. Changing the format shall not alter any stored time entry values — only the display representation in reports and exports changes.
The NCIA EPM submission system accepts decimal hours only. Users who reason in hours-and-minutes need both representations available to verify accuracy before submission. Entry remains in HH:MM to avoid rounding confusion; the format choice applies only to output.
Excel template — parallel Jan / Jan-in-decimals sheets.
The NCIA Timesheet shall support the following absence types in addition to annual leave and sick leave already required by TS-FR-031: TDY (T), Special Leave (SL), Home Leave (HL), Unpaid Leave (UL), Compassionate Leave (CL), Family Leave (FL), and Special Administrative Absence (SAA). Each code shall be selectable when recording absence and shall be included in attendance summaries and exports.
NATO staff are entitled to a broader range of absence types than the basic annual/sick leave pair; all entitlement types must be recordable to produce accurate attendance records for HR and payroll.
Excel template — Codes for Absence legend.
For each calendar month, the Monthly Prescribed Hours Status Dashboard (TS-FR-072) shall display informational flex time values derived from the contracted hours profile (TS-FR-076): - Flex time gained: total hours worked in the month minus required hours for the month (where positive). - Flex time used: total hours recorded against the Flex Leave (FL) absence code in that month. Required hours for the month equals the number of working days (excluding official holidays for the user's duty location per TS-FR-075) multiplied by the standard day length derived from the contracted hours profile (TS-FR-070). The application shall not maintain a managed flex budget, shall not enforce a balance, and shall not prevent recording Flex Leave regardless of surplus. All values are informational.
Staff accrue informal flex credit when they consistently work beyond contracted hours. Displaying the monthly flex time gained and used on the monthly report gives the user and their line manager visibility of flex patterns before Flex Leave is requested or approved.
Excel template — Flex Time section (Plus, Minus, Brought Forward, Carry Forward).
The NCIA Timesheet shall derive the standard working day length as contracted hours per week (TS-FR-076) divided by standard workweek days (TS-FR-076). This derived value shall be used solely for the display of period totals, including required hours per week, month, and year; flex surplus or deficit (TS-FR-067); and the notional duration subtracted from required hours for each official holiday (TS-FR-036, TS-FR-072). It shall not enforce a cap on daily entries, shall not prevent time logging on any day, and shall not trigger automatic entries.
Displaying meaningful required hours and flex totals requires a reference day length. Deriving it from the contracted hours keeps the value consistent with the user's contract without requiring a separate per-day configuration field.
Excel template STATUS sheet — hours/day derived from contracted week.
The NCIA Timesheet shall allow the user to record an annual leave entitlement carried forward from the previous leave year, stored in hours per profile per leave year. The displayed leave balance shall be calculated as carried-forward hours plus current-year entitlement hours minus hours logged against annual leave in the current leave year.
Staff who did not exhaust their leave in the previous year may carry hours forward under their contract. Without capturing the carried-forward balance, the remaining entitlement displayed from the start of the leave year will be understated.
Excel template STATUS sheet — Enter Leave From last Year and Enter Leave From this Year fields.
On the weekly time entry view, the NCIA Timesheet shall display for the selected week: total working days in the week (Monday to Friday, i.e. 5 for a full week), and the number of those days that are official holidays for the user's duty location (TS-FR-075). These counts are informational. They shall not alter, lock, or pre-fill any time entry fields for days that coincide with official holidays.
Showing working day and holiday counts on the week view gives the user immediate context for the week's required hours without navigating to the annual status dashboard.
Excel template monthly header — No. of work days plus Official Holidays equals total.
When a date in the time entry view coincides with an official holiday in the calendar applicable to the user's duty location (TS-FR-075), the NCIA Timesheet shall display a visual indicator (icon or label) next to that date identifying it as an official holiday. Time entries may still be created, edited, and deleted on official holiday dates without restriction. No hours shall be automatically attributed to the day as a result of the official holiday status. Holiday dates are managed by the user in a dedicated Holiday Calendar management UI. Users can add dates one at a time (date picker, year selector) or import from a CSV file (date, name, location columns). Dates are stored per duty location per year. The service provides a lookup API used by the day indicator, week view counts, and required hours derivation.
Users must be able to see at a glance which days are official holidays without consulting an external calendar, while remaining free to log time on those days if they choose to work. A user-managed holiday calendar ensures dates can be kept up to date without application updates.
Excel template — OH marker auto-placed on matching dates.
The NCIA Timesheet shall display the user's remaining balance per leave type, calculated as the configured annual entitlement in hours minus the hours logged against that type in the current leave year, plus any hours carried forward from the previous leave year (TS-FR-071).
The original requirement uses days as the unit of measurement. All time in the application is tracked in hours. Leave entitlements, carry-forward balances, and logged absence are all stored and displayed in hours.
Excel template — amendment to TS-FR-032.
When the total hours logged by the user for a calendar day exceeds the standard day length derived from the contracted hours profile (contracted hours per week divided by workweek days, per TS-FR-070 and TS-FR-076), the NCIA Timesheet shall record and display the excess as overtime, separate from standard hours in all period totals and the monthly status dashboard (TS-FR-072). The overtime threshold is derived solely from the contracted hours profile and is not a separately configurable value. No entry shall be prevented or auto-split on account of the overtime threshold; the classification is for display purposes only.
The original requirement refers to a configured standard working day length as if it were an independent setting. Day length is derived from contracted hours divided by workweek days (TS-FR-076). The amendment aligns the overtime threshold with that derivation and confirms the classification is informational.
Excel template — amendment to TS-FR-034.
The NCIA Timesheet shall require each user profile to specify a duty location, selecting from at minimum: Braine-l'Alleud (Belgium), Brussels (Belgium), Mons (Belgium), The Hague (Netherlands). The selected duty location shall determine which official holiday calendar is applied to that profile for all views and calculations that reference official holidays, including the day indicator (TS-FR-074), the working day counts (TS-FR-073), required hours derivation (TS-FR-070), and the monthly status dashboard (TS-FR-072).
NCIA sites observe different national and local public holidays. Applying the wrong calendar produces incorrect required hours totals and misleading day indicators.
User requirement — official holiday calendar varies by NCIA site.
6. 6. Reporting and Analysis
When the user selects a period type (day, week, month, or year) and a period value, the NCIA Timesheet shall display hours logged per project and task for that period.
A single parameterised report covers all granularities without separate code paths.
JTBD 6.1, ADR-010.
The NCIA Timesheet shall display actual hours alongside estimated hours and allocated hours for each project on the period report without requiring the user to navigate to a separate view.
Budget health must be immediately visible when reviewing time data.
JTBD 6.1, ADR-009.
When the variance between actual hours and the applicable ceiling for a project exceeds a configurable threshold, the NCIA Timesheet shall notify the user with an in-app alert identifying the project and the variance amount.
Escalating variances must be raised proactively, not discovered in periodic reviews.
JTBD 6.2.
When the user requests a project status report, the NCIA Timesheet shall generate a CSV file containing one row per project with columns for project name, estimated hours, allocated hours, actual hours logged, and variance.
Stakeholders need an exportable, structured comparison for review and planning.
JTBD 6.3.
The NCIA Timesheet shall retain actual-versus-planned data for all past periods and make it accessible in a historical view so the user can reference it when estimating future work.
Past performance data improves the accuracy of future estimates.
JTBD 6.5.
When the user updates the estimated or allocated hours for a project, the NCIA Timesheet shall record the previous and new values in the project history and recalculate all variance figures from the point of the update.
Scope changes require a new baseline; comparisons must remain meaningful after the change.
JTBD 6.6.
When the user selects multiple periods, the NCIA Timesheet shall aggregate the time data across all selected periods into a single consolidated view showing totals per project and a period-by-period breakdown.
Long-range reviews require aggregation across multiple reporting periods.
JTBD 7.6, ADR-010.
The NCIA Timesheet shall provide an annual status dashboard showing, for each calendar month of the selected year, the following columns: required hours (working days in the month, excluding official holidays for the user's duty location per TS-FR-075, multiplied by the standard day length derived from the contracted hours profile per TS-FR-070); hours worked (sum of all productive non-absence hours logged in that month); percentage (hours worked divided by required hours); surplus or deficit (hours worked minus required hours in decimal hours). The dashboard shall also display per month: standard hours total, overtime hours, flex leave taken, annual leave taken, sick leave taken, and other absence. The dashboard shall show an annual totals row beneath the twelve monthly rows. All values are informational and derived from logged entries. The application shall not prevent the user from logging entries that would produce unexpected totals.
A month-by-month view of hours compliance is essential for annual reviews and for identifying months where a deficit must be recovered.
Excel template STATUS sheet — Prescribed Working Hours table.
7. 7. Export and Import
When the NCIA Timesheet generates any CSV export file, it shall encode the file as UTF-8 with a byte-order mark, format all dates as ISO 8601 (YYYY-MM-DD), and include column headers in English.
These settings ensure the file opens correctly in Microsoft Excel on Windows without any manual configuration.
ADR-004.
When the user selects a period and requests a time entries export, the NCIA Timesheet shall generate a CSV file containing one row per time entry for the selected period with all entry fields included.
Raw entry exports support both personal review and submission to external systems.
JTBD 7.1, ADR-004.
When the user requests a period summary export, the NCIA Timesheet shall generate a CSV file aggregating total hours per project per day for the selected period, suitable for direct entry into an HR or payroll system.
Payroll systems require aggregated daily totals, not individual time entries.
JTBD 7.1, 7.3.
When the user applies a project or task filter before exporting, the NCIA Timesheet shall restrict the exported records to entries matching that filter.
Client-facing reports must contain only data relevant to that client's project.
JTBD 7.4.
When the user selects a period, the NCIA Timesheet shall display a chart showing time distribution by project and task for that period alongside the tabular data.
Visual breakdowns reveal allocation patterns that are not immediately apparent from raw tables.
JTBD 7.5.
When the user selects a CSV file for import, the NCIA Timesheet shall parse the file, display a preview of all records to be imported, report any rows that cannot be imported with the reason for rejection, and require explicit user confirmation before committing any changes.
Imports are destructive operations that must give the user full visibility and control before data is written.
ADR-004.
The NCIA Timesheet shall provide a full-backup export option that produces a set of CSV files covering all data collections: time entries, projects, allocations, leave records, user profiles, and the audit log.
Users must be able to back up and transfer their complete dataset without data loss.
ADR-004.
8. 8. Desktop Application Shell
The NCIA Timesheet shall run as a native desktop application on Windows 10 version 1803 or later and Windows 11, displaying in a dedicated native window without a browser address bar, navigation controls, or tab strip.
A browser-like appearance erodes trust in the application as a professional tool and increases the risk of the window being lost among browser tabs.
JTBD 8.1, ADR-011.
The NCIA Timesheet application window shall support standard Windows window operations: minimise to taskbar, maximise to full screen, restore to previous size and position, free resize by dragging edges, and close.
Standard OS window behaviour is expected by all Windows users.
JTBD 8.3, 8.5, ADR-011.
When the user activates the keep-on-top control, the NCIA Timesheet window shall remain in front of all other application windows until the user explicitly deactivates the control.
Users tracking active time need the timer visible without switching applications. This capability is only achievable via a native desktop shell and cannot be provided by a browser-based HTML file.
JTBD 8.2, ADR-011.
When the user restores the NCIA Timesheet window after minimising it, the application shall restore the window to the same screen position and dimensions it occupied before minimisation.
Restoring a window to an unexpected position or size disrupts the user's screen layout.
JTBD 8.4.
The NCIA Timesheet shall be distributable as a single portable executable file that runs on Windows without requiring installation, an installer package, or administrator privileges.
The application must reach users who cannot or should not install software through formal IT channels.
JTBD 8.6, ADR-011.
The NCIA Timesheet shall provide a quick-add entry mode accessible from any view, allowing the user to select a project and task and enter a duration in a single compact form without navigating away from the current view.
Low-friction entry encourages logging time at the moment it occurs rather than deferring to end-of-day reconstruction.
JTBD 8.7.
When the user wants to review or edit multiple entries, the NCIA Timesheet shall provide a day view and a week view that display all time entries for the selected period in an editable grid. The week view shall present seven columns (Monday through Sunday) for the selected ISO week, one row per project-and-task combination, with an editable decimal-hours cell at each day intersection. A daily subtotal row shall appear beneath all project rows showing the sum of hours logged per day. A weekly subtotal cell shall appear at the right of the daily subtotal row showing the sum across all seven days. The user may add a new project-and-task row at any time during the week session. Saving any cell shall persist the change immediately without requiring a separate submit action. Official holiday dates shall be visually indicated on their column header per TS-FR-074 and working-day and holiday counts shall be shown per TS-FR-073.
A structured 7-column grid with per-project rows and daily/weekly subtotals is the standard spreadsheet mental model for weekly timesheet entry and is far more efficient than individual entry forms for recurring work patterns.
JTBD 8.7.
When the user opens a week view that contains no time entries, the NCIA Timesheet shall offer the option to copy all projects and tasks from the immediately preceding week or from a user-specified week number.
Recurring work patterns should not require re-selection of the same projects and tasks each week.
JTBD 8.8.
When the user copies projects and tasks from a previous week, the NCIA Timesheet shall allow the user to choose between copying the structure only with zero hours for all entries, or copying the full entries inclusive of the hours recorded in the source week.
Both use cases are valid: using a past week as a blank template versus replicating a typical week exactly.
JTBD 8.9.
The NCIA Timesheet shall provide a dedicated Weekly Time Entry screen accessible from the main navigation as "Weekly" under the Time Entries section. The screen shall default to the ISO week containing today's date and shall allow the user to navigate to any other week by week picker or previous/next arrows. The grid shall display seven columns (Mon–Sun) with the calendar date beneath each day name. Each row represents one project-and-task combination; the user may add a new row by selecting a project and task from dropdown controls in an empty row at the bottom of the grid. Each intersection cell accepts a decimal hours value (e.g. 7.6). A sticky "Day total" row at the bottom of the grid shall show the sum of all project hours for each day column. A "Week total" cell at the far right of the day total row shall show the grand total for the week. The user may delete a project row if all its hours are zero. Official holidays in the user's duty-location calendar shall be indicated on the column header with an icon per TS-FR-074, and the working-day and holiday count summary from TS-FR-073 shall appear above the grid. All edits shall be auto-saved on cell blur.
The grid-per-week mental model matches the Excel timesheet template that users already understand and is substantially faster for recurring weekly patterns than adding individual entries one at a time.
Pencil design section 19 screen 4 — WEEKLY VIEW.
When the user selects "Week" as the period type on the Reports screen and chooses an ISO week, the NCIA Timesheet shall render a read-only weekly summary table showing: one row per project-and-task combination that has at least one logged hour in the selected week; seven day columns (Mon–Sun) with the calendar date beneath the day name; each cell showing the decimal hours logged to that project on that day; a "Week total" column showing the row sum; a "Day total" row at the bottom of the table summing all project hours per day; a "Week grand total" cell at the intersection of the day total row and the week total column. Below the project rows the table shall show a separate leave-and-absence section with one row per leave type (annual leave, sick leave, overtime, flex leave taken, TDY, other absence) for any type that has a non-zero value in the selected week. The full table shall be exportable to CSV via the existing export mechanism (TS-FR-044).
A day-by-day breakdown of a single week in the reports screen lets the user cross-check their weekly grid input against the official record before submission and is more readable than a flat list of entries for a week.
Pencil design section 19 screen 7 — REPORTS; TS-FR-037 Week period type.
The NCIA Timesheet shall organise its primary navigation into five top-level sections as follows:
- Dashboard — the summary landing page (TS-FR-003).
- Time Entries — contains: List view (day view and week list), Weekly Grid (TS-FR-077, TS-FR-057), and Leave & Attendance (TS-FR-031 to TS-FR-036, TS-FR-063). Leave logging is a time-valued activity and shall not require navigating outside the time entry area.
- Projects — contains: Project Overview and Overhead Codes (TS-FR-016 to TS-FR-022), and Project Allocations (TS-FR-023 to TS-FR-030). Allocations are a property of projects and shall be accessible from within the Projects section.
- Reports — contains: Period Report (TS-FR-037), Weekly Report (TS-FR-078), Multi-Period Consolidation (TS-FR-043), Monthly Prescribed Hours Status Dashboard (TS-FR-072), Audit Log (TS-FR-006 to TS-FR-007), and Export & Import (TS-FR-044 to TS-FR-050). Export is a reporting output and the audit log is a reporting view; both shall be accessible from within the Reports section.
- Settings — contains: User Profile settings (TS-FR-060 to TS-FR-076) and Official Holiday Calendar management (TS-FR-075). The holiday calendar is a configuration input and shall be managed in Settings, not as a standalone top-level page.
The application shall not expose /allocations, /leave, /holiday-calendar, /status-dashboard, /audit-log, or /export as independent top-level navigation items. These destinations shall be reachable only through their parent section described above.
Grouping related functionality under five coherent sections reduces navigation depth, aligns with the user's mental model (time = time entries; projects + budgets = projects; all outputs = reports; configuration = settings), and eliminates the need for eleven top-level nav items.
UX review 2026-03-26.
9. 9. User Profiles
The NCIA Timesheet shall allow the user to create one or more named local user profiles without requiring a password, a network connection, or an external account.
The application is a personal productivity tool; authentication adds friction with no meaningful security benefit in this deployment model.
ADR-005.
The NCIA Timesheet shall display the active user profile at all times in the application shell and shall allow the user to switch to a different profile with a single action.
Users on a shared machine must be able to identify and switch the active profile without navigating into settings.
ADR-005.
When the user creates, edits, or deletes a time entry, the NCIA Timesheet shall tag the resulting audit log record with the identifier and display name of the active user profile at the time of the operation.
Audit records must be attributable to a named person even in the absence of authentication.
ADR-005, ADR-006.
The NCIA Timesheet shall allow each user profile to store the following submission metadata fields: Supervisor name, Sponsor name, and Area. These fields shall be pre-populated on any exported monthly timesheet report and shall be editable within the profile settings without affecting time entry data.
Contractor timesheet submissions require supervisor, sponsor, and area to be present on each monthly submission. Storing them in the profile avoids re-entry every month and reduces the risk of inconsistency between submissions.
Excel template — monthly header fields (NAME, SUPERVISOR, SPONSOR, AREA).
The NCIA Timesheet shall allow each user profile to be classified with a contract or employment type, selecting from at minimum: IWC (Individual Wage Contractor), PBC (Performance-Based Contractor), NIC (NATO International Civilian). The selected type shall be stored in the profile and displayed on exported timesheet reports.
Different employment categories carry different leave entitlements, required hours targets, and submission obligations. The application must store the employment type to apply the correct rules per profile and to label exported reports accurately.
MIL (Military) staff are explicitly out of scope at this stage. The type field is designed to accommodate additional values in future without requiring a schema change.
Excel template (IWC/PBC contractor scope); user requirement to extend to NIC.
The NCIA Timesheet shall allow each user profile to store the following contract work schedule fields: contracted hours per week (the total number of hours per week specified in the user's contract, default 38) and standard workweek days (the number of working days per week, default 5). Both fields shall be editable in profile settings at any time. Changes take effect immediately on all display totals but do not alter any existing time entries. These fields are informational. The application shall use them solely to derive the standard day length (TS-FR-070) for the purpose of displaying period totals (required hours, overtime, flex surplus/deficit). The application shall not enforce contracted hours, shall not prevent the user from logging more or fewer hours than contracted on any day, and shall not auto-fill or auto-deduct entries.
Displaying meaningful required hours, overtime, and flex totals requires a reference workweek. A 38-hour week over 5 days yields 7.6 hours per day — this is the standard NCIA contractor schedule. Making both values configurable covers staff on different contracts without hard-coding any assumption.
Excel template STATUS sheet — hours/day times days/week.
10. 10. Non-Functional Requirements
The NCIA Timesheet shall operate fully without a network connection. No feature shall require internet access or contact any external server at runtime.
The application is intended for use in environments where network access may be restricted or unavailable.
C4 Context Diagram, ADR-002.
The NCIA Timesheet shall retain all user data across application restarts and device reboots without requiring any manual save action from the user.
Implicit persistence is a baseline expectation for any desktop application.
ADR-002, ADR-007.
The NCIA Timesheet shall store all application data in the operating system user data directory independent of the location of the executable file, so that moving or renaming the executable does not result in data loss or inaccessibility.
Portable executables are frequently moved by users; data tied to the executable path is a reliability failure.
ADR-011.
The NCIA Timesheet shall run on Windows 10 version 1803 or later and Windows 11 without requiring the user or an administrator to run an installer, register the application with the operating system, or modify system configuration.
The distribution model requires the application to be usable immediately on any compatible Windows machine.
ADR-011, JTBD 8.6.
All CSV files exported by the NCIA Timesheet shall open correctly in Microsoft Excel on Windows without requiring the user to perform an import wizard, adjust encoding settings, or apply any manual transformation.
Excel is the universal tool available to target users; any friction in opening exports defeats the purpose of exporting.
ADR-004.
When the NCIA Timesheet is updated to a version with a changed local database schema, the application shall automatically migrate all existing data to the new schema on first launch without data loss and without requiring user action.
Local-first applications must manage schema evolution transparently; users must never face a broken application after an update.
ADR-002.