ressource_tracker

⚡ Verbrauchsdokumentation

Moderne Webapp zur Dokumentation von Strom-, Wärmepumpen- und Wasserverbrauch sowie Außentemperatur mit Multi-User-Unterstützung.

✨ Features

🛠 Technologie-Stack

Backend:

Frontend:

🚀 Schnellstart

Lokal entwickeln

# 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

Produktionsdeployment

# 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:

Datenbank-Backup

# 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

🔧 API-Referenz

Authentifizierung

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)

Datenmanagement

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

Statistiken

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

💾 Datenbank-Schema

-- 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)
);

📁 Projektstruktur

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

🎭 Demo-Modus

Integrierter Demo-Account für Tests und Präsentationen:

Login: demo / demo

Features:

Demo-Daten:

🔒 Sicherheit & Deployment

SSL-Zertifikat

ssh your-server
sudo certbot --apache -d your-domain.com

PM2 Process Management

pm2 status                # App-Status prüfen
pm2 logs verbrauch        # Logs anzeigen
pm2 restart verbrauch     # Neustart
pm2 monit                 # System-Monitor

Datenbank-Backup

# Automatisches Backup mit Zeitstempel
./backup-db.sh

🐛 Bekannte Probleme & Lösungen

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

📈 Version History

v2.2.0 (Aktuell)

v2.1.0

v2.0.0

v1.0.0

📄 Lizenz

MIT License - Siehe LICENSE-Datei für Details.


🚀 Entwickelt für moderne Haushalte mit Smart Metering