Sami Bentaleb Software engineer & designerContact

Lens Lab Dashboard n., optical lab operations

Every figure on the lab’s dashboard says how old it is.

An optical lab’s two production systems write their reports as CSV files to a shared folder. The dashboard reads those files, keeps their history, and shows work in progress, output by station and hour, turnaround and breakage.

My part
Design and build
Built with
React Router, SQLite, ECharts
For
Lab managers

The problem

what the lab worked from

The lab kept its targets, its turnaround columns and its output per hour in a spreadsheet. Its two production systems already write reports, but none of those reports gives output per hour.

The dashboard’s overview: a banner saying the Shipped today file last changed 2 days ago, five figures that each name their file and when it changed, and a table of the oldest late jobs.
Plate I. The overview at 1440 pixels. Each figure names its file and how long ago that file changed, and one file has stopped. The data is made up.

Constraints

what it has to work within

It can only read. Its one way in is the CSV files the two systems leave in a shared folder, and it never writes back to either. The files can arrive half-copied, re-dated by a copy or in the wrong encoding, and some have no header row or no final line break.

LAB FOLDERCSV exportsland hereSETTLEwaits forthe copy tofinishREAD GUARDCut off?A column missing?A column named twice?Empty?Over half unreadable?Fell by over a third?HISTORYkept, datedA FIGUREWIP report ·changed4 min agoREFUSEDNothing written.The figures keepthe last goodread, and thesource ismarked.unchangedpast its limitA FIGUREWIP report ·stopped changingaccepted readstale fileLAB FOLDERCSV exports land hereSETTLEwaits for the copy to finishREAD GUARDCut off?A column missing?A column named twice?Empty?Over half unreadable?Fell by over a third?HISTORYkept, datedA FIGUREWIP report ·changed4 min agoREFUSEDNothing written.The figures keepthe last good read,and the sourceis marked.STALE FILEunchangedpast its limitA FIGUREWIP report ·stopped changingaccepted readstale file
Plate II. A diagram of the six checks a lab file passes before it becomes a figure.

What I built

the decisions, in order

  1. Every figure names its file

    Each number names the file it reads and how long ago that file changed. When a file goes past its limit, its figures turn amber, and the page banner and the wall screen name only the frozen files behind what they show.

    See Plate I and Plate V.

  2. A bad read changes nothing

    Six checks run before a read counts. They catch a cut-off copy, a missing or doubled column, an empty file, more than half the rows unreadable, and a fall of more than a third. A read that fails one writes nothing, the figures keep the last good read, and the file’s status gives the reason.

    See Plate II.

  3. Hours from snapshots

    No report gives output per hour. The dashboard compares each copy of the work-in-progress file with the one before and counts every tray that changed station, which fills the grid of stations by hour.

    See Plate III.

  4. Turnaround by client

    For each client, the share of jobs shipped on time for any limit from 1 to 20 days, or in the lab’s own buckets, beside service level against a 90% target.

    See Plate IV.

Jobs per hour by station: rows from 04:00 to 03:00, columns for eleven stations from Computing to Shipping, each cell red, yellow or green against the station’s target.
Plate III. Jobs per hour at each station from 04:00 to 03:00, coloured against the station’s target, at 1440 pixels. The data is made up.
Turnaround by client with “On time up to” set at 8 days: one bar per client, split by days from order to ship, with the share on time at the end of each bar.
Plate IV. Turnaround by client as “On time up to” moves from 8 days to 5, then to 12, then the same jobs in the lab’s buckets. A 28-second clip at 1440 pixels, with no sound. The data is made up.
The wall screen: a banner naming the frozen Shipped today file, five large figures with their source lines, and a bar chart of trays at each station.
Plate V. The wall screen at 1440 pixels: five figures, trays by station, and a banner naming the frozen file. The data is made up.
Architecture Portfolio n., the next entry