LagerPro – Lagerverwaltungs-Applikation
  • PHP 97.9%
  • Shell 1.7%
  • CSS 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-06-04 19:34:08 +02:00
actions feat: Journal + savePrices in actions.php (Task 5) 2026-05-18 18:20:31 +02:00
components feat: Sidebar-Sortierung per Drag und Drop (User-Override) 2026-05-17 09:30:33 +02:00
docs/superpowers docs: Implementierungsplan Preismodul 2026-05-18 18:00:41 +02:00
includes fix: SQL-Syntaxfehler in article_journal DEFAULT 'web' (MySQL) 2026-05-18 18:36:21 +02:00
install feat: article_prices + article_journal in migrate.php (Task 10) 2026-05-18 18:24:21 +02:00
pages feat: Preis-KPIs + Top-Artikel nach Lagerwert in stats.php (Task 8) 2026-05-18 18:23:07 +02:00
public feat: REST-API public/api.php (Task 9) 2026-05-18 18:24:04 +02:00
.gitignore chore: .worktrees und .superpowers zu .gitignore hinzufügen 2026-05-18 18:07:21 +02:00
.gitlab-ci.yml fix: gueltiges semgrep-Ruleset p/php (p/php-security-audit ist 404) 2026-06-04 19:34:08 +02:00
backup_cron.php chore: alle Projektdateien hinzugefügt (Installer, Pages, Actions, Assets) 2026-05-16 19:09:05 +02:00
CHANGELOG.md docs: CHANGELOG und README für v1.6.0, Version auf 1.6.0 bumpen 2026-05-18 18:30:23 +02:00
CONTRIBUTING.md docs: README, LICENSE, CHANGELOG, CONTRIBUTING und CI/CD hinzugefuegt 2026-05-16 19:15:37 +02:00
deploy.sh feat: Dark-Mode, Theme-Einstellung, Security-CI und Button-Redesign 2026-05-17 01:18:44 +02:00
index.php feat: SSO deaktiviert 2FA-Modul, öffentliche Suche wird erzwungen 2026-05-17 01:36:15 +02:00
install.sh install.sh um rechte erweiterung fpr install/install.sh ergänzt 2026-05-16 19:29:02 +02:00
LICENSE docs: README, LICENSE, CHANGELOG, CONTRIBUTING und CI/CD hinzugefuegt 2026-05-16 19:15:37 +02:00
login.php feat: IP-Allowlist für Administrator-Login (SSO-Fallback) 2026-05-17 01:47:29 +02:00
login_totp.php feat: Dark-Mode, Theme-Einstellung, Security-CI und Button-Redesign 2026-05-17 01:18:44 +02:00
logout.php chore: alle Projektdateien hinzugefügt (Installer, Pages, Actions, Assets) 2026-05-16 19:09:05 +02:00
oidc_callback.php feat: Dark-Mode, Theme-Einstellung, Security-CI und Button-Redesign 2026-05-17 01:18:44 +02:00
README.md docs: CHANGELOG und README für v1.6.0, Version auf 1.6.0 bumpen 2026-05-18 18:30:23 +02:00

LagerPro

Webbasierte Lagerverwaltungs-Applikation für kleine und mittlere Betriebe. Vollständig DSGVO-konform – alle Ressourcen lokal gebündelt, keine externen CDNs.

Features

  • Artikelverwaltung – Erstellen, Bearbeiten, Löschen mit Bildern, Standort und Preisen
  • Preismodul – Einkaufs-/Verkaufspreis, Rabatt (bidirektional), Marge-Anzeige, Änderungsjournal, REST-API
  • Benutzerverwaltung – Rollen & Berechtigungen (Admin, Operator, Benutzer)
  • Sidebar-Sortierung – Per Drag & Drop individuell anpassbar; globale Vorgabe durch Admin in den Einstellungen
  • Responsives Layout – Settings, Backup und Import nutzen auf breiten Bildschirmen ein 2-Spalten-Grid
  • Zwei-Faktor-Auth – TOTP (Google Authenticator, Authy, etc.)
  • SSO – Authentik OIDC-Integration mit Gruppen-Mapping
  • Import / Export – CSV und JSON; REST-API für externe Systeme
  • Backup – Datenbank-Backups direkt über die Oberfläche
  • QR-Codes – Für jeden Artikel generierbar
  • DSGVO-konform – Nur technisch notwendige Session-Cookies, keine Tracker

