Claude 001bfb3a0c Clip search widget content overflow and set sane minimum height
Prevents form fields from overlapping the widget border when sized
small. Changed overflow from visible to hidden and set minH back to 5.

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

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

CALENDAR_ENCRYPTION_KEY generieren (32 Byte, Base64 oder Hex):

# Base64 (empfohlen)
openssl rand -base64 32

# oder Hex
openssl rand -hex 32

Den generierten Wert in .env eintragen, dann starten:

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-Key (Base64 oder Hex) für Kalender-Passwörter (muss generiert werden, siehe oben)
CALENDAR_ALLOWED_HOSTS Erlaubte Kalender-Hosts (kommasepariert) (leer = alle)
SESSION_TTL_DAYS Session-Lebensdauer in Tagen 30
S
Description
Selbst gehostetes persönliches Dashboard mit konfigurierbaren Widgets
Readme 398 KiB
Languages
TypeScript 69.9%
CSS 29.3%
JavaScript 0.5%
Dockerfile 0.3%