Healthcare · No-code to code migration
Migrating a hospital RFID system from Bubble to a sovereign stack, without a single service interruption

ProtectUs manages hospital linen through RFID: every uniform, sheet or gown is tracked across its entire lifecycle - distribution from a connected cabinet, use by caregivers, return, laundry. At the heart of the system are Zebra RFID readers driven by Arduino controllers, querying in real time a database of tens of thousands of tags spread across about ten healthcare facilities.
The first version ran on Bubble, supplemented by AWS Lambda, Power BI and a stack of services. This no-code architecture was hitting its limits: an average latency of around 720 ms on RFID operations (up to 2 s), high execution costs, business logic locked away without version control, and a history table exceeding one million rows that Bubble struggled to handle.
Scroll took over the whole system to rewrite it in Next.js and Supabase, with a strong sovereignty requirement: sensitive health data that must neither leave France nor pass through third-party services. The new stack is fully self-hosted on OVH, under the facility's own control.
The starting point: a no-code stack out of breath
On critical RFID operations - identifying a caregiver, checking their cabinet access rights, recording the tags read - every millisecond counts. The Arduino works on a tight connection budget: beyond it, the read fails and the experience degrades. On Bubble, round-trips averaged 720 ms, with spikes up to 2 seconds.
On top of that came business logic scattered across Bubble, AWS Lambda and Power BI, the lack of version control and CI/CD, execution costs that capped API throughput, and a history of more than one million rows that the no-code database struggled to serve. Above all, health data was passing through services hosted outside France.
A modern, fast and sovereign stack
Scroll rewrote the application in Next.js 15 and strict TypeScript, on a clean architecture (domain, application, infrastructure) where all business logic is versioned and tested. The critical RFID endpoints were redesigned to respond in under 200 ms: as a result, the Arduino-to-cabinet connection time dropped from 1.2 s to 300 ms - four times faster.
All data now lives in a Supabase instance (PostgreSQL, Auth, Realtime, Storage) fully self-hosted on OVH, in France. The real-time dashboard replaces Power BI with no license cost, and security relies on RLS enabled on every table. The existing IoT bridge (Node-RED) was kept in place: only the endpoint URLs changed.
A progressive migration, zero downtime
A hospital system cannot be taken offline. The switchover therefore happened cabinet by cabinet: for each reader, all it took was pointing Node-RED to the new endpoint. In case of doubt, rolling back was instant - a simple URL change - with no dual-write and no maintenance window.
The outcome: no service interruption for caregivers, an infrastructure four times more responsive, sharply reduced recurring costs, and above all health data that never leaves French territory again. ProtectUs now fully owns its code, its hosting and its roadmap.