Daqster

Daqster Architecture

Български English

Parent: Documentation Index

Architecture Hub

This document describes the architecture of Daqster, its main components, data flow, and working principles.

1. Overview

Daqster is a modular, plugin-based platform developed with Qt5, designed for data acquisition and analysis applications. It provides a flexible framework that allows easy extension through dynamically loaded plugins.

2. Main Architectural Components

2.1. Frame Work (Core)

This is the heart of Daqster, responsible for plugin management.

2.2. Host Application (src/apps/Daqster)

The main application that provides user interface and manages plugin launching.

2.3. Plugin System (src/plugins)

Examples of plugins that demonstrate the framework’s capabilities.

2.4. External Libraries (src/external_libs)

External libraries integrated into the project.

2.5. Tools (tools/)

Directory containing scripts and helper files for build and packaging.

2.6. Docs (docs/)

Directory for documentation.

3. Key Architectural Principles

1. Modularity and Extensibility

2. Dynamic Loading

3. Process Isolation

4. Cross-platform

Data Flow

1. Application Startup

main.cpp
├── Initialize QApplication
├── Create QPluginManager
├── Load plugins
└── Start GUI

2. Plugin Loading

QPluginManager
├── Scan directories for plugins
├── Load .so files
├── Initialize QPluginInterface
└── Add to active plugins list

3. Plugin Launch

AppToolbar/ApplicationsManager
├── Receive launch request
├── Find plugin by name
├── Create QProcess with environment
└── Launch as child process

Architecture Diagram

Architecture Diagram

PlantUML source

Plugin Discovery Flow

Plugin Discovery Flow

PlantUML source

5. Environment Variables

Plugin Discovery

Qt Environment (in AppImage)

XDG Directories (for AppImage)

Debug Environment

6. Security Considerations

7. Performance Considerations

8. Testing Strategy

9. Plugin Lifecycle Diagram

Plugin Lifecycle

PlantUML source

10. AppImage Structure Diagram

Daqster-x86_64.AppImage
|-- AppRun                          <- startup script
|-- daqster.desktop
|-- daqster.png
`-- usr/
    |-- bin/
    |   `-- Daqster                 <- main executable
    |-- lib/
    |   |-- libQt*.so.*             <- Qt libraries
    |   |-- libicu*.so.*            <- ICU libraries
    |   |-- plugins/                <- Qt plugins
    |   |-- qml/                    <- QML modules
    |   `-- daqster/
    |       `-- plugins/            <- Daqster plugins
    `-- share/
        |-- applications/           <- desktop file
        `-- icons/                  <- app icon

11. Future Enhancements