Software für die Kunststoffindustrie
#1 ERP-Lösung

Software für die
Kunststoffindustrie

Mitarbeiterfunktionen wie Zeiterfassung, Urlaubsplaner, Schichtplaner sowie ein Loginterminal sind beim Zeiterfassungsmodul enthalten.

Jetzt für Beta anmelden
Software für die Kunststoffindustrie
#1 ERP-Lösung

Software für die
Kunststoffindustrie

die passende Software für kleine und mittlere Kunststofffirmen

Jetzt für Beta anmelden
Software für die Kunststoffindustrie
#1 ERP-Lösung

Software für die
Kunststoffindustrie

die passende Software für kleine und mittlere Kunststofffirmen

Jetzt für Beta anmelden
Software für die Kunststoffindustrie
#1 ERP-Lösung

Software für die
Kunststoffindustrie

die passende Software für kleine und mittlere Kunststofffirmen

Jetzt für Beta anmelden
Closed Beta

Werden Sie Beta-Tester

PolyCore befindet sich aktuell in der geschlossenen Entwicklungsphase. Tragen Sie sich in die Warteliste ein und erfahren Sie als Erster, sobald wir die Pforten für neue Tester und Kunden öffnen.

Unverbindlich

Die Eintragung ist zu 100% kostenlos und verpflichtet nicht zum Kauf.

Exklusive Vorteile

Beta-Tester erhalten stark rabattierte Lifetime-Konditionen zum Start.

Mitgestalten

Ihr Feedback aus der Beta fließt direkt in die fertige Software ein.

Entwicklungs-Updates

Verfolgen Sie live, woran wir gerade arbeiten.

Version 0.0.8 Alpha

