Skip to content

med1001/Nexus

Repository files navigation

Nexus

A modern Qt application for managing and organizing equipment configurations with an intuitive template-based system.

Qt C++ License Platform

✨ Features

  • 🎨 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

πŸ–ΌοΈ Screenshots

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       β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Main Interface
Main Interface

Add New Configuration
Add New Configuration

πŸš€ Quick Start

Prerequisites

  • Qt 6.8 or higher
  • CMake 3.16+
  • C++17 compatible compiler

Installation

Option 1: Download Release

  1. Download the latest release from the Releases page
  2. Extract and run the executable
  3. The application will create a local database on first launch

Option 2: Build from Source

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/appconfigurationManager

Set /path/to/Qt/6.x.x/<toolchain> to the Qt installation that contains Qt6Config.cmake (the directory that contains lib/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).

🎯 Basic Usage

Creating a Configuration

  1. Click "New Configuration" in the header
  2. Select a template (Sensor, Device, or Gateway)
  3. Fill in the required fields
  4. Click "OK" to save

Managing Configurations

  • 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 and Filter

  • 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

πŸ“‹ Built-in Templates

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

βš™οΈ Customization

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
    }
  ]
}

πŸ“ Project Structure

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

πŸ”§ Development

Architecture

  • Backend: C++ with Qt6 (Model layer)
  • Frontend: QML with Material Design
  • Database: SQLite for local storage
  • Templates: JSON-based configuration system

Key Components

  • 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.

πŸ“š Documentation

🀝 Contributing

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.

Development Setup

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ› Issues

If you encounter any problems:

  1. Check the User Manual troubleshooting section
  2. Search existing issues
  3. Create a new issue with detailed information about the problem

πŸ“„ License

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.

πŸ™ Acknowledgments

  • Built with Qt framework
  • UI inspired by Material Design principles
  • SQLite for reliable local data storage

⭐ Star this repository if you find it useful!

About

Your configuration manager

Resources

License

Stars

Watchers

Forks

Packages

No packages published