Skip to content

Latest commit

 

History

History
218 lines (181 loc) · 13.6 KB

File metadata and controls

218 lines (181 loc) · 13.6 KB

OpenClockwork Features

OpenClockwork is a mobile-first, self-hostable time-and-attendance system for small and mid-sized organisations. Its domain model focuses on German working-time workflows while keeping deployment and integration under the operator's control.

Project status: Stable. Published versions follow semantic versioning and include release notes and documented upgrade steps. The capabilities below are implemented and covered by automated tests.

Mobile PWA

The responsive web application can be installed as a Progressive Web App and provides role-aware navigation for employees, managers, and HR administrators.

Mobile dashboard Mobile booking view Mobile annual calendar

Mobile request overview Mobile vacation request form

Employee Experience

Capability What it provides
Personal dashboard Vacation balance, overtime account, and detected core-time violations at a glance
Clock in and out PWA-based time booking with optional GPS coordinates and recent-booking history
Direct daily-block booking With per-employee HR permission, book the contractual daily target as one completed, directly approved block
Core-time violation details Booking-page list with violation date, affected core-time window, violation type, boundary, and uncovered minutes
Project and service-order booking Book time to assigned active projects; active service orders become the required booking level
Activity per booking Record a customer-facing description of the work performed
Retroactive booking changes Change a booking target or activity after the fact, including approved entries
Entry splitting Split a closed entry at a chosen time, for example when switching projects mid-day
Retroactive range booking Assign a past interval to a project; the API validates complete clocked-time coverage and splits existing entries as needed
Automatic break accounting Statutory break deduction after six and nine hours
Time accounts Calculated target hours, actual hours, overtime, and opening balances
Annual calendar Year overview for vacation, home office, special leave, sickness, training, and flextime days
Requests Vacation, home-office, special-leave, and time-adjustment requests
Half-day vacation First-day and last-day half-day selection with calculated leave usage
Vacation balance preview Available, approved, and submitted leave shown while creating a request
Request lifecycle View requests, workflow state, decisions, and cancellation state
Substitute inbox Accept or decline requests when named as a substitute
Absence records Record sickness, training, and flextime days
Multilingual interface German and English UI with a persistent language switcher on the login screen and in the application header
Role-aware mobile navigation Bottom navigation plus an overflow menu that keeps manager and HR areas, including approval inboxes, reachable on phones
Theme preference Light, dark, or operating-system theme

Languages and Localisation

OpenClockwork ships with a German and English user interface across the core employee, manager, and HR workflows. The selected language is stored in the browser.

  • Central translation catalogue shared by navigation, pages, dialogs, actions, validation hints, and empty states
  • Localised workflow states, request and absence types, roles, time models, and core-time violation labels
  • Locale-aware date and date-time formatting
  • Correct German labels for technical workflow values such as Approved, Pending, PendingManager, and TimeApproval
  • Extensible catalogue architecture so another language can be added and maintained in one central location

Approval Workflows

OpenClockwork models approvals as explicit workflow states instead of a single approved/rejected flag.

Employee submits
  -> optional substitute confirmation
  -> manager approval
  -> optional HR confirmation
  -> approved
  • Manager and HR approval inboxes, reachable from desktop and mobile navigation
  • Substitute acceptance and rejection
  • Manager approval, rejection, and return-for-correction
  • HR confirmation and rejection
  • Bulk approval and rejection
  • Request cancellation
  • Audit trail of workflow events
  • Special approval flag for bookings and time adjustments outside configured working frames
  • Direct daily blocks bypass the request workflow only when HR has enabled the option for that employee; conflicting or out-of-policy blocks are rejected
  • Request attachments with local-filesystem or Azure Blob storage adapters

HR and Administration

