Skip to content

Case study · 2025

Industrial Productivity Tracking

Factory-floor shift and productivity tracking running in kiosk mode on 2011 iPads, with an offline queue and management dashboards. Replaced paper logs across 6 production sections.

Touch screen for selecting a production section
fig. 01 - Section selection - touch interface for the 6 production areas

Context

A furniture factory needed to track shift hours, work orders and productivity across 6 production sections. Records were kept on paper - error-prone and always lagging behind the factory floor.

The tablets available were 2011 iPad 2 devices, locked to Safari 9.3.5.

Problem

Reading delays, errors and per-shift productivity depended on paper and operational memory. Management had no way to see who was active, where the bottlenecks were, or the real cost per section - without waiting for the end of the day.

Constraints

  • Safari 9.3.5 (2011): no modern frameworks, no transpilers - pure ES5 JavaScript.
  • The factory network drops: registrations must survive outages of up to 30 minutes.
  • The 3 requests/second limit of the Notion API, the chosen data backend.

Decisions

  • Vanilla ES5 JS with no build step: compatibility with the factory’s real hardware was worth more than any framework convenience.
  • Offline queue in localStorage with exponential backoff (5s → 10min) and 30-minute item expiration - workers keep registering even with the network down.
  • Notion as the database (8 databases), with a dynamic property alias system that survives workspace migrations without code changes.
  • Migration from cloud hosting (GitHub Pages + Render) to an LXC container on the local Proxmox server: eliminated cold starts, reduced latency and kept data on the factory network - with zero downtime.

Technical approach

Dedicated touch interfaces per section (finishing, upholstery, sewing, painting, wood preparation, assembly), with automatic break deduction. Node.js 18 + Express 5 backend behind nginx, scheduled tasks with node-cron, and remote administration over Tailscale.

The management dashboard aggregates the data and shows active workers in real time, performance analytics and cost tracking with Chart.js.

Outcome

Production records went from paper to 100% digital across the 6 sections. Management now checks active workers, productivity and costs in real time, and finds bottlenecks with far less friction.

Shift time registration form
fig. 02 - Time registration - touch-optimised for Safari 9
Management dashboard with active workers and productivity metrics
fig. 03 - Management dashboard - active workers, performance and costs

Known limitations

  • Notion’s rate limit (3 req/s) caps practical concurrency at ~20–30 tablets.
  • Dashboard authentication is client-side only (server-side sessions planned).
  • No HTTPS on the local network - a trusted environment is assumed.

Learnings

  • Hard constraints simplify decisions: with 2011 hardware, the most compatible solution was also the simplest to maintain.
  • On a factory floor, offline-first is not an extra - it is the core requirement. The backoff queue is what made the system trustworthy.
Industrial Productivity Tracking · Francisco Coelho