diff --git a/aleksis/core/views.py b/aleksis/core/views.py
index 886ae4e3bd74f60b898ffefd90a61e1a023acf71..8c03ebbdacf5bd0e2049d212705a23767495db7e 100644
--- a/aleksis/core/views.py
+++ b/aleksis/core/views.py
@@ -96,7 +96,6 @@ from .models import (
     DashboardWidget,
     DashboardWidgetOrder,
     DataCheckResult,
-    DummyPerson,
     Group,
     GroupType,
     OAuthApplication,
@@ -213,16 +212,23 @@ def index(request: HttpRequest) -> HttpResponse:
     if has_person(request.user):
         person = request.user.person
         widgets = person.dashboard_widgets
+        activities = person.activities.all().order_by("-created")[:5]
+        notifications = person.notifications.filter(send_at__lte=timezone.now()).order_by(
+            "-created"
+        )[:5]
+        unread_notifications = person.notifications.filter(
+            send_at__lte=timezone.now(), read=False
+        ).order_by("-created")
+        announcements = Announcement.objects.at_time().for_person(person)
+        activities = person.activities.all().order_by("-created")[:5]
+
     else:
-        person = DummyPerson()
+        person = None
+        activities = []
+        notifications = []
+        unread_notifications = []
         widgets = []
-
-    activities = person.activities.all().order_by("-created")[:5]
-
-    context["activities"] = activities
-
-    announcements = Announcement.objects.at_time().for_person(person)
-    context["announcements"] = announcements
+        announcements = []
 
     if len(widgets) == 0:
         # Use default dashboard if there are no widgets
@@ -235,6 +241,8 @@ def index(request: HttpRequest) -> HttpResponse:
     context["widgets"] = widgets
     context["media"] = media
     context["show_edit_dashboard_button"] = show_edit_dashboard_button
+    context["activities"] = activities
+    context["announcements"] = announcements
 
     return render(request, "core/index.html", context)