Moderne Webapp zur Dokumentation von Strom-, Wärmepumpen- und Wasserverbrauch sowie Außentemperatur mit Multi-User-Unterstützung.
Backend:
Frontend:
# Repository klonen
git clone [your-repo-url]
cd verbrauch
# Dependencies installieren
npm install
# Server starten
npm start
Die App ist verfügbar unter: http://localhost:3002
# Demo-Script kopieren und anpassen
cp deploy-demo.sh deploy.sh
nano deploy.sh # Server-Details eintragen
# Deployment starten
./deploy.sh
Das Script führt automatisch aus:
# Demo-Script kopieren und anpassen
cp backup-db-demo.sh backup-db.sh
nano backup-db.sh # Server-Details eintragen
# Backup ausführen
./backup-db.sh
POST /api/auth/login # Login → JWT Token
POST /api/auth/register # Benutzerregistrierung
GET /api/auth/check # Token validieren
POST /api/auth/logout # Ausloggen
POST /api/auth/setup # Erster Admin (nur bei leerem System)
GET /api/readings # Alle Ablesungen (gefiltert nach user_id)
POST /api/readings # Neue Ablesung hinzufügen
DELETE /api/readings/:id # Ablesung löschen
GET /api/readings/latest/:type # Neueste Ablesung pro Typ
GET /api/stats/:type?days=7 # Verbrauchsstatistik Zeitraum
GET /api/stats/:type?month=2&year=2026 # Monatsstatistik
GET /api/available-months # Verfügbare Datenzeiträume
Datentypen: household, heatpump, temperature, water, waste
-- Benutzer-Tabelle
CREATE TABLE users (
id INTEGER PRIMARY KEY,
username TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
first_name TEXT,
last_name TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Ablesungen-Tabelle
CREATE TABLE readings (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
type TEXT NOT NULL, -- 'household','heatpump','temperature','water','waste'
value REAL NOT NULL, -- Zählerstand oder Messwert
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
note TEXT,
subtype TEXT, -- Untertyp (z.B. Müllart: 'restmuell', 'gelberSack', etc.)
FOREIGN KEY (user_id) REFERENCES users (id)
);
verbrauch/
├── server.js # Express-Server + API + Auth
├── verbrauch.db # SQLite-Datenbank (auto-generiert)
├── package.json # Dependencies & Scripts
├── deploy.sh # Produktions-Deployment (aus deploy-demo.sh erstellen)
├── backup-db.sh # Datenbank-Backup (aus backup-db-demo.sh erstellen)
├── deploy-demo.sh # Deployment-Vorlage
├── backup-db-demo.sh # Backup-Vorlage
├── bump-sw-version.js # Service Worker Versioning
│
├── public/ # Frontend-Assets
│ ├── index.html # Haupt-App (3 Slides)
│ ├── login.html # Login/Registrierung
│ ├── app.js # Frontend-Logik + Auth
│ ├── style.css # Responsive Styling + Dark Mode
│ ├── manifest.json # PWA-Manifest
│ └── service-worker.js # Caching & Offline-Support
│
└── README.md # Diese Dokumentation
Integrierter Demo-Account für Tests und Präsentationen:
Login: demo / demo
Features:
Demo-Daten:
ssh your-server
sudo certbot --apache -d your-domain.com
pm2 status # App-Status prüfen
pm2 logs verbrauch # Logs anzeigen
pm2 restart verbrauch # Neustart
pm2 monit # System-Monitor
# Automatisches Backup mit Zeitstempel
./backup-db.sh
| Problem | Lösung |
|---|---|
| Diagramme zeigen 0-Werte | ✅ SQL-Query korrigiert: Verbrauch = heutiger - gestriger Zählerstand |
| Service Worker cached alte Version | ✅ Automatischer Version-Bump vor jedem Deploy |
| User-Daten vermischt | ✅ Strikte user_id-Filterung in allen API-Endpoints |
v2.2.0 (Aktuell)
v2.1.0
v2.0.0
v1.0.0
MIT License - Siehe LICENSE-Datei für Details.
🚀 Entwickelt für moderne Haushalte mit Smart Metering