Capability What it provides
Employee management Create, edit, deactivate, reactivate, and reset employee passwords
Daily-block permission Enable or disable direct daily-target block booking for each employee
Roles Employee, Manager, and HRAdmin access levels
Time models Full-time, part-time, trust-based working time, and flextime
Work schedules Configurable working days, permitted booking frames, and multiple core-time windows
Schedule assignment Assign schedules to individual employees or bulk-assign by time model
Project management Projects structured by service orders, with active/inactive lifecycles and deletion protection once time is booked
Project assignment matrix Employee-by-project matrix controlling who may book time to each project
Plan-versus-actual tracking Plan hours per project and service order, with progress indicators and overbooking warnings
Customer activity reports Per-project report of dates, employees, service orders, hours, and activities, including period filters and CSV export
Working-time reports HR-only, project-independent overview of start, end, break, gross, and net time with CSV export
Leave allowances Base leave, carry-over, adjustments, expiry dates, and adjustment reasons
German public holidays Configurable German-state holiday calendars used in vacation calculations
Absence administration Record and review sickness, training, and flextime entries for employees
Approval operations Role-aware manager and HR inboxes with bulk actions and workflow history

Project Management and Reporting

Projects combine employee assignments, service orders, planned hours, actual bookings, and customer-facing activity reports in one administrative workflow.

Project overview with plan-versus-actual progress and service orders

  • Create and maintain projects with project numbers, titles, and descriptions
  • Assign employees and control which projects they may book time to
  • Structure projects into service orders with separate active/inactive states
  • Maintain PLAN hours and compare them with booked IST hours at project and service-order level
  • Review progress indicators and identify approaching or exceeded budgets
  • Edit, deactivate, or delete service orders, with protection for referenced bookings
  • Open detailed project evaluations and export customer activity reports

Project-independent working-time reporting is always available to HR administrators alongside project evaluations. It includes closed, non-rejected bookings regardless of whether the project feature is used. Its CSV exports contain employee names and working-time data and must therefore be handled as personal data under the organisation's retention and access policies.

Compliance-Oriented Domain Logic

OpenClockwork makes working-time rules visible in code and testable as domain logic. It is not a substitute for legal advice or organisation-specific policy configuration.

  • Statutory break calculation
  • Target-versus-actual hour accounting, including daily targets derived from weekly hours and the configured number of working days
  • Configurable working days and core-time windows
  • Direct daily blocks validated against public holidays, absences, active requests, existing time entries, and permitted working-time frames
  • Detection of core-time violations
  • Special approval handling for out-of-frame bookings
  • Vacation calculation using working days and public holidays
  • Carry-over expiry processing
  • Multi-stage approval workflows

Security and Data Handling

  • JWT access and refresh authentication for interactive users
  • Role-based endpoint protection for employee, manager, and HR operations
  • Dedicated API-key protection for machine-to-machine ERP exports
  • Authenticated Socket.IO connections
  • Password hashing and refresh-token rotation
  • Request workflow history for approval decisions
  • Pluggable attachment storage using the local filesystem or Azure Blob Storage

OpenClockwork provides technical controls, but operators remain responsible for their deployment security, retention rules, access policies, and legal compliance.

API and Integrations

The NestJS REST API is documented through the generated OpenAPI specification committed at apps/api/openapi.json.

  • Paginated ERP time-entry export with project, service-order, and activity references
  • Authenticated endpoints for reading the current employee's daily-block option and creating a directly approved daily block
  • Socket.IO events for real-time client refreshes
  • Health endpoint for deployment checks
  • Generated TypeScript client types for the web application
  • Language-neutral API values translated centrally by the web application

Self-Hosting and Operations

  • Dockerfiles for API and web applications
  • Docker Compose configurations for local development and self-hosting
  • PostgreSQL with versioned Prisma migrations
  • Seed data for local evaluation
  • Azure Container Apps reference infrastructure using Bicep
  • Azure Key Vault and managed-identity integration
  • Azure Blob Storage support for attachments
  • Nx workspace with lint, type-check, build, unit, integration, and browser test targets

Release and Upgrade Policy

  • Stable releases are published through GitHub Releases with versioned API and web container images.
  • Database changes are delivered as forward-only Prisma migrations and tested against an existing database before merge.
  • Production deployments must be backed up and upgraded according to UPGRADING.md; destructive reset commands are never part of an upgrade.
  • Operators remain responsible for validating organisation-specific labour agreements, payroll integrations, security requirements, backups, monitoring, and operating procedures.

Explore the Project