Self-hosted winter service documentation (PWA + Admin) — GPS tracks, weather data, photos & legally valid proof of service. Schneespur.de / Wintertrace.com https://schneespur.de
Find a file
Michael 7e1222b022 Release v1.0.3: post-1.0.2 hotfixes (logging, customer objects, version display, module catalog & installer)
- bootstrap/app.php: restore default Laravel exception logging. The
  diagnostic reportable() callback no longer returns false unconditionally
  it only suppresses default reporting when a reporter actually handled the
  exception, so storage/logs/laravel.log shows errors again on fresh installs.

- Customer object creation: fix 500 when notify_recipients is empty (NOT NULL
  violation). Reconcile drift across migration/validation/form/lang: the field
  is now treated consistently as an enum (customer|object|both) matching the
  notification consumers; form uses a <select> instead of free-text input;
  validation tightened via in: rule; coercion in prepareForValidation keeps
  the DB invariant intact when the field is empty or missing.

- config/app.php: version is now read from the VERSION file at runtime.
  The previously hardcoded '1.0.0' caused footer, settings, and dashboard to
  show a stale version after every release. VERSION is now the single source
  of truth for display.

- Module catalog UI: fix render crash (htmlspecialchars on i18n category dict)
  and disappearing modules on 304 Not Modified responses. SchneespurModuleClient
  now has a normalizeModule() adapter that bridges server-side field naming
  (current_version, image_url, i18n category dict) to the internal shape used
  by controller and views. The catalog body is cached in state, so 304
  responses replay the cached catalog instead of falling back to the
  semantically wrong "installed" list.

- Module installer: strip common top-level prefix from module ZIPs to prevent
  modules/<slug>/<slug>/ double-nesting. The installer now detects whether all
  ZIP entries share one wrapper folder and strips it during extraction; flat
  ZIPs continue to work unchanged. Path-traversal validation runs on the
  original entry names before the strip, so the security guarantee is intact.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 12:53:20 +00:00
schneespur Release v1.0.3: post-1.0.2 hotfixes (logging, customer objects, version display, module catalog & installer) 2026-05-19 12:53:20 +00:00
.gitignore Restructure: move source into schneespur/ subdirectory, remove vendor/release from tracking 2026-05-18 17:02:37 +00:00
INSTALL.de.md Restructure: move code into schneespur/ subdirectory, fix Umlauts 2026-05-17 13:52:39 +00:00
INSTALL.en.md Initial release v1.0.0 2026-05-17 13:33:51 +00:00
LICENSE Initial release v1.0.0 2026-05-17 13:33:51 +00:00
README.md Update README.md 2026-05-17 16:06:43 +02:00

Schneespur

Schneespur

Quelloffene, selbst gehostete Winterdienst-Dokumentation.
GPS-Tracks · Wetterdaten · Fotos · rechtsfester Einsatznachweis

schneespur.de · wintertrace.com

English · Installation (DE) · Installation (EN) · Download


Was ist Schneespur?

Schneespur dokumentiert Räum- und Streueinsätze für kleine Winterdienst-Betriebe — vollständig, automatisch und rechtssicher. Die Software läuft auf jedem günstigen Shared-Webhosting (Strato, IONOS, All-Inkl, ...) und braucht weder SSH noch Docker.

Kernversprechen: Wenn ein Passant auf einer gestreuten Fläche ausrutscht und der Betreiber nachweisen muss, dass er seiner Verkehrssicherungspflicht nachgekommen ist, liefert Schneespur den Beleg — mit GPS-Track, Wetterlage, Fotos und Zeitstempeln.

