Skip to content

Documentation

Everything about the Reactive Volcano App in detail: how to use it, how to host it, and how it works inside. The quick overview is in the README. Also as a website with search: https://firsttris.github.io/reactive-volcano-app/docs/

This is an independent, unofficial project with no connection to Storz & Bickel GmbH. See the legal notice.

For users

Getting started what you need, browsers per platform, Linux flag, iOS, connecting, installing as an app, updates, language and theme
Usage every screen for the desktop device, Venty / Veazy and Crafty: control, boost, settings, self-diagnosis, how values are written
Workflows how a workflow runs step by step, pause and resume, managing, built-in examples, JSON file format, storage
Troubleshooting & FAQ Web Bluetooth unavailable, device not found, connection drops, wrong values, reporting a problem, common questions
Privacy & security what leaves your device (nothing), what is stored, Bluetooth permissions, HTTPS, hosting, vulnerability reports
Legal notice no affiliation, trademarks, no manufacturer code, no warranty, safety and intended use, license, contact (English and German)

For self-hosters

Self-hosting Docker, Compose, Podman Quadlet, HTTPS with Caddy / nginx / Traefik, sub-paths, static hosting, updates, image details

For developers

Architecture layers, connecting, the Bluetooth queue, device modules, writing values, routing, workflows, UI, i18n, PWA, design decisions
Bluetooth protocol discovery, services, characteristics, bit fields and frame layouts for each device family
Development setup, scripts, project structure, conventions, translations, adding settings and devices, Android debugging, screenshots
Testing unit tests, end-to-end tests, the Bluetooth mock, static checks, CI, real-device checklist
Releases & deployment GitHub Pages, versioning, cutting a release, Docker images, secrets, checklist
Contributing how to report bugs and send pull requests

The app in one minute

  • Client only. A SolidJS single-page app. No server, no database, no accounts. Hosted as static files on GitHub Pages or in an nginx container.
  • Web Bluetooth. The browser connects to the device over Bluetooth Low Energy after you pick it in the browser's own chooser. All GATT operations run through one queue, one at a time.
  • Per device family: a pure protocol module (bytes ↔ values), a driver (GATT access), a reactive store (state and actions) and views. Desktop and Crafty push changes as notifications; Venty and Veazy use a command channel that is polled twice a second.
  • Workflows run in the app and are stored in the browser's IndexedDB.
  • PWA: installable, starts offline, updates itself.

Screenshots

Desktop control Workflows Portable control with heater modes Crafty control