Qvios Architecture
End-to-end architecture, implementation, and deployment by Jori Blomqvist.
Qvios has a modern web application architecture with three distinct layers: a backend that handles user requests and communicates with a document database, a user-facing browser app, and a device link that handles communication between the backend and connected laboratory devices. The device link runs natively on the operating system of the device controlling computer.
Backend
- REST APIs for experiment management, workflow execution, sample tracking, and data retrieval
- Flexible workflow structures to support evolving laboratory protocols and experiment data
- Built using Express and Node.js
Browser App
- Interactive user interface for designing experiments, managing samples, and monitoring workflow execution
- Advanced interactive visualizations and workflow exploration tools using D3
- Developed using React, JavaScript, HTML, and CSS
Database
- Database schemas for representing laboratory workflows, samples, and devices
- Relationships between experiments, samples, reagents, labware, and processing steps
- Built with MongoDB and Mongoose
Workflow Logic
- Workflow execution engine for managing complex, multi-step laboratory protocols
- Support for branching workflows, conditional logic, and iterative processes
- Integration of workflow execution with sample tracking and device communication systems
Deployment
- Production and development environments for full-stack application deployment
- Environment configuration, build pipelines, and operational monitoring workflows
- Implemented with Docker, GitHub Actions, and Google Cloud Platform
Security and Authentication
- Authentication systems for controlled access to experiment and sample data
- Role-based access control mechanisms for operational and administrative workflows
- Secure API access patterns and protected sensitive experimental data flows
Device Integration
- Device integration systems using an Electron desktop application for communication with laboratory instruments
- Automated CSV generation pipelines for transferring and writing instrument-specific instructions and worklist data to the local filesystem
- Mechanisms for reading device-generated metrics and operational status data from local files and synchronizing them with backend services
Design challenges and technical decisions
Qvios was built with web technologies to enable better distribution, updates, and UX than traditional lab software. The goal was a single interface for controlling lab functions and devices, balancing ease of use for non-technical users with the flexibility required for complex workflows.
Data modeling for complex workflows
To support multi-step, branching lab workflows, a document database was chosen to represent experiments. Each experiment is split into procedure objects, with relationships modeled within the parent experiment. This approach supports branching, merging, and repeating procedures while maintaining robust data validation.
Unlike many ELN solutions and other lab software that store experimental data as plain text, Qvios stores experiments as structured, connected documents. This early decision enabled:
- Dynamic execution of protocols
- Vendor-agnostic device integration
The same model later powered automatic sample tracking and built-in analytics, allowing users to explore and visualize experimental data without manual data wrangling.
Data visualization and analytics
For visualization, D3 was used for its instant updates and scientifically accurate, customizable charts.
One of the biggest visualization challenges was comparing different experimental instances. The phase-alignment feature was iterated on several times to synchronize experiment timelines and align comparable parameters across runs. In practice, it proved unusable for most use cases and was replaced by a summary page. On this page, users can create their own summaries by adding data from each experiment to graphs of their choice. This gave users more control and turned comparisons into a flexible workflow rather than a fixed algorithm.
Integrating with lab devices
Many lab devices communicate with other systems via a shared network drive, where raw data is written to files and later retrieved either automatically or manually. To improve this workflow, Qvios needed a solution that could run close to the device, access the local file system, and communicate directly with the backend. Qvios Link was built with Electron because it:
- Runs natively on all major operating systems
- Provides access to the local file system to monitor, read, and process device output
- Can spawn subprocesses to execute shell commands and directly control connected lab devices
- Supports a React frontend, enabling reuse of many components from the main browser app to maintain a consistent UX and minimize development time.
This architecture allowed Qvios Link to serve as a bridge between legacy device interfaces and the modern web-based Qvios backend, while preserving a unified user experience across both.
Reflection
Looking back, a few themes stand out:
- Investing early in a flexible, structured data model paid off later in analytics, sample tracking, and device integrations.
- Overly “smart” automated comparison features (like phase alignment) were less valuable than providing users with intuitive tools to build their own summaries.
- Reusing web technologies (React, Electron) across the stack accelerated development while keeping the experience consistent for lab users.
Together, these decisions helped Qvios feel both powerful and approachable, despite the inherent complexity of modern lab workflows.