Files
personal-dashboard/README.md
T
Claude a4051ae132 Initial commit: Personal Dashboard
Next.js 16 dashboard with configurable widgets (favorites, notes, calendar,
clock, calculator, search, domain-check), multi-tab support, user auth,
dark mode, and Docker deployment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 10:02:05 +02:00

1.7 KiB

Personal Dashboard

Ein selbst gehostetes persönliches Dashboard mit konfigurierbaren Widgets, Multi-Tab-Support und Benutzerverwaltung.

Features

  • Widgets: Favoriten/Links, Notizen (Markdown), Uhr, Taschenrechner, Suche, Kalender (ICS + Exchange EWS), Domainprüfung
  • Dashboard-Tabs: Mehrere Dashboards pro Benutzer
  • Drag & Drop: Widgets frei im Raster positionieren und skalieren
  • Dark Mode und anpassbares Branding (Logo, Farben, Hintergrundbild, Custom CSS)
  • Benutzerverwaltung: Admin- und User-Rollen, Session-basierte Authentifizierung
  • Kalender: Mehrere Quellen pro Widget, ICS-URLs und Exchange EWS mit verschlüsselten Zugangsdaten

Tech Stack

  • Frontend: Next.js 16, React 19, react-grid-layout
  • Backend: Next.js API Routes, Prisma ORM
  • Datenbank: SQLite
  • Deployment: Docker

Schnellstart mit Docker

cp .env.example .env
# .env anpassen (mindestens CALENDAR_ENCRYPTION_KEY setzen)
docker compose up -d

Das Dashboard ist dann unter http://localhost:3130 erreichbar.

Entwicklung

npm install
npx prisma generate
npx prisma db push
npm run dev

Umgebungsvariablen

Variable Beschreibung Standard
DATABASE_URL SQLite-Pfad file:/data/dashboard.db
INITIAL_ADMIN_EMAIL E-Mail des initialen Admins admin@example.local
INITIAL_ADMIN_PASSWORD Passwort des initialen Admins (muss gesetzt werden)
CALENDAR_ENCRYPTION_KEY 32-Byte-Hex-Key für Kalender-Passwörter (muss gesetzt werden)
CALENDAR_ALLOWED_HOSTS Erlaubte Kalender-Hosts (kommasepariert) (leer = alle)
SESSION_TTL_DAYS Session-Lebensdauer in Tagen 30