Skip to content

Frank-Jettenbach/befehlsmanager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Befehlsmanager

Moderne Web-Anwendung zur Verwaltung von Systembefehlen. Organisiert Befehle nach Kategorien (Linux, Proxmox, Docker, Applications) mit Fuzzy-Suche, Sidebar-CRUD, Drag & Drop und Syntax-Highlighting.

Features

  • CRUD - Befehle erstellen, bearbeiten, löschen
  • Kategorien-Management - Kategorien und Subkategorien direkt in der Sidebar erstellen, umbenennen und löschen
  • Fuzzy-Suche - Levenshtein-basiert, findet auch bei Tippfehlern ("Lunix USer" → "Linux User-Verwaltung")
  • Drag & Drop - Kategorien umsortieren oder per Drop zusammenführen, Subkategorien verschieben
  • One-Click-Copy - Befehle direkt kopieren, optional mit SSH/Verzeichnis-Kontext
  • Syntax-Highlighting - Shell-Befehle farblich hervorgehoben (highlight.js)
  • Export/Import - JSON-Export und -Import (merge oder replace)
  • Dark Mode - Modernes, dunkles Design mit CSS-Variablen
  • Responsive - Optimiert für Desktop, Tablet und Mobile
  • Auto-Setup - Datenbank-Tabellen und 62 Beispielbefehle werden automatisch erstellt
  • Tastaturkürzel - Ctrl+K Suche, Ctrl+N Neuer Befehl, Esc Modal schließen

Screenshot

📁 Linux              [+] [✎] [🗑]     │  Befehl                     Beschreibung          Tags
   ├─ User-Verwaltung     [✎] [🗑]     │  useradd -m -s /bin/bash    Erstellt neuen User   user,erstellen
   ├─ Dateien              [✎] [🗑]     │  passwd username            Passwort setzen       passwort
   └─ Berechtigungen       [✎] [🗑]     │  usermod -aG group user    Gruppe hinzufügen     gruppe
📁 Docker                                │
📁 Proxmox                               │
📁 Applications                          │

Voraussetzungen

  • Apache2 mit PHP (>= 8.0)
  • MariaDB / MySQL (>= 10.5)
  • PHP-Module: php-mysql, php-json

Installation

1. Repository klonen

cd /opt
git clone https://github.com/Frank-Jettenbach/befehlsmanager.git

2. Apache Symlink erstellen

ln -s /opt/befehlsmanager /var/www/html/befehlsmanager

3. MariaDB Datenbank anlegen

CREATE DATABASE befehlsmanager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'frank'@'localhost' IDENTIFIED BY 'dein_passwort';
GRANT ALL PRIVILEGES ON befehlsmanager.* TO 'frank'@'localhost';
FLUSH PRIVILEGES;

4. Konfiguration anpassen

Datei config.php bearbeiten:

return [
    'db' => [
        'host' => 'localhost',
        'name' => 'befehlsmanager',
        'user' => 'frank',
        'pass' => 'dein_passwort',
    ],
    'app' => [
        'title'    => 'Befehlsmanager',
        'base_url' => '/befehlsmanager',
    ],
];

5. Aufrufen

http://HOSTNAME/befehlsmanager/

Beim ersten Aufruf werden beide Tabellen und 62 Beispielbefehle automatisch erstellt.

Datenbankstruktur

MariaDB mit zwei Tabellen:

-- Eigenständige Kategorie-Verwaltung (auch leere Kategorien)
CREATE TABLE kategorien (
    id INT AUTO_INCREMENT PRIMARY KEY,
    kategorie VARCHAR(100) NOT NULL,
    subkategorie VARCHAR(100) DEFAULT NULL,
    sort_order INT DEFAULT 0,
    UNIQUE KEY uq_kat_sub (kategorie, subkategorie)
);

-- Befehle mit Volltext-Index
CREATE TABLE befehle (
    id INT AUTO_INCREMENT PRIMARY KEY,
    kategorie VARCHAR(100) NOT NULL,
    subkategorie VARCHAR(100) NOT NULL,
    titel VARCHAR(255) NOT NULL,
    befehl TEXT NOT NULL,
    beschreibung TEXT DEFAULT NULL,
    beispiel TEXT DEFAULT NULL,
    tags VARCHAR(500) DEFAULT '',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FULLTEXT INDEX ft_search (titel, befehl, beschreibung, tags, beispiel)
);