20.03.2026
  • Audit: CRA (Cyber Resilience Act) & DSGVO-Konformität
  • K1 — Datenbankzugangsdaten aus dem Quellcode entfernt
  • Datei: `api.php`, neu: `.env`
  • Datenbankpasswort, Datenbanknutzer und LICENSE_SECRET wurden aus `api.php` entfernt
  • Neue `.env`-Datei unter `/volume1/web_packages/.env` angelegt (außerhalb des Web-Roots)
  • `loadEnv()`-Funktion in `api.php` liest Zugangsdaten sicher aus der `.env`
  • Datenbanknutzer von `root` auf dedizierten User `erp_user` mit minimalen Rechten (SELECT, INSERT, UPDATE, DELETE) gewechselt
  • Verbindungsfallback für Synology (localhost / 127.0.0.1) integriert
  • K2 — Klartext-Passwort-Vergleich entfernt
  • Datei: `api.php`
  • Fallback `$data['password'] === $user['password']` (Klartext-Vergleich) aus dem Login-Case entfernt
  • Login prüft ausschließlich via `password_verify()` gegen bcrypt-Hash
  • Automatisches Rehash wenn `password_needs_rehash()` veraltetes Format erkennt
  • K3 — SQL-Injection in get_schichtplan_gruppen behoben
  • Datei: `api.php`
  • `$year` wurde direkt in den Query-String interpoliert
  • Ersetzt durch Integer-Cast + parametrisiertes Prepared Statement mit `?`-Platzhalter
  • K4 — Serverseitiger Brute-Force-Schutz implementiert
  • Datei: `api.php`
  • Neue Tabelle `login_attempts` (username, ip, attempted_at)
  • Neue Funktionen: `checkBruteForce()`, `recordFailedAttempt()`, `clearFailedAttempts()`
  • Sperre nach 5 Fehlversuchen innerhalb 15 Minuten (pro Username UND IP)
  • HTTP 429 bei aktiver Sperre
  • Alte Einträge werden automatisch nach 1 Stunde bereinigt
  • Clientseitige Sperre in `login.js` bleibt als zusätzliche UI-Ebene erhalten
  • K5 — Datei-Upload abgesichert
  • Datei: `api.php`
  • MIME-Typ wird serverseitig via `finfo` geprüft (nur `application/pdf` erlaubt)
  • Dateigröße auf 10 MB begrenzt
  • Originaldateiname wird verworfen — neuer Name ist `bin2hex(random_bytes(16)).pdf`
  • Upload-Verzeichnis wird mit `0750` statt `0777` angelegt
  • K6 — CSRF-Schutz auf allen POST-Endpunkten
  • Dateien: `api.php`, `core.js`
  • Neuer API-Endpunkt `get_csrf_token` generiert serverseitigen Token pro Session
  • `validateCsrfToken()` prüft Header `X-CSRF-TOKEN` bei allen schreibenden Aktionen
  • `core.js`: Token wird beim App-Start einmalig abgerufen und in Variable `csrfToken` gespeichert
  • `fetchAPI()` sendet Token automatisch als Header bei allen POST-Requests
  • Bei FormData (Datei-Upload) wird Token als Feld `_csrf` angehängt
  • K7 — LICENSE_SECRET kryptografisch gesichert
  • Datei: `.env`
  • Hardcodierter String `PolyVision2026!SecureKey_Offline` ersetzt durch 64-stelligen kryptografischen Zufallskey (`secrets.token_hex(32)`)
  • Key liegt ausschließlich in der `.env`, nicht mehr im Quellcode
  • H1 — Session-Cookie-Sicherheit verbessert
  • Datei: `api.php`
  • `session.cookie_secure` wird dynamisch gesetzt: aktiv bei HTTPS, inaktiv bei HTTP (Synology-kompatibel)
  • Erkennung via `$_SERVER['HTTPS']` und `SERVER_PORT`
  • H2 — Session-Fixation verhindert
  • Datei: `api.php`
  • `session_regenerate_id(true)` wird nach erfolgreichem Login aufgerufen
  • H3 — HTTP-Sicherheits-Header via .htaccess
  • Datei: neu: `.htaccess`
  • `X-Frame-Options: SAMEORIGIN` (Clickjacking-Schutz)
  • `X-Content-Type-Options: nosniff`
  • `X-XSS-Protection: 1; mode=block`
  • `Referrer-Policy: strict-origin-when-cross-origin`
  • `Strict-Transport-Security` (HSTS, aktiviert)
  • `Content-Security-Policy` (CSP mit default-src, script-src, img-src etc.)
  • Direktzugriff auf `.env`, `.log`, `.sql`, `.bak`, `.sh` gesperrt
  • `install.php` dauerhaft gesperrt
  • Verzeichnis-Listing (`Options -Indexes`) deaktiviert
  • `X-Powered-By` und `Server`-Header werden unterdrückt
  • PHP: `display_errors off`, Upload-Limits gesetzt
  • M1 — Audit-Log auf zeitbasierte Löschfrist umgestellt
  • Datei: `api.php`
  • Vorher: Begrenzung auf 500 (später 10.000) Einträge nach Anzahl
  • Jetzt: Automatische Löschung von Einträgen älter als 12 Monate via `DATE_SUB(NOW(), INTERVAL 12 MONTH)`
  • M2 — Interne Fehlermeldungen werden nicht mehr an den Client ausgegeben
  • Datei: `api.php`
  • `catch`-Block gibt nur generische Meldung `"Ein interner Fehler ist aufgetreten."` zurück
  • Vollständige Fehlermeldung wird via `error_log()` ins Server-Log geschrieben
  • Action-Name wird im `default`-Case nicht mehr zurückgegeben
  • E1 — Alle Passwörter in der Datenbank als bcrypt-Hash verifiziert
  • Aktion: SQL-Prüfabfrage
  • Abfrage `SELECT id, username FROM users WHERE password NOT LIKE '$2y$%'` ergab keine Treffer
  • Alle bestehenden Nutzerpasswörter sind korrekt gehasht
  • T1 — Automatische Löschfristen (DSGVO)
  • Datei: `api.php`
  • Neue zentrale Funktion `runCleanup()` implementiert
  • Wird täglich automatisch über den bestehenden Heartbeat-Mechanismus ausgeführt
  • Löschfristen:
  • `login_attempts`: älter als 1 Stunde
  • `system_logs`: älter als 12 Monate
  • `user_sessions`: inaktiv seit mehr als 24 Stunden
  • Zeitstempel `last_cleanup` wird in `settings`-Tabelle gespeichert
  • Jede Bereinigung wird im Audit-Log protokolliert
  • T2 — Datenexport für Mitarbeiter (Art. 20 DSGVO)
  • Dateien: `api.php`, `core.js`, `view-zeiterfassung.php`
  • Neuer API-Endpunkt `export_my_data` gibt alle eigenen Daten zurück (Zeitstempelungen, Urlaubseinträge, Profil — ohne PIN)
  • Export wird im Audit-Log protokolliert
  • Neue JavaScript-Funktion `exportMyData()` in `core.js` generiert eine CSV-Datei mit UTF-8 BOM (Excel-kompatibel)
  • Dateiname: `Meine_Daten_[Name]_[Datum].csv`
  • Neuer blauer Button "Meine Daten" in der Zeiterfassungs-Toolbar für alle Nutzer sichtbar
  • O1 — Mitarbeiterinformation nach Art. 13 DSGVO
  • Dokument: `Datenschutzinfo_Mitarbeiter_Art13_DSGVO.docx`
  • Vollständiges Mitarbeiterschreiben mit Empfangsbestätigung erstellt
  • Enthält: Verantwortlicher, verarbeitete Daten, Zweck, Rechtsgrundlagen, Speicherdauer, Speicherort, Betroffenenrechte, Aufsichtsbehörde (LfDI RLP)
  • Platzhalter für Unternehmensname, Anschrift, Kontaktdaten
  • O2 — Vorfallsmanagement-Plan (CRA Art. 14 / DSGVO Art. 33)
  • Dokument: `Sicherheitsrichtlinie_Vorfallsmanagement_CRA.docx`
  • Ablaufplan mit Fristen: 0–2h (Isolierung), 24h (Dokumentation), 72h (Meldepflicht Behörde)
  • Notfallkontakt-Tabelle (Verantwortlicher, IT-Admin, LfDI RLP)
  • Vorfallsregister-Tabelle zum Ausfüllen (5 Jahre aufzubewahren)
  • Link zum Online-Meldeformular des LfDI Rheinland-Pfalz
  • O3 — Kontaktweg für Schwachstellenmeldungen (CRA Anhang II)
  • Dokument: `Sicherheitsrichtlinie_Vorfallsmanagement_CRA.docx` (Teil 2)
  • Responsible-Disclosure-Richtlinie dokumentiert
  • Sicherheits-E-Mail-Adresse als Kontaktweg definiert (Platzhalter)
  • 90-Tage-Frist vor öffentlicher Offenlegung festgelegt
  • Reaktionszeit (5 Werktage Eingangsbestätigung) dokumentiert
  • Infrastruktur — Datenbankschema-Bereinigung
  • Datei: `api.php`, neu: `install.php` (nach Ausführung gelöscht)
  • Alle `CREATE TABLE IF NOT EXISTS`-Statements aus `api.php` entfernt (7 Stellen)
  • Einmaliges `install.php`-Script erstellt das alle 22 Tabellen anlegt
  • `install.php` wurde nach erfolgreichem Ausführen vom Server gelöscht
  • Dokumentation — Verarbeitungsverzeichnis (Art. 30 DSGVO)
  • Dokument: `Verarbeitungsverzeichnis_PolyVision_ERP.docx`
  • Vollständiges Verarbeitungsverzeichnis erstellt
  • Enthält: Verantwortlicher, alle Verarbeitungstätigkeiten mit Rechtsgrundlage und Löschfrist, Detailbeschreibung Zeiterfassung, Betroffenenrechte, TOMs-Tabelle
  • Backup-Strategie dokumentiert: nächtliche Sicherung auf Server 2 (Produktionshalle, Smart Recycle 150) und Server 3 (extern, Smart Recycle 110)
  • Marketing — Compliance-Badge für Homepage
  • Datei: `compliance-badge.html`
  • Standalone HTML-Seite mit animiertem Compliance-Nachweis
  • Zähler-Animation (19 Fixes, 0 kritische Lücken, 100% konform)
  • Rotierendes Siegel (CRA · DSGVO · ISO 27001 READY)
  • Staggered Einblend-Animation aller Checkpunkte
  • Alle umgesetzten Maßnahmen und erstellten Dokumente aufgeführt
  • Einbindbar als eigenständige Seite oder als Komponente
  • Features
  • Neues Dashboard implementiert
  • Darkmode verbessert
  • Bugfixes
  • Login-Fehler behoben

