A modern Qt application for managing and organizing equipment configurations with an intuitive template-based system.
- π¨ Modern Dark Theme - Clean Material Design interface
- π Template-Based System - Predefined templates for sensors, devices, and gateways
- π Advanced Search & Filtering - Real-time search with type-based filtering
- πΎ Local SQLite Database - No external dependencies, works offline
- βοΈ Fully Customizable - JSON-based template system for custom configurations
- π Real-time Statistics - Live overview of configurations and templates
- π Cross-Platform - Runs on Windows, macOS, and Linux
Main Interface mockup
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β βοΈ Configuration Manager π [Search...] [New Config] β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββ€
β Overview β Configurations β
β β’ 42 Configs β βββββββββββββββββββββββββββββββββββββββββββ β
β β’ 3 Templates β β ID: 1 (sensor) β β
β β β Temperature Sensor A1 β β
β Filters β β {"name":"Temp-A1","rate":10,"unit":"Β°C"}β β
β β sensor β β [Edit] [Delete] [β―] β β
β β device β βββββββββββββββββββββββββββββββββββββββββββ β
β β gateway β βββββββββββββββββββββββββββββββββββββββββββ β
β β β ID: 2 (device) β β
β Templates β β Gateway Main β β
β β’ sensor β β {"hostname":"192.168.1.10","port":1883} β β
β β’ device β β [Edit] [Delete] [β―] β β
β β’ gateway β βββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββ
- Qt 6.8 or higher
- CMake 3.16+
- C++17 compatible compiler
- Download the latest release from the Releases page
- Extract and run the executable
- The application will create a local database on first launch
Linux / macOS (bash)
# Clone the repository
git clone https://github.com/med1001/Nexus.git
cd Nexus
# Clean previous build state
rm -rf build
# Configure (use the path to your Qt6 CMake files)
cmake -B build -S . -G Ninja -DCMAKE_PREFIX_PATH="/path/to/Qt/6.x.x/<toolchain>/lib/cmake/Qt6"
# Build
cmake --build build
# Run
./build/appconfigurationManagerSet
/path/to/Qt/6.x.x/<toolchain>to the Qt installation that containsQt6Config.cmake(the directory that containslib/cmake/Qt6).
Windows (PowerShell) β MinGW + Ninja (as used for this project)
# Clone the repository
git clone https://github.com/med1001/Nexus.git
Set-Location .\Nexus
# Add MinGW compiler & Ninja to PATH for this session
$env:Path += ";C:\Qt\Tools\mingw1310_64\bin;C:\Qt\Tools\Ninja"
# Remove any previous build to avoid generator conflicts
Remove-Item -Recurse -Force build -ErrorAction SilentlyContinue
# Configure CMake (point to the Qt6 CMake files)
cmake -B build -G "Ninja" -S . -DCMAKE_PREFIX_PATH="C:\Qt\6.9.1\mingw_64\lib\cmake\Qt6"
# Build
cmake --build build
# Ensure Qt runtime DLLs and plugins are available for the running process
$env:Path += ";C:\Qt\6.9.1\mingw_64\bin"
$env:QT_PLUGIN_PATH = "C:\Qt\6.9.1\mingw_64\plugins"
# Run the application
Set-Location .\build
.\appconfigurationManager.exe
β οΈ Important: The paths in the example above (C:\Qt\6.9.1\...,C:\Qt\Tools\mingw1310_64\bin, etc.) are only samples.
Use the correct paths from your own Qt installation and Ninja setup.
Do not copy and paste these commands without adjusting the paths to match your system.
If the executable exits immediately, ensure the Path and QT_PLUGIN_PATH lines above are executed in the same session before launching; they allow the app to find Qt DLLs and the platforms plugin (e.g., qwindows.dll).
- Click "New Configuration" in the header
- Select a template (Sensor, Device, or Gateway)
- Fill in the required fields
- Click "OK" to save
- Edit: Click the βοΈ button to modify existing configurations
- Delete: Click the π button to remove configurations
- View Details: Click the β― button to see full JSON data
- Search: Type in the search bar to find configurations by name
- Filter by Type: Use checkboxes in the sidebar to filter by configuration type
- Reset: Click "Reset Filters" to clear all filters
| Template | Purpose | Key Fields |
|---|---|---|
| Sensor | Environmental sensors | Name, Model, Frequency, Unit, Precision |
| Device | Network devices | Name, Hostname, Port, Protocol, Authentication |
| Gateway | Communication gateways | Name, Location, Upload Interval, Backup Settings |
The application uses a flexible JSON-based template system. You can customize templates by modifying the templates.json file:
{
"type": "custom_device",
"version": 1,
"title": "Custom Device Configuration",
"fields": [
{
"id": "device_name",
"label": "Device Name",
"type": "string",
"required": true
},
{
"id": "power_level",
"label": "Power Level",
"type": "int",
"min": 0,
"max": 100,
"default": 50
}
]
}configurationManager/
βββ CMakeLists.txt # Build configuration
βββ main.cpp # Application entry point
βββ Main.qml # Main UI interface
βββ ConfigurationModel.[h|cpp] # Database model
βββ TemplateManager.[h|cpp] # Template system
βββ templates.json # Template definitions
βββ resources.qrc # Qt resources
- Backend: C++ with Qt6 (Model layer)
- Frontend: QML with Material Design
- Database: SQLite for local storage
- Templates: JSON-based configuration system
- ConfigurationModel: SQLite interface with QML integration
- TemplateManager: JSON template loading and validation
- Main.qml: Responsive UI with search/filter capabilities
For detailed development information, see the Developer Documentation.
- User Manual - Complete usage guide
- Developer Documentation - Technical details and API reference
- Template System Guide - How to customize templates
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
By contributing to this project, you agree that your contributions will be licensed under the GNU General Public License v3.0.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
If you encounter any problems:
- Check the User Manual troubleshooting section
- Search existing issues
- Create a new issue with detailed information about the problem
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- Built with Qt framework
- UI inspired by Material Design principles
- SQLite for reliable local data storage
β Star this repository if you find it useful!