+ ))}
+
+ )}
+
+
+ );
+}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index f94bffb..9d76993 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -2,82 +2,228 @@ import Link from "next/link";
import { requireUser } from "@/lib/auth";
import { getSettings } from "@/lib/settings";
import { env } from "@/lib/env";
+import {
+ getContinueWatching,
+ getNewlyAvailable,
+ getUpcomingEpisodes,
+} from "@/lib/stats";
+import { prisma } from "@/lib/db";
+import { episodeCode, formatDate, formatRelative, isUpcoming } from "@/lib/labels";
import { AppShell } from "@/components/AppShell";
-import { FlimmerMark } from "@/components/brand/FlimmerLogo";
+import { Poster } from "@/components/Poster";
+import { ProgressBar } from "@/components/ProgressBar";
+import { QuickWatch } from "@/components/library/QuickWatch";
/**
- * Übersichtsseite.
+ * Übersicht: der Einstieg für „was schaue ich als Nächstes".
*
- * In dieser Etappe steht hier die Begrüßung und der Hinweis auf die nächsten
- * Schritte; ab Etappe 5 ziehen „Weiterschauen", Kalender und Neuzugänge ein.
+ * Drei Fragen, drei Bereiche — weiterschauen, was demnächst kommt, was auf der
+ * Watchlist verfügbar geworden ist.
*/
export default async function DashboardPage() {
const user = await requireUser();
const settings = await getSettings();
+ const now = new Date();
+ const inFourWeeks = new Date(now.getTime() + 28 * 86_400_000);
+
+ const [continueItems, upcoming, available, libraryCount] = await Promise.all([
+ getContinueWatching(user.id, 8),
+ getUpcomingEpisodes(user.id, now, inFourWeeks),
+ getNewlyAvailable(user.id, user.region),
+ prisma.libraryEntry.count({ where: { userId: user.id, deletedAt: null } }),
+ ]);
+
+ if (libraryCount === 0) {
+ return (
+
+
+
+ );
+ }
+
return (
-
-
-
-
-
- Hallo {user.name.split(" ")[0]}.
-
-
- Schön, dass du da bist. Sobald du deinen ersten Titel hinzufügst, findest du hier
- deine laufenden Serien, die nächsten Episoden und was auf deiner Watchlist gerade
- verfügbar geworden ist.
-
+
Übersicht
-
-
- Titel suchen und hinzufügen
-
-
- Zur Bibliothek
+
+
+
+ Weiterschauen
+
+
+ Alle laufenden
+
+
+
+ {continueItems.length === 0 ? (
+
+ Gerade läuft nichts. Setz eine Serie auf „Schaue gerade", dann steht sie hier.
+
+ Nächste Episode erst am {formatDate(item.next.airDate)}
+
+ ) : (
+
+ )}
+
+
+
+ ))}
+
+ )}
+
+
+
+
+
+
+ Demnächst
+
+
+ Zum Kalender
- {!env.tmdb.isConfigured && (
-
- Es ist noch kein TMDB-Schlüssel hinterlegt. Ohne ihn findet die Suche keine
- Metadaten — trage TMDB_API_KEY in der .env ein und starte
- die Instanz neu.
-
- )}
-
-
+
+ {upcoming.length === 0 ? (
+
+ In den nächsten vier Wochen ist keine Episode deiner Serien angekündigt.
+
+ Deine Bibliothek ist noch leer. Such dir eine Serie oder einen Film — danach findest du
+ hier, was als Nächstes dran ist, welche Episoden demnächst kommen und was auf deiner
+ Watchlist verfügbar geworden ist.
+
+
+
+
+ Titel suchen
+
+
+ Titel selbst anlegen
+
+
+
+ {!tmdbReady && (
+
+ Es ist noch kein TMDB-Schlüssel hinterlegt. Ohne ihn findet die Suche keine Metadaten —
+ trage TMDB_API_KEY in der .env ein und starte die Instanz neu.
+