Voraussetzungen

Komponente Version
PHP 8.0+ (empfohlen: 8.3/8.4)
Webserver nginx oder Apache2
Datenbank MariaDB / MySQL oder SQLite
PHP-Extensions pdo, pdo_mysql/pdo_sqlite, gd, mbstring, curl, openssl

Installation

# Repository klonen
git clone https://gitlab.terpotiz.priv.at/bruckner/lagerpro.git
cd lagerpro

# Installer ausführen (als root) – beide Varianten funktionieren:
sudo bash install/install.sh
# oder alternativ:
sudo . ./install.sh

Der Installer richtet automatisch ein:

  • PHP-FPM
  • nginx oder Apache2 mit Sicherheits-Headern
  • MariaDB oder SQLite
  • Verzeichnisstruktur und Berechtigungen (*.sh → 700)

Reinstall / Update: Bestehende config.php wird standardmäßig beibehalten – DB-Credentials werden daraus übernommen, kein Passwort-Mismatch.

Standard-Login nach Erstinstallation: admin / password123 → sofort ändern!

Konfiguration

Die Konfiguration liegt in config/config.php (wird vom Installer angelegt, nicht im Repository). E-Mail und SSO-Einstellungen sind zusätzlich über die Admin-Oberfläche unter Einstellungen konfigurierbar.

SSO / Authentik

  1. In Authentik eine OAuth2/OIDC-Applikation anlegen
  2. Redirect URI: https://lagerpro.example.com/oidc_callback.php
  3. Scopes: openid, email, profile, groups
  4. In LagerPro → Einstellungen → SSO / Authentik konfigurieren

Administrator-Login IP-Allowlist

Bei aktivem SSO kann der lokale Admin-Fallback-Login auf bestimmte IPs beschränkt werden:

  • Einstellungen → Administrator-Login IP-Allowlist – Checkbox + IP-Liste (eine pro Zeile, CIDR erlaubt)
  • Abschnitt nur sichtbar wenn SSO-Modul aktiv und SSO eingeschaltet (sso_enabled = true)
  • Leer = alle IPs erlaubt
  • Bei gesperrter IP: Button wird nicht angezeigt + POST blockiert

Module

Unter Module können Funktionen global aktiviert oder deaktiviert werden:

Modul Beschreibung
2FA / TOTP Zwei-Faktor-Authentifizierung (deaktiviert wenn SSO-Modul aktiv und sso_enabled = true)
SSO / Authentik OIDC Single Sign-On
Datenimport CSV/JSON-Import
Backup Datenbank-Backups
DB-Administration Adminer-Datenbankzugriff
Öffentliche Suche Unangemeldeter Zugriff auf index.php; wenn deaktiviert → Redirect zu Login
Lager-Statistik Statistik-Dashboard mit KPIs und Charts (Chart.js lokal gebundelt)
Admin-Dashboard System/Benutzer-Übersicht für Admins (nur mit MANAGE_USERS-Berechtigung)
Preismodul Preisfelder pro Artikel, Rabatt-Berechnung, Marge, Änderungsjournal, REST-API (einzelne Felder deaktivierbar)

REST-API (Preismodul)

Wenn das Preismodul und die Preis-API unter Einstellungen → Module aktiv sind:

# Alle Artikel mit Preisen
curl -H "X-API-Key: <key>" https://lagerpro.example.com/public/api.php?action=articles

# Preise eines Artikels aktualisieren
curl -X PUT -H "X-API-Key: <key>" -H "Content-Type: application/json" \
  -d '{"selling_price": 29.99, "purchase_price": 12.50}' \
  "https://lagerpro.example.com/public/api.php?action=prices&id=<uuid>"

# Vollexport
curl -H "X-API-Key: <key>" https://lagerpro.example.com/public/api.php?action=backup

API-Key wird unter Einstellungen → Module generiert und angezeigt.

Automatisches Backup (Cron)

# In crontab eintragen (täglich 02:00 Uhr)
0 2 * * * /usr/bin/php /var/www/lagerpro/backup_cron.php

Externe Abhängigkeiten

Alle Abhängigkeiten sind lokal gebündelt – kein Internetzugang erforderlich:

Komponente Lizenz
Tailwind CSS MIT
PHPQRCode LGPL-3.0
Inter Schriftart SIL OFL 1.1

Lizenz

Proprietär – siehe LICENSE.