Skip to content

Getting Started

Christian edited this page Feb 7, 2026 · 4 revisions

Environment Setup

Working on this repository requires you to use cargo and npm. In the following document the installation process will be shown

Ubuntu/Debian Installation

    # Just press enter when prompted
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    apt install npm
    apt install nodejs
    # assuming you dont have git already, Git setup not included in here
    apt install git
    git clone git@github.com:qitechgmbh/control.git
    cd control
    cd electron
    npm install

Running Backend and Frontend Linux

Backend

To Compile backend code and run it on Linux:

cargo run --features development-mode

This command compiles and runs the backend with the development-mode feature, which sets up capabilities like raw socket access. Here it is required that you are connected to atleast one machine that is communicated with over ethercat or usb/serial. The Most minimal working setup would be to connect over ethernet to an ek1100 beckhoff terminal.

Mock-Machine

The Mock-Machine can be used to test code that does not require an actual machine connection. Like Frontend Code for example.

Running with the mock-machine feature:

# in root git folder
cargo run --features development-mode --features mock-machine

Frontend

To run the Frontend Code:

# need to be in the electron folder and an additional terminal
cd electron
npm run start

Contributing

Generally you contribute to the codebase by:

  1. Opening or Choosing an existing issue (Bug,Feature,Task etc)
  2. Work on it locally
  3. Commit your changes locally
  4. Before pushing changes, if there were changes on the master branch, rebase your branch like so:
git fetch
git rebase origin/master
  1. Push changes
# IF you needed to rebase
git push --force-with-lease
# ELSE you just push
git push
  1. Open a Pull Request on Github and link the issue by writing fix #issue_number, after the pull request is merged into master the branch is closed automatically
  2. Request a Review and hope for the best :)

Recommended Editor Setup

We recommend you to use an Editor with rust-analyzer support like VSCode to speed up development and detect errors before compiling.

Minimal Hardware Examples

To get started with actual hardware, check out these step-by-step tutorials:

These examples provide complete hardware wiring diagrams and software setup instructions.

More Docs

  • Architecture & Data Flow

    • Example Winder V2
  • Electron

    • Folder Structure
    • Routing with TanStack Router
    • Design with Tailwind & Shadcn
    • ...
  • Interfacing with Electron/Server

    • SocketIO
      • Machine Namespace
      • Main Namespace
    • REST
      • Machine Mutations
      • Write Device Identification
  • Server

    • Threading
    • Logging
    • Control Loop Setup
      • Control Loop Thread
        • realtime
      • Maindevice
      • Group
      • Extracting Device Identifications
      • Identifying Groups
      • Validating Machines
      • Run Control Loop
    • Control Loop
    • Machine/Device Identification
    • Machines
      • When to create a new Machine?
        • Versioning
        • Code sharing
      • Creating/Validating a Machine
        • Validation
        • Configuration
    • Machine Implementation Guide
      • Link: How to create a Device
      • Link: How to create an Actor
      • Link: How to create a Machine
        • API (SocketIO + REST)
        • Creation/Validation Logic
          • Optional/Mandatory Devices
          • Validate Devices
        • Business Logic
      • Link: How to create Machine Abstraction (Like Traverse/Puller/...)
      • Forward act in winder.
  • Control Core

    • Actors
    • SocketIO
      • Namespaces & Caching
      • Joining leaving namespaces
      • NamespaceId
      • Caching
        • Serverside Caching
        • Clientside Caching
    • REST
  • Ethercat HAL

  • Ethercat Basics

  • NixOS Operating System

Clone this wiki locally