Direkt oder mit Untermenü
Häufige eindeutige Vorgänge werden mit einem Fingertipp gebucht. Eine Hauptschaltfläche kann für genauere Fälle große Folgeschaltflächen öffnen.
PROGRAMMBESCHREIBUNG · INSTALLATION · BEDIENUNG
Ein frei konfigurierbares, lokal betriebenes Erfassungs- und Auswertungswerkzeug für große Touchflächen. Vorgänge werden schnell gebucht und anschließend nachvollziehbar ausgewertet.
01 · GRUNDLAGEN
CountPilot erfasst wiederkehrende Vorgänge mit großen Schaltflächen. Die mitgelieferte Konfiguration richtet sich an einen IT-Servicepunkt; Vorlagen für Lager, Empfang, Werkstatt und Pflege sind ebenfalls enthalten.
Die Anwendung besteht aus einer Browseroberfläche und einem lokalen Python-Server. Konfiguration, aktueller Tagesstand, Ereignisse, Tagesarchiv, Wochenberichte und Sicherungen liegen im CountPilot-Ordner. Ein Cloudkonto, eine externe Datenbank oder eine Internetverbindung sind für den Betrieb nicht erforderlich.
Dieses Handbuch beschreibt Version 1.3.1 mit Dokumentationsstand 20.08.2026. Die Nummer folgt dem Schema MAJOR.MINOR.PATCH: Grundlegende inkompatible Änderungen erhöhen MAJOR, neue kompatible Funktionen MINOR und Korrekturen PATCH.
Häufige eindeutige Vorgänge werden mit einem Fingertipp gebucht. Eine Hauptschaltfläche kann für genauere Fälle große Folgeschaltflächen öffnen.
Die Zahl der Erfassungen ist nicht begrenzt. Schnelle Eingaben landen in einer sichtbaren Warteschlange.
Vorgänge, Untermenüs, Name, Symbol, Farbe, Reihenfolge, Raster und Planzeiten sind ohne Programmänderung konfigurierbar.
Standardzeiten liefern geschätzten Aufwand. CountPilot misst keine echte Bearbeitungsdauer. Die optionale Mitarbeitererfassung ordnet Vorgänge einem Namen zu, bleibt aber ausdrücklich keine Arbeitszeiterfassung.
index.html nicht per Doppelklick als Einzeldatei öffnen. Die korrekte Adresse lautet standardmäßig http://127.0.0.1:8080/.
02 · EVALUIERUNG UND ERSTER START
Diese Ausgabe darf von Unternehmen, juristischen Personen des öffentlichen Rechts und öffentlich-rechtlichen Sondervermögen intern geprüft, vorgeführt und eingerichtet werden. Verbraucher dürfen die Evaluierungsversion nicht nutzen. Für einen dauerhaften produktiven Betrieb ist sie nicht lizenziert.
Beim ersten Start erscheint vor der Bedienoberfläche ein zweisprachiger Lizenzdialog. Beide Kontrollfelder sind zunächst leer. Der Nutzer bestätigt, dass er CountPilot für eine berechtigte Organisation einsetzt, und nimmt die vollständige Evaluierungslizenz an. Erst danach öffnet sich die Hauptansicht. Bis dahin blockiert der Python-Server Buchungen und administrative Änderungen, selbst wenn eine API-Adresse direkt aufgerufen wird.
Die 30 Tage beginnen mit dieser erstmaligen ausdrücklichen Annahme. CountPilot speichert Beginn und Ende ausschließlich lokal in license_acceptance.json. Es gibt weder Registrierung noch Benutzerkonto, Online-Aktivierung, Telemetrie, Hersteller-Cloud oder Verbindung zu einem Lizenzserver. Die Annahmedatei enthält keine Namen, E-Mail-Adresse, IP-Adresse, Benutzernamen, Rechnernamen, Unternehmensangaben oder Browsermerkmale.
Nach Ablauf erscheint ein deutlicher Hinweis. CountPilot löscht keine Daten und sperrt weder Buchungen, Auswertungen noch Exporte. Das kostenlose Nutzungsrecht endet trotzdem. Für einen dauerhaften produktiven Einsatz ist eine gesonderte Nutzungsvereinbarung mit IT-Service Kühne erforderlich. Maßgeblich ist LICENSE.txt.
CountPilot kann Softwarefehler enthalten. Buchungen, Zählerstände, Archive, Auswertungen, Exporte oder Berechnungen können unter technischen Umständen fehlerhaft, unvollständig, verspätet oder verloren sein. Standardzeiten, Kapazitäten, Auslastungen und Personalbedarfswerte sind Planungs- und Schätzwerte. Sie messen keine tatsächliche Arbeitszeit. Prüfen Sie Ergebnisse vor wesentlichen Entscheidungen auf Plausibilität und verwenden Sie die Evaluierung nicht als einzige Aufbewahrungsstelle geschäftskritischer Daten.
03 · TAGESBETRIEB
Jede Berührung erhält schon im Browser eine zufällige, eindeutige Ereignis-ID. Bricht die Verbindung nach dem Senden ab, wiederholt der Browser genau diese Anfrage einmal. Der Server erkennt dieselbe ID und zählt sie nicht doppelt.
Der große Schalter links vom VIP-Feld wechselt zwischen „Allgemein“ und „Mitarbeiter“. Im allgemeinen Modus bleibt der Ablauf unverändert; die Buchung enthält keinen Technikernamen. Im Mitarbeitermodus erscheinen zuerst Namenskacheln. Nach der Auswahl zeigt CountPilot die normalen Vorgangsschaltflächen. Eine erfolgreich gespeicherte Buchung springt automatisch zur Namensauswahl zurück.
Bei einem Speicherfehler bleibt der gewählte Techniker aktiv, damit die Buchung kontrolliert wiederholt werden kann. Während eine Mitarbeiterbuchung gespeichert wird, sperrt die Oberfläche weitere Vorgangstasten. Rückgängig erzeugt eine Gegenbuchung mit derselben Mitarbeiter-ID. VIP und Untermenüs funktionieren in beiden Modi.
Eine Hauptschaltfläche mit dem Hinweis „Unterpunkte“ bucht noch nichts. Sie öffnet einen zweiten, touchgerechten Auswahlschritt. Erst die dort gewählte Folgeschaltfläche erhöht ihren eigenen Zähler und wird mit eigener Ereignis-ID, Bezeichnung sowie Standardzeit gespeichert. „Zurück ohne Buchung“ oder das Schließen-Symbol beendet die Auswahl ohne Zählung.
| Hauptschaltfläche | Folgeschaltflächen |
|---|---|
| Ausgabe Laptop | Laptop · Übergabe zur Installation, Reparatur oder sicheren Löschung |
| Ausgabe PC / Workstation | PC / Workstation · Übergabe zur Installation, Reparatur oder sicheren Löschung |
| Rückgabe Laptop | Laptop ins Lager oder zur Entsorgung |
| Rückgabe PC / Workstation | PC / Workstation ins Lager oder zur Entsorgung |
Die Zahl auf der Hauptschaltfläche zeigt den heutigen Gesamtstand ihrer Unterpunkte einschließlich möglicher älterer Direktbuchungen. In Auswertungen bleiben die Folgevorgänge getrennt. Ist VIP vorher aktiv, bleibt es während der Untermenüauswahl aktiv und wird auf den gewählten Folgevorgang angewendet.
VIP allein ist kein Vorgang, zählt nicht und besitzt keine Planzeit. „Meetingbetreuung / Konferenztechnik“ ist in der IT-Vorlage als ungeplante Soforthilfe vorbelegt.
Das Raster passt Größe und Zahl der Spalten an Browserfenster und Vollbild an. Die konfigurierten Schaltflächen füllen die nutzbare Fläche. „Sonstiger Vorgang“ bleibt fest im letzten Feld rechts unten und öffnet alle aktiven Vorgänge, die nicht direkt auf der Startseite liegen. Unterpunkte erscheinen ausschließlich im zugeordneten Untermenü.
„Vollbild“ aktiviert den vom Browser bereitgestellten Webseiten-Vollbildmodus. Im aktiven Zustand heißt dieselbe Schaltfläche „Vollbild verlassen“ und führt zurück zum normalen Browser- oder Appfenster. Ein von außen mit einem Browserparameter erzwungener Kioskmodus kann von einer Webseite dagegen nicht beendet werden.
DE und EN wechseln Oberfläche, Menüs, Meldungen und die zentral gepflegten deutschen beziehungsweise englischen Feldnamen. Nur die Sprachwahl wird lokal im Browser gespeichert. Zwei Touch-PCs können deshalb gleichzeitig unterschiedliche Sprachen anzeigen, ohne Zähler oder Konfiguration gegenseitig umzuschalten.
Die Kopfzeile enthält einen frei zugänglichen Link zu diesem Handbuch. Ton und Vollbild sind optional. „Rückgängig“ gilt nur für eigene Buchungen der aktuellen Browser-Sitzung am laufenden Tag.
04 · GESCHÜTZTER BEREICH
Beim ersten Öffnen wird eine PIN mit 4 bis 12 Ziffern eingerichtet. admin.json speichert Salt und PBKDF2-SHA-256-Hash mit 310.000 Durchläufen, keinen lesbaren PIN-Text. Fünf falsche Versuche innerhalb von fünf Minuten sperren weitere Anmeldungen für fünf Minuten. Eine erfolgreiche Sitzung läuft nach acht Stunden ohne autorisierte Aktivität ab.
„Vorgang hinzufügen“ erzeugt ein neues Feld. Bearbeitbar sind Feldnamen auf Deutsch und Englisch, Arbeitsbereich, Standardzeit von 0 bis 480 Minuten, Symbol, Farbe, Startseitenanzeige, SOFORT-Vorgabe, Aktivstatus und Untermenü-Zuordnung. Die Auswahl enthält Symbole für IT-Hardware, Ausgabe und Rückgabe, Anwenderfragen, Lager, Empfang, Werkstatt, Materialausgabe, Medizin, Pflege, Installation, Reparatur, Erase, Entsorgung, Zubehör und Paketannahme.
„Vorgang aktiv“ steuert, ob ein Feld überhaupt gebucht werden kann. Wird es deaktiviert, verschwindet es aus der Bedienoberfläche. Es wird nicht gelöscht: Feld-ID, bisherige Ereignisse und historische Auswertbarkeit bleiben erhalten. „Auf Hauptansicht anzeigen“ betrifft dagegen nur die direkte Touchfläche; ein aktiver Vorgang ohne diese Markierung bleibt unter „Sonstiger Vorgang“ erreichbar.
Nach „Felder bearbeiten“ erscheint oberhalb des Rasters eine ständig sichtbare Bearbeitungsleiste. Ein Antippen einer Kachel öffnet weiterhin deren Felddialog. Aktive Hauptkacheln tragen zusätzlich einen hellen Ziehgriff: den Griff mit Finger oder Maus halten, auf die gewünschte Hauptkachel ziehen und dort loslassen. CountPilot speichert die geänderte Startreihenfolge sofort. Unterpunkte, deaktivierte Felder, VIP und „Sonstiger Vorgang“ lassen sich auf diesem Weg nicht verschieben.
„Bearbeiten beenden“ in derselben Leiste führt direkt zur normalen Erfassungsansicht zurück; das Adminmenü muss dafür nicht erneut geöffnet werden. Für eine genaue Positionswahl oder eine Bedienung ohne Ziehbewegung bleibt „Startseite anordnen“ im Adminmenü erhalten. Dort stehen Positionsnummern und Pfeiltasten bereit.
Alternativ lässt sich bei jedem normalen vorhandenen Vorgang im Feld „Untermenü-Zuordnung“ eine bestehende Hauptschaltfläche auswählen. Eine Hauptschaltfläche mit zugeordneten Unterpunkten wird automatisch zum reinen Auswahlschritt; ihre Standardzeit wird für neue Buchungen nicht verwendet. Ein Untermenü kann bis zu 24 aktive oder archivierte Unterpunkte enthalten. Verschachtelte Untermenüs, Kreiszuordnungen sowie Untermenüs an VIP oder „Sonstiger Vorgang“ lehnt der Server ab.
Zum Auflösen einer Zuordnung den Unterpunkt bearbeiten und „Direkt buchen oder als Hauptschaltfläche verwenden“ wählen. Deaktivieren archiviert nur den einzelnen Unterpunkt. Wird die Hauptschaltfläche deaktiviert, sind ihre Unterpunkte in der Bedienoberfläche nicht erreichbar, bleiben aber gespeichert und auswertbar.
VIP und „Sonstiger Vorgang“ sind feste Systemfelder. Sie können umbenannt, gestaltet und mit einem Symbol versehen werden, bleiben aber aktiv und behalten ihre besondere Funktion. Die Reihenfolge der Startseite wird zeilenweise festgelegt; „Sonstiger Vorgang“ bleibt rechts unten. Das gilt sowohl beim Ziehen im Bearbeitungsmodus als auch bei der Positionswahl im Adminmenü.
„Konfiguration exportieren“ lädt eine JSON-Datei mit Anwendungstitel, Feldern, Untermenü-Zuordnungen, Layout, Einstellungen, Personalplänen und Technikernamen samt Stundenprofilen. Zähler, Ereignisse, PIN und Archive sind nicht enthalten. Die Konfigurationsdatei kann personenbezogene Daten enthalten und muss entsprechend geschützt werden. Beim Import werden passende Feld-IDs aktualisiert. Nicht enthaltene vorhandene Felder werden deaktiviert statt gelöscht.
Fünf Vorlagen stehen bereit: IT-Service, Lager, Empfang, Werkstatt und Pflege / Station. Die IT-Service-Vorlage enthält die neutrale Geräte- und Zubehör-Untermenüs für Weiterbearbeitung, Lager, Entsorgung, Ausgabe und Rückgabe. Beim Laden einer Vorlage werden deren Vorgänge aktiviert und andere normale Vorgänge archiviert. Bestehende Zähler und Ereignisse bleiben über ihre IDs erhalten. Vor einem Import oder Vorlagenwechsel erscheint eine Bestätigung.
„Techniker verwalten“ legt Anzeigenamen und individuelle Arbeitsstunden für Montag bis Sonntag an. Vollständiger Name, Vorname oder intern vereinbarte Initialen sind möglich. Aus Datenschutzgründen sollte die am wenigsten personenbeziehbare, betrieblich noch eindeutige Bezeichnung verwendet werden. Jeder Techniker erhält intern eine dauerhafte ID; eine spätere Umbenennung trennt historische Daten deshalb nicht künstlich.
Stundenstände besitzen ein „Gültig ab“-Datum. Ein neuer Stand ergänzt die Historie, derselbe Stichtag wird ersetzt. Deaktivieren blendet die Namenskachel aus und schreibt ab dem gewählten Datum einen Nullstundenplan. Gelöscht wird der Techniker nicht. Das schützt ältere Ereignisse und Auswertungen.
Im neutralen Auslieferungszustand sind keine realen Personen als Technikerprofile hinterlegt. Ein reines Demonstrationspaket darf neutrale Beispiele wie „Techniker 1“, „Techniker 2“ oder „Techniker 3“ enthalten; diese besitzen keinen Bezug zu tatsächlichen Beschäftigten und müssen vor dem Produktivbetrieb entfernt, deaktiviert oder durch die vor Ort freigegebenen Bezeichnungen ersetzt werden.
Für jedes produktive Profil werden Name oder Kürzel, Aktivstatus, das Datum „Gültig ab“ und die vorgesehenen Stunden für Montag bis Sonntag gespeichert. Abweichende Wochenstunden oder spätere Vertragsänderungen werden als neuer Stundenstand mit einem neuen Stichtag angelegt. Die Auswertung verwendet für jeden Tag den damals gültigen Stand. Profile können daher parallel verschiedene tägliche und wöchentliche Arbeitszeiten besitzen.
Der Anwendungsname ändert Überschrift und Browser-Tab. Das Raster erlaubt 2 bis 8 Optionen je Reihe und 1 bis 20 Reihen. Der optionale Ton bestätigt eine erfolgreiche Buchung. Die manuelle Tagesrücksetzung verlangt den exakten aktuellen Gesamtstand und einen Grund mit mindestens drei Zeichen; sie setzt nur die sichtbare Tagesanzeige zurück und protokolliert den Eingriff.
Der PIN-geschützte Systemstatus zeigt Serverlaufzeit, letzten Datenschreibvorgang, letzte Sicherung, freien und gesamten Speicher, Bind-Adresse sowie Größe und Änderungszeit der Datendateien. Die Seite aktualisiert sich alle 30 Sekunden.
05 · PERSONALPLANUNG
Planwerte erhalten ein „Gültig ab“-Datum. Individuelle Stunden für September überschreiben damit nicht die Kapazität von Juni.
Sobald für einen Tag wirksame Techniker-Stundenprofile vorhanden sind, berechnet CountPilot die Kapazität aus deren Summe. Die Zielauslastung des allgemeinen Personalplans wird darauf angewendet. Für Zeiträume vor dem ersten individuellen Profil greift der bisherige Plan mit produktiven Stunden je Techniker, geplanter Technikerzahl, Schichtmodell und Zielauslastung als Rückfallwert.
Die Berechnungsbasis für den Personalbedarf ist wählbar: Arbeitstage Montag bis Freitag, Öffnungstage mit geplanter Technikerzahl größer null oder aktive Tage mit mindestens einer Erfassung. Der gewählte Modus steht sichtbar an der Kennzahl. Nullbuchungen an Öffnungstagen senken bei „Öffnungstage“ die errechnete Auslastung; das ist beabsichtigt und macht Erfassungslücken sichtbar.
CountPilot kennt weder Urlaub noch Krankheit, Qualifikation, parallele Aufgaben, Wartezeit oder echte Bearbeitungsdauer. Standardzeiten, Zielauslastung und Datenvollständigkeit müssen vor Personalentscheidungen fachlich geprüft werden.
06 · AUSWERTUNG
Im Adminmenü stehen „Detaillierte Auswertung“ und „Tages- und Wochenzahlen“ getrennt bereit. Beide Seiten sind PIN-geschützt, starten mit 28 Tagen und akzeptieren Zeiträume bis zehn Jahre. Sie zeigen Gesamtvorgänge, Planaufwand, SOFORT, VIP, Zielkapazitätsauslastung und rechnerischen Personalbedarf.
Diese datenschutzreduzierte Ansicht zeigt Summen je Kalendertag und ISO-Kalenderwoche, Wochenvergleich, Kapazität sowie Datenvollständigkeit. Angefangene Wochen werden nur innerhalb des gewählten Zeitraums berechnet.
Diese Ansicht ergänzt Vorgangsarten, Stundenverteilung, Wochentag-Stunden-Raster und eine Mitarbeitertabelle. Der Export der Einzelereignisse enthält die genaue Auslösezeit jeder Buchung und Gegenbuchung sowie, falls gewählt, Mitarbeiter-ID und Namensstand.
Im verdichteten Modus überträgt der Server keine Uhrzeitverteilung, keine Tagesspitzen, keine Vorgangsarten, keine Mitarbeiterdaten und keine Einzelereignisse an den Browser. Die Bereiche werden also nicht lediglich optisch ausgeblendet.
Für Personal- und Ressourcenplanung sollte die verdichtete Ansicht der Normalfall sein. Die Detailansicht ist für begründete Betriebsanalysen vorgesehen, etwa zur Prüfung echter Lastspitzen.
Im Mitarbeitermodus speichert CountPilot die Techniker-ID und den beim Buchen gültigen Anzeigenamen. Diese Daten erlauben direkte Rückschlüsse auf Beschäftigte. Der allgemeine Modus und die verdichtete Tages- und Wochenauswertung bleiben ohne Namenszuordnung. Zugriff, Zweck, Aufbewahrung, Export und Weitergabe der Detaildaten müssen organisatorisch beschränkt und mit Datenschutz sowie Arbeitnehmervertretung abgestimmt werden.
| Export | Inhalt | Modus |
|---|---|---|
| Tages- und Wochenzahlen | Eine Zeile je Tag und eine Zeile je Kalenderwoche mit Summen, Planstunden, Kapazität, Auslastung, SOFORT, VIP, aktiven Tagen und Datenqualität. Keine Auslösezeit, Vorgangsart, Ereignis-ID oder Sitzung. | Verdichtet |
| Gesamtarchiv | Eine verdichtete Zeile je Tag seit Beginn, einschließlich des aktuellen noch laufenden Tages. Das Original tagesarchiv.csv bleibt im CountPilot-Ordner. |
Detailliert / Adminmenü |
| Planungsdaten | Eine Zeile je Datum, Vorgang und Erfassungszuordnung mit Anzahl, Planminuten, VIP, SOFORT, Modus, optionaler Mitarbeiter-ID, verwendeter Standardzeit und Datenqualität. | Detailliert |
| Mitarbeiterauswertung | Summen je Mitarbeiter beziehungsweise Modus mit Vorgängen, Planminuten, individueller Zielkapazität, Auslastung, VIP und SOFORT. Allgemeine und historische Daten stehen getrennt ohne Namen. | Detailliert |
| Einzelereignisse | Jede Buchung und Gegenbuchung mit genauer Auslösezeit, Ereignis-ID, Sitzung, Erfassungsmodus, optionaler Mitarbeiter-ID und Namensstand, Merkmalen, damaliger Standardzeit und Quelle. | Detailliert |
| Wochenreport | Montag bis Sonntag sowie Gesamtzeile mit Vorgangsdetails. Der Dateiname enthält Kalenderwoche und Jahr. | Detailliert |
Downloads sind Kopien im Standard-Downloadordner des Browsers. Die fortgeschriebenen Originale bleiben im CountPilot-Ordner. Beim Wechsel von Sonntag auf Montag erzeugt der Server den detaillierten Wochenreport. Ist der automatische Browser-Download aktiv und die CountPilot-Seite geöffnet, wird anschließend eine Kopie heruntergeladen.
Bei Einzelereignissen verwendet jede Zeile die tatsächlich beim Buchen gespeicherte Standardzeit. Kamen für denselben Vorgang am selben Tag verschiedene Zeiten vor, steht im Feld ausdrücklich „gemischt / mixed“ samt Werten. Historische Tageswerte besitzen keine damalige Standardzeit; jede betroffene CSV-Zeile trägt deshalb den Text „rekonstruiert mit heutiger Standardzeit / reconstructed using current standard time“.
07 · SPEICHERUNG UND SICHERHEIT
Der Server schreibt eine Buchung zuerst als neue Zeile in events.csv und aktualisiert danach state.json atomar. Die Zeile enthält den Erfassungsmodus sowie im Mitarbeitermodus eine stabile Techniker-ID und den Namensstand. Prozessinterne Sperren ordnen gleichzeitige Anforderungen. Normale Zustandsabfragen schreiben state.json nur dann neu, wenn Migration, Datumswechsel oder eine echte Korrektur etwas verändert hat.
Beim ersten Start von Version 1.2.0 erweitert der Server das bisherige Ereignisprotokoll atomar um die drei Spalten capture_mode, technician_id und technician_name. Alte Buchungen werden als „historisch ohne Zuordnung“ markiert. Vorher entsteht unter backups/schema_8_event_migration_* eine eigene Kopie der alten Datendateien, auch wenn die normale Tagessicherung schon vorhanden ist.
Nach einem Datumswechsel wird der Vortag zuerst als zusätzliche Zeile in tagesarchiv.csv geschrieben. Erst danach setzt der Server die sichtbaren Zähler zurück. Der archivierte Wert ist deshalb nicht null. Vorhandene Archivtage werden nicht überschrieben.
Der Server decodiert und normalisiert jeden URL-Pfad vollständig. Danach liefert er ausschließlich die Programmoberfläche, das Handbuch, die ersten Schritte, die Lizenz, die drei Reportdateien, die drei Statusdateien, die rechtlichen Hinweise, das Herausgeberlogo und die vorgesehenen Browser- beziehungsweise Apple-Symbole aus. Alle anderen statischen Pfade enden mit 404. Das gilt auch für codierte oder mehrfach codierte Namen.
state.json, events.csv, tagesarchiv.csv, admin.json, server.py, Sicherungen, Protokolle und Startdateien werden nie direkt als statische Browserdateien ausgeliefert. Freigegebene Daten verlassen den Server nur über die vorgesehenen, meist PIN-geschützten APIs.
.counter.lock enthält PID, Adresse, Port und Startzeit. Eine echte Betriebssystem-Sperre gilt für die gesamte Prozesslaufzeit. Ein zweiter Start aus demselben CountPilot-Ordner endet sofort mit einer verständlichen Meldung. Nach einem Absturz darf die Datei liegen bleiben; die Betriebssystem-Sperre wird freigegeben und der nächste Start überschreibt die veralteten Angaben.
Der Server bietet kein HTTPS, keine zentralen Benutzerkonten und keine Absicherung für öffentliche Netze. Port 8080 niemals am Internetrouter weiterleiten. Auf dem lokalen Rechner bleiben JSON- und CSV-Dateien unverschlüsselt; Betriebssystemkonto, Datenträger und Sicherungen müssen geschützt werden.
08 · WINDOWS 11
start_counter_windows.bat doppelklicken. Der Server läuft im Hintergrund; Microsoft Edge öffnet nach Möglichkeit als maximiertes Appfenster. Ohne Edge öffnet sich der Standardbrowser.stop_counter_windows.bat doppelklicken.Die aktuelle Windows-Startdatei verwendet bewusst keinen Edge-Kioskparameter. Ein echter Browser-Kioskmodus lässt sich aus Sicherheitsgründen nicht über eine Schaltfläche der Webseite verlassen. Öffnet eine ältere Startdatei Edge weiterhin mit --kiosk, muss start_countpilot_windows.ps1 aktualisiert oder das Fenster mit Alt+F4 beendet werden.
Der manuelle Kontrollstart bleibt möglich:
cd "C:\Users\Name\Desktop\CountPilot"
py server.py --open-browser
Mit Ctrl+C beenden. install_autostart_windows.bat legt über die Windows-Aufgabenplanung einen Start bei Anmeldung an. uninstall_autostart_windows.bat entfernt diese Aufgabe. Die Installation verändert keine Zählerdaten.
Bei einem fest installierten Touch-PC sollte die zuständige IT Browserzugriff, Energiesparmodus, automatische Anmeldung und die private Firewallregel passend einrichten. Die Aufgabenplanung ist optional. Testen Sie vorher mehrere normale Starts und Stopps.
09 · MACOS
python3 --version im Terminal prüfen. Fehlt Python, Python 3 von python.org installieren.
start_counter_macos.command doppelklicken. macOS kann beim ersten Mal „Öffnen“ über das Kontextmenü verlangen../start_counter_macos.command --kiosk.stop_counter_macos.command beendet genau den Prozess aus diesem CountPilot-Ordner.Der optionale install_autostart_macos.command legt local.touchcounter.server.plist in ~/Library/LaunchAgents an und lädt ihn. Der LaunchAgent startet lokal auf 127.0.0.1, öffnet den Browser und hält den Server aktiv. uninstall_autostart_macos.command entlädt ihn und verschiebt die plist in den Papierkorb.
Manueller Start:
cd "/Users/name/Desktop/CountPilot"
python3 server.py --open-browser
Im Terminal mit Control+C beenden, nicht mit Command+C. counter_server.log enthält Meldungen der Hintergrundstarts und wird nicht über den Webserver ausgeliefert.
10 · LINUX UND NETZWERK
Unter Linux oder Raspberry Pi OS:
cd /home/user/counter
python3 server.py --open-browser
Ohne zusätzliche Option bindet der Server ausschließlich an 127.0.0.1. Das ist die empfohlene Einstellung für einen einzelnen Touch-PC.
Nach der Umstellung auf die Positivliste kann ein bewusst geplantes, geschütztes LAN verwendet werden:
python3 server.py --host 0.0.0.0 --port 8080
Dann können andere Geräte über die lokale IP zugreifen. Die tägliche Buchungsoberfläche hat absichtlich keine Anmeldung; jeder erreichbare Teilnehmer kann Vorgänge buchen. Administration, Exporte, Status und Auswertungen verlangen die PIN. Netzwerksegmentierung und Firewall müssen Port 8080 auf vertrauenswürdige Geräte beschränken.
Mehrere Bediengeräte dürfen unterschiedliche Sprachen verwenden. Feldnamen, Zähler und Konfiguration bleiben zentral. Der Erfassungsmodus wird mit jeder Buchung übermittelt; allgemeine Buchungen und Buchungen im Mitarbeitermodus können parallel vorkommen. Aktive Technikernamen werden an jedes Gerät übertragen, das die ungeschützte lokale Buchungsoberfläche erreichen kann, damit die Namenskacheln angezeigt werden. Netzwerkzugriff, Bildschirmstandort und Namensform müssen deshalb bewusst festgelegt werden. Mitarbeiterdaten dürfen nicht ohne festgelegten Zweck für eine verdeckte individuelle Leistungskontrolle verwendet werden.
11 · SICHERUNG UND UMZUG
Vor der ersten Datenänderung jedes Kalendertags legt CountPilot backups/JJJJ-MM-TT an. Gesichert werden Zustand, Ereignisse, Tagesarchiv, PIN-Datei, die lokal erzeugte Lizenzannahme und Wochenreports. Pro Datum entsteht höchstens ein automatischer Stand. Alte Sicherungsordner werden nicht automatisch gelöscht.
Der Systemstatus zeigt Zeitpunkt der letzten Sicherung und freien Speicher. Die automatische Sicherung innerhalb von CountPilot schützt nicht vor Defekt, Verlust, Diebstahl oder Beschädigung des gesamten Rechners beziehungsweise Datenträgers.
state.json, events.csv, tagesarchiv.csv, admin.json, license_acceptance.json und die Wochenreports kontrollieren, soweit diese Dateien bereits vorhanden sind.Windows, macOS und Linux verwenden dieselben Daten. Die Startdateien unterscheiden sich. Für den Tagesbetrieb ist eine interne SSD deutlich geeigneter als ein langsamer USB-Stick.
12 · FEHLERBEHEBUNG
Die Einzelinstanz-Sperre arbeitet korrekt. Den vorhandenen Browser verwenden oder den Server mit der Stop-Datei beenden. Eine liegen gebliebene .counter.lock-Datei nach einem Absturz blockiert allein keinen Neustart.
Port 8080 wird von einem anderen Programm oder einer CountPilot-Kopie in einem anderen Ordner benutzt. Diesen Prozess beenden oder testweise python3 server.py --port 8081 beziehungsweise py server.py --port 8081 starten.
Weitere Eingaben stoppen. Serverlauf und freien Speicher über den Systemstatus prüfen. Bleibt die Warteschlange stehen, Browser und Server kontrolliert neu starten. Dieselbe Ereignis-ID verhindert bei der eingebauten Wiederholung eine Doppelzählung; nach einem kompletten Browserneustart sollte eine unklare Buchung im Ereignisprotokoll geprüft werden.
Das ist der beabsichtigte Pfadschutz. Nur freigegebene Seiten, Skripte, Styles und Symbole sind statisch erreichbar.
Browser vollständig neu laden und prüfen, aus welchem CountPilot-Ordner der Server gestartet wurde. CountPilot verwendet versionierte Dateinamen für Tab-, Safari- und Touch-Symbole. Dadurch kann Safari kein älteres Symbol desselben Dateipfads weiterverwenden. Bleibt ein grauer Buchstaben- oder Zahlenplatzhalter sichtbar, den betroffenen Tab schließen und CountPilot in einem neuen Tab öffnen. Mehrere Ordnerkopien sind ebenfalls eine häufige Ursache.
Systemdatum, Uhrzeit und Zeitzone des Serverrechners vor weiteren Buchungen korrigieren. Diese Werte bestimmen Ereigniszeit, Tageswechsel und ISO-Kalenderwoche.
Server beenden, admin.json als Sicherung aus dem CountPilot-Ordner verschieben, neu starten und eine neue PIN einrichten. Keine Ereignis- oder Zustandsdatei löschen.
13 · PROGRAMMORDNER
Browser-Downloads wie gesamtarchiv.csv, planung_*.csv, mitarbeiterauswertung_*.csv, ereignisse_*.csv und countpilot_konfiguration_*.json sind Kopien. Detail-, Mitarbeiter- und Konfigurationsexporte können personenbezogene Daten enthalten. Die fortgeschriebenen Originaldaten verbleiben im CountPilot-Ordner.
AKTUELLE IT-KONFIGURATION
Die Hauptansicht der IT-Vorlage verwendet fünf Spalten und fünf Reihen. Reihe 1 enthält Laptop-Ausgabe, Laptop-Rückgabe, PC-/Workstation-Ausgabe, PC-/Workstation-Rückgabe und Hardware-Störung. Reihe 2 enthält Smartphone-Ausgabe, Smartphone-Rückgabe, Smartphone-Installation, SIM / Vertrag und Firmenaustritt. Reihe 3 enthält Monitor-Ausgabe, Monitor-Rückgabe, Zubehör-/Hardware-Ausgabe, Zubehör-/Hardware-Rückgabe und Paket-/Lieferungsannahme. In Reihe 4 folgen Ticketstatus, Bestell-/Lieferstatus, allgemeine User-Frage, Beratung sowie Zugang / Passwort / MFA. Reihe 5 enthält SSO / Zutrittskarte, Software / Anwendung, Netzwerk / WLAN / VPN, Meetingbetreuung / Konferenztechnik und rechts unten „Sonstiger Vorgang“. VIP-Support bleibt als Zusatzmerkmal im oberen Bedienbereich.
„Rückgabe Smartphone / Handy“ öffnet „Smartphone ins Lager“ und „Smartphone zur Entsorgung“. „Installation Smartphone“ ist eine eigene direkte Schaltfläche mit 30 Minuten Standardzeit.
„Paket- / Lieferungsannahme“ erfasst eingegangene Pakete und Lieferungen direkt. Die voreingestellte Standardzeit beträgt 5 Minuten.
Die Hauptschaltfläche öffnet 16 eigenständig gezählte Ausgaben: Dockingstation, Keyboard-/Mouse-Set, Mouse, RAM, HDD / SSD, Rucksack / Tasche, Laptopschloss, Headset, Ladegerät Laptop, Ladegerät Smartphone, DP-, HDMI- und USB-C-Kabel, Webcam, Ersatzteile und sonstiges Zubehör.
Die Rückgabe enthält dieselben 16 Komponenten als getrennte Rückgabevorgänge. Für jeden Zubehörvorgang sind 5 Minuten vorbelegt.
Große Untermenüs erscheinen auf einem Full-HD-Touchbildschirm als Raster mit vier Spalten. Erst die gewählte Komponente wird gebucht. Alle Bezeichnungen, Symbole und Standardzeiten bleiben im Adminbereich bearbeitbar; bis zu 24 Unterpunkte je Hauptschaltfläche sind erlaubt.
14 · RECHTLICHE HINWEISE
CountPilot ist proprietäre Software. Copyright © 2026 Sascha Kühne, handelnd als IT-Service Kühne. Unternehmen und die weiteren in LICENSE.txt genannten Organisationen dürfen diese kostenlose Ausgabe 30 Tage intern evaluieren. Verbraucher dürfen sie nicht nutzen. Dauerhafter produktiver Einsatz, Verkauf, Vermietung, Unterlizenzierung, öffentliche Bereitstellung und Weitergabe an Dritte sind ohne gesonderte Vereinbarung nicht erlaubt; zwingendes Recht bleibt unberührt.
IT-Service Kühne ist ein nicht im Handelsregister eingetragenes Einzelunternehmen. Inhaber ist Sascha Kühne, Eschenweg 8, 74321 Bietigheim-Bissingen. Support: support@countpilot.de. Umsatzsteuer-Identifikationsnummer: DE218398015.
Die Anwendung bindet keine fremden JavaScript- oder CSS-Bibliotheken ein. Python wird separat installiert und nicht mitgeliefert. Schrift- und Emoji-Glyphen stellt das jeweilige System bereit. Entwicklung, Oberfläche, App-Symbole und Dokumentation entstanden projektbezogen mit KI-gestützter Unterstützung durch OpenAI Codex; zur Laufzeit besteht keine Verbindung zu OpenAI.
Vollständige Angaben zur lokalen Datenverarbeitung, zum Lizenzumfang, zu Haftung, möglichem Datenverlust und Leistungsgrenzen stehen in den frei zugänglichen rechtlichen Hinweisen. Maßgebliche Lizenzbedingungen enthält LICENSE.txt; THIRD_PARTY_NOTICES.txt beschreibt technische Bestandteile. CountPilot kann Softwarefehler enthalten. Regelmäßige externe Sicherungen und Plausibilitätsprüfungen vor wesentlichen Entscheidungen liegen in der Verantwortung des Nutzers.
Die namentliche Mitarbeiterauswertung kann Vorgänge, Planzeiten, Zielkapazität und rechnerische Auslastung je Person darstellen. CountPilot trifft daraus keine ausschließlich automatisierte Entscheidung mit rechtlicher oder ähnlich erheblicher Wirkung. Je nach Einsatz kann diese automatisierte Bewertung von Arbeitsleistung jedoch als Profiling gelten. Rechtsgrundlage, Information der Beschäftigten, Zugriffsbegrenzung und eine gegebenenfalls erforderliche Beteiligung der Arbeitnehmervertretung müssen deshalb vor der Aktivierung des Mitarbeitermodus festgelegt werden.
Die Vorlage „Pflege / Station“ macht CountPilot nicht zu einer Patientenakte, Pflegedokumentation oder medizinischen Dokumentationssoftware. Namen, Patientenkennungen, Diagnosen, Behandlungsangaben und sonstige personenbezogene Gesundheitsdaten dürfen nicht ohne eine gesondert geprüfte Rechtsgrundlage und geeignete technische sowie organisatorische Schutzmaßnahmen erfasst werden.
CountPilot löscht Ereignisse, Archive, Protokolle und Sicherungen nicht vollständig automatisch. Jeder Betreiber muss vor dem produktiven Einsatz eine eigene Aufbewahrungs- und Löschregel sowie die Rechtsgrundlage für die Verarbeitung festlegen.
PROGRAM DESCRIPTION · INSTALLATION · OPERATION
A configurable, locally operated capture and reporting tool for large touch displays. Activities are booked quickly and can then be analysed in a traceable way.
01 · BASICS
CountPilot records recurring activities using large buttons. The supplied setup serves an IT service point; templates for warehouse, reception, workshop and care are included.
The application combines a browser interface with a local Python server. Configuration, current daily status, events, daily archive, weekly reports and backups are stored in the CountPilot folder. Operation requires no cloud account, external database or internet connection.
This manual describes Version 1.3.1 with a documentation date of 20 August 2026. The number follows MAJOR.MINOR.PATCH: incompatible foundational changes increase MAJOR, compatible new features increase MINOR, and corrections increase PATCH.
Frequent unambiguous activities use one tap. A main button can open large follow-up buttons when a more precise result is needed.
The entry count is not limited. Rapid touches appear in a visible pending queue.
Activities, submenus, title, icon, colour, order, grid and planning times are configurable without code changes.
Standard times estimate workload. CountPilot does not measure actual handling time. Optional employee capture assigns activities to a display name, but it is explicitly not working-time recording.
Do not open index.html as an individual file. The default address is http://127.0.0.1:8080/.
02 · EVALUATION AND FIRST RUN
Businesses, legal entities under public law and special funds under public law may test, demonstrate and configure this edition internally. Consumers are not permitted to use the evaluation edition. It is not licensed for continued production use.
On first launch, CountPilot displays a bilingual licence dialog before the main interface. Both checkboxes are initially empty. The user confirms that CountPilot is being used for an eligible organisation and accepts the full evaluation licence. Only then does the main screen open. Until acceptance, the Python server blocks bookings and administrative changes even if an API address is called directly.
The 30 days start with that first express acceptance. CountPilot stores the start and end only in the local license_acceptance.json file. It uses no registration, user account, online activation, telemetry, vendor cloud or licence-server connection. The acceptance file contains no name, email address, IP address, user name, computer name, company data or browser characteristic.
After expiry, a clear notice appears. CountPilot deletes no data and does not lock bookings, reports or exports. The free right of use nevertheless ends. Continued production use requires a separate usage agreement with IT-Service Kühne. The evaluation licence contains the governing terms.
CountPilot may contain software errors. In some technical situations, bookings, counters, archives, reports, exports or calculations may be incorrect, incomplete, delayed or lost. Standard times, capacities, utilisation and staffing-demand figures are planning estimates. They do not measure actual working time. Check results for plausibility before material decisions and do not use the evaluation as the sole repository for business-critical data.
03 · DAILY OPERATION
Every touch receives a random unique event ID in the browser. If the connection fails after sending, the browser retries that same request once. The server recognises the ID and does not count it twice.
The large control to the left of VIP switches between General and Employee. General mode keeps the existing one-touch flow and stores no technician name. Employee mode first shows name tiles. After choosing a name, the normal activity screen appears. A successfully saved booking automatically returns to employee selection.
If saving fails, the selected technician remains active so the entry can be checked and retried. Activity buttons are blocked while an employee booking is being saved. Undo records a reversal with the same employee ID. VIP and submenus work in both modes.
A main button marked with submenu items does not book anything yet. It opens a second touch-sized selection. Only the selected follow-up button increases its own count and is stored with its own event ID, label and standard time. Back without booking or the close control exits without counting.
| Main button | Follow-up buttons |
|---|---|
| Laptop Issuance | Laptop Handover for Installation, Repair or Secure Erasure |
| PC / Workstation Issuance | PC / Workstation Handover for Installation, Repair or Secure Erasure |
| Laptop Return | Laptop Returned to Stock or Sent for Disposal |
| PC / Workstation Return | PC / Workstation Returned to Stock or Sent for Disposal |
The number on the main button shows today's combined total for its submenu items plus any older direct bookings. Reports keep the follow-up activities separate. If VIP was selected first, it remains active while the submenu is open and applies to the chosen follow-up activity.
VIP alone is not an activity, does not count and carries no planned time. Meeting / Conference Technology Support is marked as unplanned urgent support in the IT template.
The grid adapts button size and columns to the browser window and full-screen mode. Other Activity stays in the final bottom-right position and opens active activities that are not directly on the main screen. Submenu items appear only beneath their assigned main button.
Full screen activates the browser's web-page full-screen mode. While active, the same button reads Exit full screen and returns to the normal browser or app window when tapped again. A kiosk mode forced externally by a browser launch parameter cannot be ended by a web page.
DE and EN switch the interface, menus, messages and the centrally managed German or English field labels. Only the language choice is stored locally in the browser. Two touch PCs can therefore display different languages at the same time without changing each other's counters or configuration.
The header has a public link to this manual. Sound and full-screen mode are optional. Undo applies only to this browser session's own current-day bookings.
04 · PROTECTED AREA
The first administration access creates a 4 to 12 digit PIN. admin.json stores a salt and PBKDF2-SHA-256 hash with 310,000 iterations, never readable PIN text. Five failed attempts within five minutes block further logins for five minutes. A successful session expires after eight hours without an authorised action.
Add activity creates a new field. Administrators can edit its German and English labels, work area, standard time from 0 to 480 minutes, icon, colour, main-screen display, URGENT default, active status and submenu assignment. Icons cover IT hardware, issuance and return, user enquiries, warehouse, reception, workshop, material issuance, medical and care work, installation, repair, secure erasure, disposal, accessories and package receipt.
Activity active determines whether the field can be booked. Deactivating it removes the field from the operating interface without deleting it: its field ID, previous events and historical reporting remain intact. Show on main screen affects only the direct touch surface; an active field without this option remains available under Other Activity.
Selecting Edit fields opens a persistent editing bar above the grid. Tapping a tile still opens its field dialog. Active main tiles also show a light-coloured drag handle: hold the handle with a finger or mouse, drag it onto the intended main tile and release. CountPilot saves the revised main-screen order immediately. Submenu items, inactive fields, VIP and Other Activity cannot be moved this way.
Finish editing in the same bar returns directly to the normal capture screen, so the administration menu does not need to be opened again. Arrange main screen remains available in the administration menu for precise position selection or operation without dragging. It provides position numbers and arrow buttons.
Alternatively, edit any existing normal activity and select a main button under Submenu assignment. A main button with assigned items automatically becomes a pure selection step; its standard time is no longer used for new bookings. A submenu can contain up to 24 active or archived items. The server rejects nested submenus, circular links and submenu assignments involving VIP or Other Activity.
To remove an assignment, edit the submenu item and choose Book directly or use as a main button. Deactivation archives only that submenu item. Deactivating the main button makes its submenu items unavailable in the operating interface, but their configuration and report history remain.
VIP and Other Activity are fixed system fields. Their name, visual design and icon can change, but they remain active and keep their special behaviour. Main-screen order follows reading order; Other Activity remains bottom right. This applies both to dragging in edit mode and to position selection in the administration menu.
Export configuration downloads a JSON file containing application title, fields, submenu assignments, layout, preferences, staffing plans, technician names and their hour profiles. Counts, events, PIN and archives are excluded. The configuration can contain personal data and needs matching protection. Import updates matching field IDs. Existing fields that are absent are deactivated instead of deleted.
Five templates are available: IT service, warehouse, reception, workshop and care / ward. The IT service template includes neutral device and accessory submenus for Further Processing, Stock, Disposal, Issuance and Return. Loading a template activates its activities and archives other normal activities. Existing counts and events remain connected to their IDs. Imports and template changes require confirmation.
Manage technicians stores a display name and individual working hours for Monday through Sunday. A full name, first name or locally agreed initials can be used. For privacy, use the least personally identifying designation that remains operationally unambiguous. Every technician receives a permanent internal ID, so a later rename does not split historical results.
Hour profiles use a Valid from date. A new date extends history; the same date is replaced. Deactivation hides the name tile and writes a zero-hour profile from the selected date. The technician is not deleted, preserving older events and reports.
The neutral delivery state contains no technician profiles assigned to real people. A demonstration package may contain neutral examples such as Technician 1, Technician 2 or Technician 3. They have no connection to actual employees and must be removed, deactivated or replaced with locally approved designations before production use.
Each production profile stores a name or identifier, active status, a Valid from date and planned hours from Monday to Sunday. Different weekly hours or later contract changes are added as a new hour profile with a new effective date. Reporting uses the version that applied on each day, allowing profiles with different daily and weekly working hours to coexist.
The application name changes the heading and browser tab. The grid permits 2 to 8 options per row and 1 to 20 rows. Optional sound confirms saved bookings. Manual daily reset requires the exact current total and a reason of at least three characters; it clears only the visible display and records the intervention.
The PIN-protected system status page shows server uptime, last data write, last backup, free and total storage, bind address and file sizes and modification times. It refreshes every 30 seconds.
05 · STAFF PLANNING
Every planning value has a Valid from date. Hours entered for September therefore do not change the capacity calculated for June.
When effective technician hour profiles exist for a day, CountPilot derives capacity from their sum and applies the general plan's target utilization. For dates before the first individual profile, the previous plan with productive hours per technician, planned technician count, shift model and target utilization remains the fallback.
The staffing-demand basis can be working days Monday to Friday, opening days with planned technicians above zero, or active days containing entries. The selected basis is visible with the KPI. Zero-entry opening days lower utilization when Opening days is selected; this intentionally makes capture gaps visible.
CountPilot does not know leave, sickness, skills, parallel tasks, waiting time or actual handling time. Validate standard times, target utilization and data completeness before staffing decisions.
06 · REPORTING
The admin menu provides Detailed report and Daily and weekly totals as separate links. Both pages are PIN protected, start with 28 days and accept periods up to ten years. They show total activities, estimated workload, URGENT, VIP, target capacity utilization and calculated staffing demand.
This privacy-reduced view shows totals per calendar day and ISO calendar week, weekly comparisons, capacity and data completeness. Partial weeks cover only the selected period.
This view adds activity types, hourly distribution, the weekday-hour heatmap and an employee table. The individual-event export contains the exact trigger time of every booking and reversal plus employee ID and recorded name when selected.
In aggregated mode the server sends no hourly distribution, daily peaks, activity types, employee data or individual events to the browser. The page does not merely hide those sections visually.
Daily and weekly totals should be the normal choice for staffing and resource planning. Use the detailed report for justified operational analysis, such as checking real peak periods.
In Employee mode CountPilot stores the technician ID and display name that applied when the activity was booked. This data permits direct conclusions about employees. General mode and aggregated daily and weekly reporting remain without names. Access, purpose, retention, export and sharing of detail data must be restricted and agreed with privacy and employee representatives.
| Export | Contents | Mode |
|---|---|---|
| Daily and weekly totals | One row per day and calendar week with totals, estimated hours, capacity, utilization, URGENT, VIP, active days and data quality. No trigger time, activity type, event ID or session. | Aggregated |
| Complete archive | One summary row per day from the beginning, including the current unfinished day. The original tagesarchiv.csv remains in the CountPilot folder. |
Detailed / admin menu |
| Planning data | One row per date, activity and capture assignment with count, minutes, VIP, URGENT, mode, optional employee ID, standard time used and data quality. | Detailed |
| Employee report | Totals per employee or mode with activities, estimated minutes, individual target capacity, utilization, VIP and URGENT. General and legacy data remain separate without names. | Detailed |
| Individual events | Every booking and reversal with exact trigger time, event ID, session, capture mode, optional employee ID and recorded name, markers, recorded standard time and source. | Detailed |
| Weekly report | Monday through Sunday plus total row with activity details. The filename contains calendar week and year. | Detailed |
Downloads are copies in the browser's standard download folder. Continuously updated originals stay in the CountPilot folder. A Sunday-to-Monday rollover creates the detailed weekly report. If automatic browser download is enabled and the CountPilot page is open, it then downloads a copy.
Event rows use the standard time actually stored at booking. If the same activity used different times on one day, the field explicitly says “gemischt / mixed” and lists the values. Historical daily totals have no recorded old standard time; every affected CSV row therefore says “rekonstruiert mit heutiger Standardzeit / reconstructed using current standard time”.
07 · STORAGE AND SECURITY
The server first appends a booking to events.csv, then atomically updates state.json. The row contains capture mode and, in Employee mode, a stable technician ID and recorded name. In-process locks order concurrent requests. Normal state reads rewrite state.json only if migration, date rollover or a real correction changed something.
On the first Version 1.2.0 start, the server atomically extends the previous event log with capture_mode, technician_id and technician_name. Existing bookings become Legacy unassigned. A dedicated copy is created under backups/schema_8_event_migration_* before migration, even if the normal daily backup already exists.
After a date change, the previous day is appended to tagesarchiv.csv before visible counters reset. Its archived value is therefore not zero. Existing archive days are not overwritten.
The server fully decodes and normalizes every URL path. It then serves only the application interface, manual, getting-started guide, licence, three report files, three status files, legal notice, publisher logo and intended browser and Apple icons. Every other static path returns 404, including encoded or repeatedly encoded names.
state.json, events.csv, tagesarchiv.csv, admin.json, server.py, backups, logs and launch files are never exposed as static browser files. Data is made available only through the intended APIs, most of which require the administrator PIN.
.counter.lock contains PID, address, port and start time. An operating-system lock lasts for the whole process. A second launch from the same folder exits immediately with a clear message. A file left by a crash does not itself block the next launch; the OS lock was released and new metadata replaces the stale contents.
The server has no HTTPS, central accounts or protection for public networks. Never forward port 8080 through an internet router. JSON and CSV files remain unencrypted on the computer; protect its user account, storage and backups.
08 · WINDOWS 11
start_counter_windows.bat. The server runs in the background; Microsoft Edge opens as a maximized app window when available. Otherwise the default browser opens.stop_counter_windows.bat to stop it.The current Windows launcher deliberately avoids the Edge kiosk parameter. For security reasons, a genuine browser kiosk mode cannot be exited by a button inside a web page. If an older launcher still opens Edge with --kiosk, update start_countpilot_windows.ps1 or close the window with Alt+F4.
Manual diagnostic start remains available:
cd "C:\Users\Name\Desktop\CountPilot"
py server.py --open-browser
Stop with Ctrl+C. install_autostart_windows.bat creates a logon task in Windows Task Scheduler. uninstall_autostart_windows.bat removes it. Test normal starts and stops before enabling auto-start.
09 · MACOS
Check python3 --version in Terminal. If missing, install Python 3 from python.org.
start_counter_macos.command. macOS may require Open from the context menu on first use../start_counter_macos.command --kiosk.stop_counter_macos.command stops exactly the process from this folder.Optional install_autostart_macos.command creates local.touchcounter.server.plist in ~/Library/LaunchAgents and loads it. The LaunchAgent starts on 127.0.0.1, opens the browser and keeps the server alive. uninstall_autostart_macos.command unloads it and moves the plist to Trash.
Manual start:
cd "/Users/name/Desktop/CountPilot"
python3 server.py --open-browser
Stop with Control+C, not Command+C. counter_server.log contains background-launch messages and is not served by the web server.
10 · LINUX AND NETWORK
On Linux or Raspberry Pi OS:
cd /home/user/counter
python3 server.py --open-browser
Without an extra option the server binds only to 127.0.0.1. This is recommended for a single touch PC.
CountPilot can also be used in a deliberately planned, protected local network:
python3 server.py --host 0.0.0.0 --port 8080
Other devices then connect to the server's local IP. Daily capture deliberately has no login; every reachable participant can book activities. Administration, exports, status and reports require the PIN. Network segmentation and firewall rules must limit port 8080 to trusted devices.
Multiple devices may use different interface languages. Labels, counters and configuration remain central. Capture mode is sent with every booking, so general and employee entries may coexist. Active technician names are sent to every device that can reach the unprotected local booking screen so its name tiles can be displayed. Network access, screen location and the chosen form of names therefore require a deliberate decision. Operators must not repurpose employee data for undisclosed individual performance monitoring.
11 · BACKUP AND MIGRATION
Before the first data change on each calendar day, CountPilot creates backups/YYYY-MM-DD. It includes state, events, daily archive, PIN file, the locally created licence acceptance and weekly reports. At most one automatic version is created per date. Old backup folders are not deleted automatically.
System status displays the latest backup and free storage. CountPilot's internal automatic backup does not protect against failure, loss, theft or damage to the entire computer or drive.
state.json, events.csv, tagesarchiv.csv, admin.json, license_acceptance.json and weekly reports where those files already exist.Windows, macOS and Linux use the same data. Their launch files differ. An internal SSD is far better for daily use than a slow USB stick.
12 · TROUBLESHOOTING
The single-instance lock works correctly. Use the current browser or stop the server with the stop file. A stale .counter.lock after a crash does not block restart by itself.
Port 8080 belongs to another program or a CountPilot copy in another folder. Stop it or test python3 server.py --port 8081, or py server.py --port 8081 on Windows.
Stop further input. Check server operation and free storage through System status. If the queue remains stuck, restart browser and server in a controlled way. The same event ID prevents double counting during the built-in retry; after a full browser restart, verify any uncertain booking in the event log.
This is intended path protection. Only approved pages, scripts, styles and icons are served statically.
Perform a full browser reload and verify which CountPilot folder started the server. CountPilot uses versioned filenames for tab, Safari and touch icons. This prevents Safari from reusing an older icon stored for the same file path. If a grey letter or number placeholder remains visible, close that tab and open CountPilot in a new tab. Multiple folder copies are another frequent cause.
Correct system date, time and time zone before more entries. They control event times, daily rollover and ISO calendar week.
Stop the server, move admin.json out of the folder as a backup, restart and create a PIN. Do not delete event or state files.
13 · APPLICATION FOLDER
Browser downloads such as gesamtarchiv.csv, planung_*.csv, mitarbeiterauswertung_*.csv, ereignisse_*.csv and countpilot_konfiguration_*.json are copies. Detail, employee and configuration exports can contain personal data. Continuously updated originals remain in the CountPilot folder.
CURRENT IT CONFIGURATION
The IT template uses five columns and five rows. Row 1 contains Laptop Issuance, Laptop Return, PC / Workstation Issuance, PC / Workstation Return and Hardware Fault / Defect. Row 2 contains Smartphone / Mobile Issuance, Smartphone / Mobile Return, Smartphone Setup, SIM Card / Mobile Contract and Employee Offboarding. Row 3 contains Monitor Issuance, Monitor Return, Accessory / Hardware Issuance, Accessory / Hardware Return and Package / Delivery Received. Row 4 contains Ticket Status Enquiry, Order / Delivery Status Enquiry, General User Enquiry, User Consultation and Access / Password / MFA Support. Row 5 contains SSO / Access Card Support, Software / Application Support, Network / Wi-Fi / VPN Support, Meeting / Conference Technology Support and Other Activity in the bottom-right position. VIP Support remains an additional marker in the upper control area.
Smartphone / Mobile Return opens Smartphone Returned to Stock and Smartphone Sent for Disposal. Smartphone Setup is a separate direct button with a 30-minute default time.
Package / Delivery Received records incoming packages and deliveries directly. Its default time is 5 minutes.
The main button opens 16 independently counted issuance activities: docking station, keyboard / mouse set, mouse, RAM, HDD / SSD, backpack / bag, laptop lock, headset, laptop charger, smartphone charger, DisplayPort, HDMI and USB-C cable, webcam, spare parts and other accessory.
The return submenu contains the same 16 components as separate return activities. Every accessory activity defaults to 5 minutes.
Large submenus use a four-column grid on a Full HD touch display. Only the selected component is booked. Labels, icons and standard times remain editable in administration; each main button may contain up to 24 submenu items.
14 · LEGAL NOTICE
CountPilot is proprietary software. Copyright © 2026 Sascha Kühne, trading as IT-Service Kühne. Businesses and the other organisations named in LICENSE.txt may evaluate this free edition internally for 30 days. Consumers are not permitted to use it. Continued production use, sale, rental, sublicensing, public availability and distribution to third parties require a separate agreement; mandatory law remains unaffected.
IT-Service Kühne is a sole proprietorship not entered in the German commercial register. Proprietor: Sascha Kühne, Eschenweg 8, 74321 Bietigheim-Bissingen, Germany. Support: support@countpilot.de. VAT identification number: DE218398015.
The application embeds no third-party JavaScript or CSS libraries. Python is installed separately and is not distributed with CountPilot. Fonts and emoji glyphs are supplied by the operating system. Development, interface, app icons and documentation were created for the project with AI-assisted support from OpenAI Codex; CountPilot has no runtime connection to OpenAI.
The public legal notice contains full information about local processing, licence scope, liability, possible data loss and performance limitations. LICENSE.txt contains the governing terms; THIRD_PARTY_NOTICES.txt describes technical components. CountPilot may contain software errors. The user is responsible for regular external backups and plausibility checks before material decisions.
The named employee report can display activities, estimated time, target capacity and calculated utilization for each person. CountPilot does not use these figures to make a solely automated decision with legal or similarly significant effects. Depending on deployment, this automated evaluation of work performance may nevertheless constitute profiling. The legal basis, employee information, access restrictions and any required employee-representative involvement must therefore be settled before Employee mode is enabled.
The Care / Ward template does not turn CountPilot into a patient record, care record or medical documentation system. Names, patient identifiers, diagnoses, treatment information and other personal health data must not be entered without a separately assessed legal basis and appropriate technical and organisational safeguards.
CountPilot does not fully automate deletion of events, archives, logs or backups. Before production use, each operator must define its own retention and deletion rule and the legal basis for processing.