diff --git a/frontend/README.md b/frontend/README.md
index 4455887..2f222a0 100644
--- a/frontend/README.md
+++ b/frontend/README.md
@@ -45,10 +45,10 @@ npm run dev
- β Submitted confirmation page and .well-known DevTools route
### **What's Coming (Phase 3)**
-- π§ Notifications: Integrate bulk mark-read endpoint end-to-end with optimistic cache and retry/backoff (target `POST /api/notifications/read` with `{ ids: string[] }`).
-- π§ Performance polish: Add skeleton loaders for Analytics and Students pages during initial load/refetch.
-- π§ Testing: Extend Playwright for grading workspace edits/publish flow and notifications realtime badge; continue broadening a11y.
-- π§ Realtime: Wire assessment publish/update and queue changes; expand predicate-based cache invalidation and coverage.
+- π§ Testing: Extend a11y and additional UI smoke as new features land.
+- β Notifications: Bulk mark-read endpoint integrated with optimistic cache + retry/backoff.
+- β Realtime: Assessment publish/update and grading queue change events are wired to invalidate caches via predicate-based invalidation.
+- β Performance polish: Skeleton loaders added for Analytics and Students pages during initial load/refetch.
@@ -157,6 +157,12 @@ frontend/
- `NEXT_PUBLIC_AUTH_MODE=mock`
- To run against a real API/gateway, set `NEXT_PUBLIC_AUTH_MODE=api` and configure `NEXT_PUBLIC_API_URL` or `NEXT_PUBLIC_GATEWAY_URL` accordingly. You may also remove or adjust route stubs in the specs.
+## π Admin Panel Usage (quick notes)
+
+- Admin routes are protected with a role guard; non-admin users are redirected to their dashboard.
+- When logged in as an admin, the global nav shows βAdminβ and βUsersβ links; the current route is highlighted.
+- Admin pages are scaffolded under `/admin` with sections for Dashboard, Users, Settings, Audit, and Reports. Data wiring will be incrementally added as APIs land.
+
## οΏ½ποΈ Application Architecture
### **Single Page Application (SPA) Structure**
@@ -1164,10 +1170,9 @@ export function AssessmentForm({ assessment, onSubmit }: AssessmentFormProps) {
- π Documentation
### Next steps
-- Notifications: integrate bulk mark-read API end-to-end with optimistic cache + retry/backoff
-- Performance polish: add skeleton loaders for Analytics and Students pages during initial load/refetch
-- Testing: extend Playwright to cover grading workspace edits/publish flows and notifications realtime badge updates
-- Realtime: wire assessment publish/update and queue changes; expand predicate-based invalidation and coverage
+- Testing: keep expanding E2E/a11y as admin features are implemented
+- Admin: wire dashboard metrics, users table (pagination/search/sort/filters), settings save/load with validation + audit log, audit filters/search/export, and system monitoring tiles
+- Realtime: broaden event coverage as new admin/system events are introduced
---
diff --git a/frontend/TODO.md b/frontend/TODO.md
index 4c4a6a0..d08ce14 100644
--- a/frontend/TODO.md
+++ b/frontend/TODO.md
@@ -4,12 +4,12 @@ Derived from the Development Roadmap (active, pending items only).
Nice-to-have (adjacent improvements)
-- [ ] Skeletons: Add lightweight skeleton loaders for Analytics and Students pages during initial load and refetch.
+- [x] Skeletons: Add lightweight skeleton loaders for Analytics and Students pages during initial load and refetch.
Upcoming (Phase 3 carryover)
-- [ ] Notifications: Integrate bulk mark-read endpoint end-to-end with optimistic cache and retry/backoff.
-- [ ] Grading workspace E2E: Extend Playwright coverage for edit/publish flows and edge cases.
-- [ ] Realtime: Wire assessment publish/update and queue changes; expand predicate-based invalidation.
+- [x] Notifications: Integrate bulk mark-read endpoint end-to-end with optimistic cache and retry/backoff.
+- [x] Grading workspace E2E: Extend Playwright coverage for edit/publish flows and edge cases.
+- [x] Realtime: Wire assessment publish/update and queue changes; expand predicate-based invalidation.
Phase 4: Admin Experience (actionable tasks)
@@ -52,8 +52,8 @@ System monitoring
- [ ] A11y + unit tests
Admin navigation & permissions
-- [ ] Guard admin routes; redirect non-admin users
-- [ ] Add Admin to nav and highlight current route
+- [x] Guard admin routes; redirect non-admin users
+- [x] Add Admin to nav and highlight current route
- [ ] Role-based rendering of sensitive actions/components
Docs & E2E
diff --git a/frontend/src/app/teacher/assessments/[assessmentId]/analytics/loading.tsx b/frontend/src/app/teacher/assessments/[assessmentId]/analytics/loading.tsx
new file mode 100644
index 0000000..1644a67
--- /dev/null
+++ b/frontend/src/app/teacher/assessments/[assessmentId]/analytics/loading.tsx
@@ -0,0 +1,46 @@
+import { Skeleton } from "@/components/ui/skeleton";
+
+export default function Loading() {
+ return (
+