diff --git a/README.md b/README.md
index 09a7504..2cf6a7e 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,7 @@ product, niet als medisch hulpmiddel. Release 1 blijft smal:
- eenvoudig dagbudget en energieniveau op basis van de ochtendscore
- dashboardweergave van check-instatus, energieniveau en dagbudget
- planningsfundering met activiteitenmodel, categorieën en skip-redenen in Supabase
+- planningpagina voor vandaag met activiteit toevoegen en directe lijstweergave
- eerste unit tests voor budgetmapping via `Vitest`
- korte onboardingflow voor eerste voorkeuren
- instellingen voor taal, timezone, reminders en zichtbaarheid van energiepunten
@@ -111,7 +112,7 @@ zichtbaar als `NEXT_PUBLIC_ENABLE_TEST_WIZARD=true` staat.
## Eerstvolgende bouwstappen
-1. `ST-302` Planningformulier bouwen
+1. `ST-303` Autocomplete op eerdere activiteiten toevoegen
2. `ST-304` EnergyMeter en lopend totaal implementeren
3. `ST-401` Evaluatie- en dagoverzichtslus bouwen
4. `ST-105` RLS-policy tests en hardening afronden
diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx
index b1071c5..5a00205 100644
--- a/app/dashboard/page.tsx
+++ b/app/dashboard/page.tsx
@@ -16,6 +16,7 @@ import { getAuthState } from "@/lib/auth/session";
import { getTodayCheckInForCurrentUser } from "@/lib/check-in/service";
import { isTestWizardEnabled } from "@/lib/config/feature-flags";
import { getDashboardStatusToast } from "@/lib/feedback/status-messages";
+import { getTodayActivitiesForCurrentUser } from "@/lib/planning/service";
import { getProfileBundleForCurrentUser } from "@/lib/profile/service";
import { getParamValue, type PageSearchParams } from "@/lib/search-params";
import { cn } from "@/lib/utils";
@@ -53,7 +54,10 @@ export default async function DashboardPage({ searchParams }: DashboardPageProps
}
const { profile, settings } = profileBundle;
- const checkInStatus = await getTodayCheckInForCurrentUser();
+ const [checkInStatus, planningStatus] = await Promise.all([
+ getTodayCheckInForCurrentUser(),
+ getTodayActivitiesForCurrentUser(),
+ ]);
const statusToast = getDashboardStatusToast(getParamValue(resolvedSearchParams, "status"));
if (!profile.onboardingSeen) {
@@ -97,6 +101,15 @@ export default async function DashboardPage({ searchParams }: DashboardPageProps
>
Instellingen
+
+ Dagplanning
+
{isTestWizardEnabled() ? (
+
+
+
+ Dagplanning
+
+
+ {planningStatus?.activities.length
+ ? `${planningStatus.activities.length} activiteiten voor vandaag`
+ : "Nog niets gepland voor vandaag"}
+
+
+
+
+ Plan kleine, concrete activiteiten voor vandaag en bouw daarna verder op budgetfeedback en evaluatie.
+
+
+
+ {activities.length === 0
+ ? "Nog geen activiteiten gepland"
+ : `${activities.length} ${activities.length === 1 ? "activiteit" : "activiteiten"}`}
+
+
+
+ {activities.length === 0 ? (
+
+ Je dag is nog leeg. Plan eerst een kleine concrete activiteit om de flow op gang te brengen.
+
+ ) : (
+ activities.map((activity) => (
+