72d6d5126e
- server/services/google-calendar.js: OAuth 2.0, bidirektionaler Sync via Google Calendar API v3, inkrementeller syncToken, 410-Fallback auf Vollsync - server/services/apple-calendar.js: CalDAV via tsdav (dynamic ESM import), minimaler ICS-Parser + ICS-Builder, bidirektionaler Sync - server/routes/calendar.js: 7 neue Sync-Routen (google/auth, google/callback, google/sync, google/status, google/disconnect, apple/status, apple/sync) - server/db.js: Migration 2 — sync_config Tabelle + idx_calendar_external_id - server/db-schema-test.js: MIGRATIONS_SQL[2] für Tests synchronisiert - server/auth.js: PATCH /me/password Endpoint - server/index.js: Auto-Sync-Scheduler (setInterval, SYNC_INTERVAL_MINUTES) - public/pages/settings.js: vollständige Settings-Seite (Konto, Passwort, Kalender-Sync-Status + Aktionen, Familienmitglieder-Verwaltung) - public/styles/settings.css: neue Stylesheet-Datei - public/index.html + public/sw.js: settings.css eingebunden und gecacht - .env.example: SYNC_INTERVAL_MINUTES ergänzt - README.md: vollständige Setup-Anleitung, Google/Apple-Sync-Dokumentation, modernes GitHub-Layout mit Badges und aufklappbaren Abschnitten Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
38 lines
910 B
Bash
38 lines
910 B
Bash
# Oikos — Umgebungsvariablen
|
|
# Kopiere diese Datei nach .env und passe die Werte an.
|
|
|
|
# Server
|
|
PORT=3000
|
|
NODE_ENV=production
|
|
|
|
# Session
|
|
SESSION_SECRET=HIER_EINEN_LANGEN_ZUFAELLIGEN_STRING_EINTRAGEN
|
|
|
|
# Datenbank (SQLite/SQLCipher)
|
|
DB_PATH=/data/oikos.db
|
|
DB_ENCRYPTION_KEY=HIER_EINEN_STARKEN_VERSCHLUESSELUNGSSCHLUESSEL_EINTRAGEN
|
|
|
|
# Wetter (OpenWeatherMap)
|
|
OPENWEATHER_API_KEY=DEIN_API_KEY
|
|
OPENWEATHER_CITY=Berlin
|
|
OPENWEATHER_UNITS=metric
|
|
OPENWEATHER_LANG=de
|
|
|
|
# Google Calendar (optional)
|
|
GOOGLE_CLIENT_ID=
|
|
GOOGLE_CLIENT_SECRET=
|
|
GOOGLE_REDIRECT_URI=https://deine-domain.de/api/v1/calendar/google/callback
|
|
|
|
# Apple Calendar CalDAV (optional)
|
|
APPLE_CALDAV_URL=https://caldav.icloud.com
|
|
APPLE_USERNAME=
|
|
APPLE_APP_SPECIFIC_PASSWORD=
|
|
|
|
# Kalender-Sync-Intervall in Minuten (Standard: 15)
|
|
SYNC_INTERVAL_MINUTES=15
|
|
|
|
# Sicherheit
|
|
RATE_LIMIT_WINDOW_MS=60000
|
|
RATE_LIMIT_MAX_ATTEMPTS=5
|
|
RATE_LIMIT_BLOCK_DURATION_MS=900000
|