Funktionen

  • GPS-Tracking via OwnTracks-App (iOS/Android) — kein eigener Tracking-Client nötig
  • Automatische Wetterdokumentation — Temperatur, Niederschlag, Wind, Schneelage zum Einsatzzeitpunkt (Open-Meteo, BrightSky, Met.no)
  • Foto-Dokumentation — Bilder direkt aus der Fahrer-App hochladen
  • PDF-Einsatznachweise — einzeln oder als Sammelreport pro Kunde und Zeitraum
  • Kundenportal — Kunden können ihre Einsätze selbst einsehen
  • Fahrer-App (PWA) — funktioniert offline, synchronisiert automatisch bei Verbindung
  • Kunden- und Objektverwaltung — mehrere Objekte pro Kunde, Zuordnung zu Einsätzen
  • Fahrzeugverwaltung — Fuhrpark mit Kennzeichen und Fahrzeugtyp
  • DSGVO-konform — Fahrer-Anonymisierung, Datenexport, konfigurierbare Aufbewahrungsfristen
  • Automatische Updates — kryptographisch signiert (Ed25519), ein Klick im Admin-Panel
  • Modulsystem — erweiterbar über Module aus dem Schneespur-Modulkatalog

Systemanforderungen

Komponente Minimum
PHP 8.2
MySQL 5.7 / MariaDB 10.3
Webserver Apache mit mod_rewrite
PHP-Extensions pdo_mysql, mbstring, openssl, gd, sodium, fileinfo
Speicherplatz ca. 50 MB + Fotos

Schnellstart

  1. Download der aktuellen Version (ZIP)
  2. ZIP entpacken und per FTP auf den Webserver laden
  3. Document Root auf den public/-Ordner setzen
  4. Im Browser die Domain aufrufen — der Installations-Assistent führt durch die Einrichtung

Detaillierte Anleitung: INSTALL.de.md

Tech-Stack

Bereich Technologie
Backend PHP 8.2+ / Laravel 12
Frontend Blade + Alpine.js + Tailwind CSS v4
Karten Leaflet + OpenStreetMap
PDF DomPDF (rein PHP, kein Chrome/Puppeteer)
PWA Workbox via vite-plugin-pwa
Wetter Open-Meteo / BrightSky / Met.no

Lizenz

Schneespur ist lizenziert unter der GNU Affero General Public License v3.0.


English

The international edition of this software is called Wintertrace. The branding is set during installation based on the chosen language.

What is Schneespur?

Schneespur (German) / Wintertrace (international) is an open-source, self-hosted winter service documentation platform for small snow removal and gritting operators. It runs on any standard shared web hosting (no SSH or Docker required).

Core promise: When a pedestrian slips on a cleared surface and the operator needs to prove they fulfilled their duty of care, Schneespur provides the evidence — GPS track, weather conditions, photos, and timestamps.

Features

  • GPS tracking via OwnTracks app (iOS/Android) — no custom tracking client needed
  • Automatic weather documentation — temperature, precipitation, wind, snow depth at the time of service (Open-Meteo, BrightSky, Met.no)
  • Photo documentation — upload images directly from the driver app
  • PDF proof-of-service reports — individual or batch reports per customer and time period
  • Customer portal — customers can review their service records
  • Driver app (PWA) — works offline, syncs automatically when connected
  • Customer & site management — multiple sites per customer, assigned to jobs
  • Vehicle management — fleet with license plates and vehicle types
  • GDPR-compliant — driver anonymization, data export, configurable retention periods
  • Automatic updates — cryptographically signed (Ed25519), one click in the admin panel
  • Module system — extensible via modules from the Schneespur module catalog

System Requirements

Component Minimum
PHP 8.2
MySQL 5.7 / MariaDB 10.3
Web server Apache with mod_rewrite
PHP extensions pdo_mysql, mbstring, openssl, gd, sodium, fileinfo
Disk space approx. 50 MB + photos

Quick Start

  1. Download the latest release (ZIP)
  2. Extract and upload via FTP to your web server
  3. Set the document root to the public/ directory
  4. Open the domain in your browser — the installation wizard guides you through setup

Detailed guide: INSTALL.en.md

Tech Stack

Area Technology
Backend PHP 8.2+ / Laravel 12
Frontend Blade + Alpine.js + Tailwind CSS v4
Maps Leaflet + OpenStreetMap
PDF DomPDF (pure PHP, no Chrome/Puppeteer)
PWA Workbox via vite-plugin-pwa
Weather Open-Meteo / BrightSky / Met.no

License

Schneespur is licensed under the GNU Affero General Public License v3.0.