Version 0.0.7 Alpha

18.03.2026
  • Geändert
  • index.html wurde in index.php umgewandelt, um serverseitiges Templating via PHP-Includes zu ermöglichen.
  • Die gesamte HTML-Struktur der Anwendung wurde modularisiert: Alle View-Bereiche, UI-Overlays und strukturelle Komponenten wurden aus der monolithischen index.php in eigenständige Partial-Dateien unter views/ ausgelagert.
  • Das inline enthaltene Login-Sicherheitsskript (Brute-Force-Schutz, Passwort-Reset-Logik, User-Display-Intervall) wurde in eine eigene Datei js/login.js extrahiert.
  • Hinzugefügt
  • Neue Dateistruktur unter views/:
  • loading-overlay.php = Lade-Overlay beim App-Startmodal.phpGlobales Modal-Overlay (Bearbeiten/Speichern)
  • login.php = Login-Formular inkl. Passwort-Reset-Formular
  • sidebar.php = Sidebar mit Navigation, Dark-Mode-Toggle, Logoutlang-selector.php = Sprachauswahl-Fenster (DE / EN / RU)
  • view-dashboard.php = Dashboard mit KPI-Karten, Charts, Admin-Bereich
  • view-waage.php = Wiegungserfassung und Wiegungs-Protokoll
  • view-produktion.php = Auftragserstellung und Produktionsprotokoll
  • view-logistik.php = LKW-Erfassung und Hofmanagement
  • view-lagerbestand.php = Lagerbestand buchen und einsehen
  • view-buchhaltung.php = Rechnungsarchiv und Rechnungs-Upload
  • view-auftrag.php = Auftragsdokument-Generator mit Live-Vorschau
  • view-tickets.php = Support-Ticket-System
  • view-zeiterfassung.php = Zeiterfassung, Schichtplaner, Urlaubsplaner, Abrechnung
  • view-stammdaten.php = Artikel, Chargennummern, Firmen, Anlagen, LKWs
  • view-settings.php = Systemeinstellungen, Lizenzverwaltung, Lizenzserverview-admin.php = Benutzerverwaltung und Rollenvergabe
  • Neue JS-Datei:
  • js/login.js = Brute-Force-Schutz, Passwort-Reset-Flow, User-Display-Intervall
  • Nicht geändert
  • Alle bestehenden JavaScript-Module (core.js, lang.js, masterdata.js, erp-modules.js, buchhaltung.js, zeiterfassung.js, schichtplaner.js, auftrag.js, loaddata.js) wurden nicht verändert.
  • Backend-Dateien (api.php, export_auftrag.php) wurden nicht verändert.
  • CSS (css/style.css) wurde nicht verändert.
  • Funktionalität, DOM-IDs und alle data-i18n-Attribute bleiben vollständig erhalten – kein Breaking Change für bestehende JS-Module.
  • Technische Details
  • index.php schrumpfte von 1.159 auf 115 Zeilen (−90 %).
  • Jeder View ist nun isoliert wartbar, ohne die restliche Datei zu berühren.
  • Neue Views oder Module können durch ein einzelnes <?php include 'views/view-neu.php'; ?> ergänzt werden.
  • Neue Dateien
  • `views/view-admin.php` – ersetzt die bisherige Datei; enthält jetzt eine Tab-Leiste mit zwei Tabs: **Benutzerverwaltung** (unverändert) und **Bezeichnungen & Felder** (neu)
  • `js/admin-labels.js` – neues JS-Modul, das den gesamten Bezeichnungen-Editor steuert
  • Neue Funktionen
  • Admins können ohne Programmieraufwand alle konfigurierbaren Dropdown-Werte direkt im Browser anpassen
  • Kategorien im Editor: **Logistik** (Einheiten, Vorgangstypen), **Lagerbestand** (Einheiten), **Produktion** (Eingangs-Einheiten), **Navigation & Module** (alle Sidebar-Namen)
  • Einträge können hinzugefügt, per Doppelklick umbenannt und einzeln gelöscht werden
  • Jede Kategorie lässt sich mit einem Klick auf die Original-Standardwerte zurücksetzen
  • Navigationsbezeichnungen werden sofort nach dem Speichern in der Sidebar übernommen, ohne Seitenreload
  • Alle Änderungen werden in der bestehenden `settings`-Tabelle unter dem Schlüssel `custom_labels` als JSON gespeichert
  • Toast-Benachrichtigungen bestätigen jede Aktion (Hinzufügen, Umbenennen, Löschen, Zurücksetzen)
  • Geänderte Dateien
  • `views/view-admin.php` – Tab-Navigation ergänzt; bestehende Benutzerverwaltung bleibt vollständig erhalten
  • `index.php` – Einbindung von `js/admin-labels.js` vor `</body>` erforderlich
  • `js/core.js` – `loadGlobalSettings()` muss um das Laden von `custom_labels` aus den API-Settings erweitert werden
  • Technische Hinweise
  • Das Modul patcht `loadMasterData()` automatisch beim Seitenstart, sodass angepasste Bezeichnungen nach jedem Datenladen sofort in alle Dropdowns übernommen werden
  • Bestehende Datensätze in der Datenbank werden nicht rückwirkend umbenannt; die neuen Bezeichnungen gelten nur für neu erfasste Einträge
  • Kompatibel mit dem bestehenden i18n-System (`t()`-Funktion); Nav-Label-Overrides werden automatisch eingehängt