API-Endpunkte

Befehle

Aktion Methode URL
Alle Befehle GET api.php?action=list
Filtern GET api.php?action=list&kategorie=Linux&search=docker
Einzelner Befehl GET api.php?action=get&id=1
Erstellen POST api.php?action=create
Aktualisieren POST api.php?action=update
Löschen POST api.php?action=delete

Kategorien

Aktion Methode URL
Kategorien laden GET api.php?action=categories
Kategorie hinzufügen POST api.php?action=add_kategorie
Kategorie umbenennen POST api.php?action=rename_kategorie
Subkategorie umbenennen POST api.php?action=rename_subkategorie
Kategorie löschen POST api.php?action=delete_kategorie
Subkategorie löschen POST api.php?action=delete_subkategorie
Kategorie verschieben POST api.php?action=move_kategorie
Subkategorie verschieben POST api.php?action=move_subkategorie
Reihenfolge speichern POST api.php?action=reorder_kategorien
Befehle zählen GET api.php?action=count_befehle&kategorie=Linux

Sonstige

Aktion Methode URL
Tags GET api.php?action=tags
Export GET api.php?action=export
Import POST api.php?action=import&mode=merge

Sidebar-CRUD

Beim Hover über Kategorien/Subkategorien erscheinen Action-Icons:

  • [+] Sidebar-Header: Neue Kategorie erstellen (Inline-Input)
  • [+] bei Kategorie: Neue Subkategorie hinzufügen
  • [✎] Inline-Rename (Text wird zu Input, Enter = Speichern, Esc = Abbrechen)
  • [🗑] Löschen mit Bestätigungs-Dialog (zeigt Anzahl betroffener Befehle)

Drag & Drop

  • Kategorie auf Kategorie (Rand): Reihenfolge ändern → sort_order in DB
  • Kategorie auf Kategorie (Mitte): Alle Befehle zusammenführen
  • Subkategorie auf Kategorie: Subkategorie in andere Kategorie verschieben

Fuzzy-Suche

Client-seitige Suche mit Levenshtein-Algorithmus:

  • Alle Befehle werden einmalig geladen und lokal gefiltert
  • Exakte Substring-Matches bekommen höchste Priorität
  • Fuzzy-Matches mit ≥60% Ähnlichkeit werden einbezogen
  • Ergebnisse nach Relevanz sortiert

Beispiel: "Lunix USer" findet "Linux User-Verwaltung" (lunix↔linux: 80%, user↔user: 100%)

Migration von SQLite

Falls du von einer älteren SQLite-Version migrierst:

php migrate.php

Das Script liest alle Befehle aus data/befehlsmanager.db und schreibt sie in MySQL.

Backup

mysqldump -u frank -p befehlsmanager > backup_$(date +%Y-%m-%d).sql

Oder JSON-Export über die Weboberfläche: Button "Export" in der Toolbar.

Dateistruktur

befehlsmanager/
├── config.php          # DB-Credentials und App-Konfiguration
├── db.php              # PDO-Verbindung, Auto-Setup Tabellen
├── api.php             # REST API (15 Endpunkte)
├── index.php           # Frontend HTML
├── menu.php            # Navigationsleiste
├── seed.php            # 62 Beispielbefehle + Kategorien
├── migrate.php         # SQLite → MySQL Migration
├── assets/
│   ├── app.js          # Frontend-Logik (Fuzzy-Search, CRUD, DnD)
│   └── style.css       # Dark-Theme Stylesheet
└── data/               # (alt) SQLite-Datenbank

Technologie

  • Backend: PHP 8 + MariaDB (PDO, Prepared Statements)
  • Frontend: Vanilla JavaScript (IIFE, kein Framework)
  • Styling: Custom CSS mit CSS-Variablen (Dark Mode)
  • Syntax-Highlighting: highlight.js
  • Webserver: Apache2

About

Moderne Web-App zur Verwaltung von Systembefehlen (Linux, Docker, Proxmox) mit Fuzzy-Suche, Sidebar-CRUD und Drag & Drop

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors