GooeyFlow
Documentation

Install, instrument, and analyse locally

GooeyFlow keeps detailed product analytics in your environment. Install the native dashboard, add Logger to your application, then import protected .goo snapshots.

01 · Native Dashboard

Download the correct dashboard bundle

Sign in to GooeyFlow, open Downloads, and choose the archive for the machine that will host the dashboard. Dashboard downloads require an active licence assigned to your website account. Extract the complete archive to a stable application directory; keep the launcher and deployment files together.

Choose a persistent host

The dashboard stores its encrypted databases, installation identity, licence lease, and customer-owned keys locally. Treat its data directory as production data and include it in your backup plan.

02 · Installation

Initialize the native dashboard

Configure the persistent data directory and static-assets directory supplied with the bundle. Initialize the installation once, create the first local administrator, and then start the service.

export GOOEY_FLOW_DATA_DIR=/srv/gooeyflow/data
export GOOEY_FLOW_STATIC_DIR=/opt/gooeyflow/static
./gooeyflow-dashboard installation init
./gooeyflow-dashboard users create-user admin@example.com --administrator
./gooeyflow-dashboard serve

Open the configured dashboard address in a browser and sign in using the local administrator account. For a customer deployment, put a customer-controlled HTTPS reverse proxy, VPN, or identity-aware proxy in front of the service.

Container deployment

If your download contains the self-hosted Compose deployment, configure its image and licence environment, initialize its persistent volume, create an administrator, and start it:

docker compose -f docker-compose.self-hosted.yml pull
docker compose -f docker-compose.self-hosted.yml run --rm dashboard installation init
docker compose -f docker-compose.self-hosted.yml run --rm dashboard \
  users create-user admin@example.com --administrator
docker compose -f docker-compose.self-hosted.yml up -d
03 · Analyse

Import and explore product usage

Open Import and manually select one or more encrypted .goo files. After import, use Overview for cross-product trends, Devices for product- or device-group analysis, and Views for window-specific interaction patterns. Device groups, device types, and view filters update the relevant metrics, graphs, and lists.

Repeated snapshots are safe to import: existing event identifiers are ignored. Keep the original exports until your backup and retention policy says they may be removed.

04 · Logger SDK

Download the Logger package for your toolchain

Sign in and download the Logger SDK archive matching your operating system, architecture, compiler ABI, and Qt version. Extract it outside your source tree or install it into an internal SDK prefix. The package contains headers, libraries, CMake package files, examples, and detailed interface documentation.

Core integration needs OpenSSL Crypto and SQLite. Upload support needs libcurl. Qt Widgets or Qt Quick applications also need a matching Qt 5.15 or Qt 6 development installation.

05 · Application integration

Link Logger into your application

Point CMAKE_PREFIX_PATH at the extracted SDK and request only the components your application uses. For a Qt Widgets application that exports and uploads snapshots:

find_package(GooeyFlow CONFIG REQUIRED COMPONENTS HttpUploader QtAdapter)
target_link_libraries(my_app PRIVATE
  GooeyFlow::GooeyFlow
  GooeyFlow::HttpUploader
  GooeyFlow::QtAdapter)

Use QtQuickAdapter instead of QtAdapter for QML. A non-Qt application can link only GooeyFlow::GooeyFlow; add HttpUploader only when the application sends protected exports directly.

06 · Recording

Record interactions and create a protected export

Create one logger with a writable private database path, assign a stable device type, and keep it alive longer than any adapters. Qt adapters automatically observe supported controls; stable, unique object names make the resulting analytics useful.

#include <gooey_flow/interaction_logger.hpp>
#include <gooey_flow/qt_event_adapter.hpp>

gooey_flow::InteractionLogger logger{"interactions.db"};
logger.setDeviceType("desktop_control_panel");

gooey_flow::QtEventAdapter adapter{logger};
adapter.observe(mainWindow);

logger.exportDatabase("device-interactions.goo");

The application writes to its private working database and exports a consistent encrypted .goo snapshot. Do not distribute or manually import that working database. Logger never uploads automatically; your application explicitly exports a file and either transfers it for manual dashboard import or sends it with the optional uploader.

button_clickedslider_changedtext_editedgesture_detectedtoggle_changed
07 · Licence

Activate and validate

Your administrator assigns a dashboard licence to this website account. Enter the supplied activation credentials in the local dashboard. Successful online validation renews its signed offline lease; the Account page shows the latest validation and validity window.

08 · Privacy boundary

Analytics stay local

The website distributes software and validates licences. Interaction records, imported .goo contents, devices, sessions, views, and analytics values remain in the native dashboard database. The customer installation owns the import private key; Logger receives only its public key.