Skip to case study

Client Project 2026

ARCTIC

ARCTIC connects customer requests and technician assignment to work orders, equipment, and billing. It starts from requirements gathered from a real company. The client project did not proceed further; the portfolio implementation is complete for its current scope.

Make job progression explicit. A shared transition map permits the documented job states in order. Completed and cancelled jobs are terminal through the ordinary status flow, so a normal edit cannot silently reopen work. The stricter flow limits ad hoc status edits in exchange for a predictable lifecycle. Related source See work-order details

TypeScriptReactExpressPrismaPostgreSQL

Opens sign-in. Explore demo workspace reaches the public synthetic dashboard in the October 21, 2026 check. The gallery below retains its recorded local captures.

System shape

How the pieces connect.

The interface supports branch workflows; the API applies organization and branch checks before data access.

Application request path

  1. React + TypeScript
  2. Express API + scope checks
  3. Prisma
  4. PostgreSQL

Roles and scope

Who can do what.

These are the application's two account roles. A technician is an assignee, not a third sign-in role; technician and booking must share a branch.

ADMIN
Organization-wide view across branches.
BRANCH_LEADER
Reads and writes stay within the user's assigned branch.

Product flow

What it supports

  1. Staff record service requests for a customer, site, branch, and unit.
  2. A job is scheduled and assigned to a technician in its branch.
  3. The work order records inspection outcomes before completion.
  4. An invoice follows completed work; collections and receipts are recorded separately.
  5. Managers review jobs, stock, maintenance, and balances by branch.

Engineering choices

Further decisions

Enforce organization and branch boundaries

Server-side queries and writes check the organization, branch, and related records. The workflow does not rely on the interface alone to hide another branch’s data. This adds scope validation to each operation in exchange for enforcing the boundary on the server.

Related source

Keep payment history auditable

Amounts use fixed-precision decimal fields. Payment moves through unpaid, partial, and paid states; a refund requires its own recorded workflow rather than resetting a paid invoice. Separate records add bookkeeping but preserve how a balance changes.

See invoices and payments

Selected source

Follow the claims into code.

Focused implementation and test links for technical review.

Branch access rules

Server helpers used for organization, branch, unit, customer, and technician scope.

Published verification · October 6, 2026

Verification and limits

The published record reports 29 unit tests passed, 12 database tests skipped in that mode, and 41 integration tests passed against an isolated PostgreSQL database. It also documents the production migration and smoke checks; no production user account was used.

Local synthetic captures from October 8, 2026 show the dashboard, a completed work-order detail, and invoices. These are separate from the hosted application's current access state.

  • The client project did not proceed further; no completed client delivery or production adoption is claimed.
  • The gallery uses synthetic local demo records.
Open verification record