Version 0.0.6 Alpha

17.03.2026
  • Bugfixes Lizenzmanagemt
  • hinzufügen eines Heartbeat der einen Lizenzaustausch ermöglicht, wenn der Server im Web verfügbar ist.
  • löschen und ändern von Lizenzen und deren Ablaufdatum

Version 0.0.5 Alpha

16.03.2026
  • Neu: Ladebildschirm (Loading Overlay)
  • Bei jedem Seitenaufruf, F5 / Strg+F5, Login und Seitenwechsel erscheint nun ein animierter Ladebildschirm
  • Der Ladebildschirm zeigt eine kontextabhängige Statusmeldung, die den aktuellen Ladeschritt beschreibt:
  • „System wird initialisiert"
  • „Sitzung wird geprüft"
  • „Stammdaten werden geladen"
  • „Dashboard wird aufgebaut"
  • „Seite wird geladen: [Modulname]"
  • „Daten werden aktualisiert" (beim „Neu laden"-Button)
  • Der Ladebildschirm blendet sich nach dem vollständigen Laden weich aus
  • Geänderte Dateien: index.html, core.js
  • Neu: Admin-Dashboard – Aktive Nutzer
  • Administratoren sehen im Dashboard ein neues Fenster mit allen aktuell angemeldeten Nutzern
  • Jeder Nutzer wird mit Name, Rolle und Zeitstempel der letzten Aktivität angezeigt
  • Grüner Punkt = aktiv (zuletzt gesehen < 2 Minuten), gelber Punkt = kurz inaktiv
  • Ein Heartbeat-Ping alle 30 Sekunden hält den Status automatisch aktuell
  • Beim Abmelden wird der Nutzer sofort aus der Aktivliste entfernt
  • Die Anzeige wird automatisch beim Laden des Dashboards aktualisiert
  • Neue Datenbanktabelle: user_sessions (wird automatisch angelegt)
  • Neue API-Endpunkte: update_heartbeat, get_active_users
  • Geänderte Dateien: index.html, core.js, loaddata.js, api.php
  • Neu: Admin-Dashboard – Systemprotokoll (Logs)
  • Administratoren sehen im Dashboard ein neues Fenster mit den letzten 50 Systemaktionen
  • Jeder Log-Eintrag zeigt: farbiges Icon je Aktionstyp, Beschreibung, Benutzername und Uhrzeit
  • Maximal 500 Einträge werden in der Datenbank gehalten (älteste werden automatisch gelöscht)
  • Neue Datenbanktabelle: system_logs (wird automatisch angelegt)
  • Neuer API-Endpunkt: get_logs
  • Geänderte Dateien: index.html, loaddata.js, api.php
  • Neu: Vollständiges Aktivitäts-Logging
  • Ab sofort wird jede schreibende Aktion im System automatisch protokolliert. Erfasst werden:
  • BereichAktionenAuthentifizierungLogin, Logout, Passwort ändern, Passwort zurücksetzenStammdatenFirma anlegen / ändern · Artikel anlegen / ändern · Maschine anlegen / ändern · LKW anlegen / ändernWaageWiegung speichern · Wiegung bearbeitenProduktionCharge speichern · Charge bearbeitenLogistikLKW erfassen · LKW-Status ändern · Logistik-Eintrag bearbeitenLagerbestandBestand erfassen · Bestand bearbeitenBuchhaltungRechnung hochladen · Rechnungsstatus ändern · Artikelpreise speichernZeiterfassungTerminal-Stempelung · Eintrag nachpflegen · Eintrag bearbeiten · Urlaub / Abwesenheit eintragen · Schichtplan speichern · Überstunden anpassenMitarbeiterAnlegen · BearbeitenBenutzerAnlegen · Rechte ändernTicketsErstellen · Status ändernSystemEinstellungen / Lizenzen speichern · Eintrag löschen (mit Tabellenname & ID)
  • Jeder Log-Eintrag enthält: Benutzername, Aktion, detaillierte Beschreibung und Zeitstempel
  • Geänderte Datei: api.php
  • Technische Hinweise
  • Alle Änderungen sind vollständig offline-fähig – keine externen CDN- oder Internetabhängigkeiten eingeführt
  • Die beiden neuen Datenbanktabellen (user_sessions, system_logs) werden beim ersten Aufruf automatisch angelegt – kein manuelles SQL-Script notwendig
  • Das Logging schlägt nie fehl: Fehler beim Schreiben eines Log-Eintrags blockieren nie die eigentliche Hauptfunktion

