Selected work

Case study 01 · Enterprise workforce scheduling

Engineering a workforce calendar where every date had to be right.

I set the technical direction for MyTime+, unifying multiple service contracts, scheduling rules, permissions, and time zone behaviour behind one reliable workforce calendar.

Role
Senior Full Stack Engineer
Ownership
Event model, data loading, privacy, and release quality
Product surface
Day, week, month, and team calendars
Stack
React, TypeScript, React Query, Bryntum, Vitest

01 · The system behind the screen

The calendar was the interface. The real work was making every system agree.
Product mandate

Employees and managers needed one trustworthy view of shifts, overtime, absences, days off, and categories across day, week, month, and team views. Those records came from different services, followed different date rules, and exposed different information by role.

A calendar could look correct while showing the wrong day, revealing confidential details, or serving stale data. Reliability depended on resolving those rules before anything reached the interface.

My ownership

I owned the technical direction before implementation began. I defined the application event model, loading and refresh behaviour, view rules, permission boundaries, and verification strategy that governed how service data entered the calendar.

I aligned Product, Design, service teams, and vendor support around those boundaries before implementation, giving the team shared decisions to build and validate against.

02 · What made it difficult

Every simple calendar view depended on four system guarantees.

  1. 01

    Different contracts had to preserve one meaning

    Shifts, overtime, absences, days off, and categories arrived with different identifiers, structures, and business rules.

  2. 02

    A date was not always a timestamp

    Timed work followed the user time zone. Date only records had to remain on the calendar day the business intended.

  3. 03

    Privacy could not depend on the view

    Confidential absence details had to remain protected across day, week, month, and team rendering paths.

  4. 04

    Freshness could not cost continuity

    Schedule changes needed to appear promptly without duplicate range requests, blocking loaders, or navigation that discarded useful data.

03 · System design

Raw service data never reached the calendar.

I introduced an application event model between the service APIs and Bryntum. It normalised business meaning before rendering, gave product rules one testable boundary, and kept vendor behaviour isolated from the rest of the application.

  1. 01Services

    Resolve source contracts

    Schedules, categories, visible ranges, permissions, and time zones entered through explicit service boundaries.

  2. 02Domain

    Normalise product meaning

    Records became stable events with preserved dates, converted times, categories, and privacy metadata.

  3. 03State

    Preserve state continuity

    Range reuse, persisted context, debounced navigation, and background refreshes kept the experience responsive.

  4. 04Experience

    Adapt each view

    Day, week, month, and team views received explicit behaviour instead of scattered conditions.

04 · Technical direction

Three decisions protected correctness, privacy, and continuity.

  1. Decision 01

    Own the event model

    What changed

    Service changes were absorbed at one boundary, product rules became independently testable, and Bryntum remained a rendering detail.

    Constraint

    Raw API records would couple service contracts, product rules, and vendor configuration across every view.

    Technical direction

    I introduced a typed transformation boundary that converted each service response into a stable application event model. Only approved fields and product semantics were allowed to reach Bryntum.

    Tradeoff accepted

    The boundary introduced one translation layer to maintain, but contained service contract changes and kept calendar library details out of product logic.

  2. Decision 02

    Separate business dates from timestamps

    What changed

    Business dates stayed fixed across time zones and confidential absence details remained masked in all four views.

    Constraint

    Normal time zone conversion could move a day off to the wrong date. View specific rendering could also expose confidential absence details.

    Technical direction

    I separated calendar day records from timestamped work, converted only values that represented instants, and carried privacy metadata through the shared event model.

    Tradeoff accepted

    Separate date paths added model complexity, but removed the risk of silent date movement and inconsistent privacy behaviour.

  3. Decision 03

    Cache for continuity, refresh for truth

    What changed

    The approach reduced redundant API requests by approximately 80 percent while keeping navigation responsive and schedules current.

    Constraint

    Repeated range requests slowed navigation, while blocking refreshes interrupted users who already had useful schedule data.

    Technical direction

    I keyed data by visible range, reused cached results, debounced rapid navigation, and separated initial loading from background refresh before committing updates through one controlled path.

    Tradeoff accepted

    Cached ranges could briefly trail the service, so background refresh and explicit reload paths balanced continuity with freshness.

05 · From decision to production

Three stages connected the model to production evidence.

  1. 01Govern the boundaryApplication event model, date semantics, and privacy rules
  2. 02Verify risky behaviourA test matrix for time zones, loading, permissions, and failures
  3. 03Harden the releaseRelease criteria, production validation, and targeted fixes

Production reliability

Failure isolation

I isolated service failures with guarded fallbacks and a calendar error boundary so one dependency could not take down the surrounding product experience.

State continuity

Selected date, view context, and useful events remained intact across normal lifecycle changes, reducing unnecessary restarts and reloads.

Release and support

I coordinated release checks, vendor follow ups, post release validation, and targeted production fixes until the capability was stable.

Verification strategy

Domain behaviour

Automated tests covered event types, stable identifiers, categories, overtime, absences, days off, privacy metadata, and safe fallbacks.

Time and loading boundaries

Tests exercised time zone conversion, business dates, cache reuse, forced refresh, empty ranges, service failures, and unmounting.

Critical flow coverage

More than 90 percent automated coverage across critical flows, reviewed for correctness, performance, privacy, and edge cases.

06 · Verified outcomes

Correct dates. Protected data. Responsive navigation. One dependable system.

≈80%
fewer redundant range requests in pre-cache versus cached navigation tests
90%+
coverage across the critical calendar behaviour suite
Correct dates
business dates remained accurate across time zones
Protected privacy
confidential absence details remained consistently masked

The event model became the product boundary.

Services could change and calendar views could vary, while date, privacy, and loading rules still had one governed place.

Next case studyMaking complex data imports trustworthy