Version 0.0.4 Alpha

12.03.2026
  • Dashboard & Systemstabilität (Bugfixes)
  • Robuster Datenlader: Das Dashboard stürzt nicht mehr ab, wenn Module gesperrt sind oder noch gar keine Daten enthalten. Diagramme (chart.js) wurden in Schutz-Routinen (try...catch) gekapselt.
  • Lizenz-Awareness im Dashboard: Sind Module nicht lizenziert, zeigen die entsprechenden KPI-Karten (z. B. "Gewogenes Material" oder "Letzte Chargen") nun elegant ein rotes Schloss-Symbol (🔒) oder den Text "Modul gesperrt" an, anstatt zu Fehler zu führen.
  • Settings-Routing Fix: Behebung eines Fehlers, bei dem das Einstellungs-Menü nicht geladen wurde, da der zugehörige HTML-Container fehlte.
  • Benutzeroberfläche (UI) & Navigation
  • Smarte Lizenz-Ampel (Sidebar): Administratoren sehen in der Seitenleiste nun einen einklappbaren Lizenz-Status-Button.
  • Grün: Alle Lizenzen gültig.
  • Gelb: Mindestens eine Lizenz läuft in unter 30 Tagen ab.
  • Rot: Mindestens eine Lizenz ist abgelaufen oder ungültig.
  • Detaillierte Ansicht der einzelnen Module fährt auf Klick sanft nach unten aus.
  • Gesperrte Menüpunkte: Fehlende Module werden im Hauptmenü nun ausgegraut und mit einem roten Schloss markiert. Ein Klick darauf öffnet einen Hinweis-Dialog.
  • Versionsanzeige: Dezente, halbtransparente Anzeige der aktuellen Versionsnummer (v1.1.0) unten rechts im Bildschirm eingefügt.

Noch Fragen?

Schreiben Sie uns gerne eine allgemeine Nachricht.

Neuigkeiten & Updates

Aktuelle Beiträge aus unserem Blog.

17.03.2026

Achtung, Aufbau!

Wichtiger Hinweis, diese Seite befindet sich noch im Aufbau! Ein Kauf ist noch nicht möglich. Beta Testanmeldungen sind gern gesehen.

Weiterlesen
12.03.2026

Was ist PolyCore?

Effiziente Softwarelösungen für kleine Kunststoffbetriebe Im betrieblichen Alltag zeigt sich häufig, dass Softwarelösungen mit hohen Kosten und

Weiterlesen

PolyCore Newsletter

Verpassen Sie keine Updates, neuen Funktionen und Experten-Tipps zur Digitalisierung mehr.