SKOLE-DASH — Dashboard Module
Module ID:SKOLE-DASH | Version: 1.0 | Status: ActiveProducts: Parent App · Teacher App · Web App
1. Overview
| Field | Value |
|---|---|
| Module Name | Dashboard / Home |
| Module Code | DASH |
| Business Value | The entry point after login. Surfaces the most important information at a glance — today’s attendance, pending diary tasks, recent activities, and unread write-to requests. Reduces clicks and keeps users engaged. |
2. Requirements
Functional Requirements (FR)
What the module must DO — actions, behaviors, and outcomes.- SKOLE-DASH-FR001: The module shall show today’s attendance status of the child on the parent dashboard.
- SKOLE-DASH-FR002: The module shall show the count of pending diary entries on the parent dashboard.
- SKOLE-DASH-FR003: The module shall display the most recent 3 activity posts on the parent dashboard.
- SKOLE-DASH-FR004: The module shall surface the unread write-to reply count on the parent dashboard.
- SKOLE-DASH-FR005: The module shall show assigned student count and today’s pending attendance on the teacher dashboard.
- SKOLE-DASH-FR006: The module shall display school statistics (student count, staff count, active notices) on the web admin dashboard.
Non-Functional Requirements (NFR)
How well the module must do it — performance, security, and reliability.- SKOLE-DASH-NFR001: The module shall perform data aggregation from multiple modules (ATND, DIRY, ACTV, WRIT) within 500ms to ensure a responsive landing experience.
- SKOLE-DASH-NFR002: The module shall behave reliably by showing “Not yet recorded” states when source data is unavailable.
- SKOLE-DASH-NFR003: The module shall ensure that dashboard data is scoped correctly to the
skole_idand user permissions.
Constraints
Rules and boundaries — tech choices and platform restrictions.- C001: We must implement the dashboard as a pure aggregator because it does not own the primary data records (which reside in ATND, DIRY, etc.).
- C002: We must support multi-tenant scoping via
skole_idfor all statistics shown on the web admin dashboard.
3. UI Requirements
Parent App — Dashboard
| ID | Screen | Route | Description |
|---|---|---|---|
SKOLE-DASH-UI001 | DashboardScreen | / | Greeting, child selector, stat cards, recent activity feed |
| ID | Component | Props |
|---|---|---|
SKOLE-DASH-UC001 | WelcomeBanner | parentName, date |
SKOLE-DASH-UC002 | AttendanceSummaryCard | status, checkIn, checkOut |
SKOLE-DASH-UC003 | PendingDiaryCard | count, onPress |
SKOLE-DASH-UC004 | RecentActivitiesFeed | activities[] |
SKOLE-DASH-UC005 | WriteToUnreadBadge | count |
Teacher App — HomeScreen
| ID | Screen | Route | Description |
|---|---|---|---|
SKOLE-DASH-UI002 | HomeScreen | /home | Quick stats: students assigned, attendance pending today, latest diary entries |
Web App — Dashboard
| ID | Screen | Route | Description |
|---|---|---|---|
SKOLE-DASH-UI003 | Admin Dashboard | /:skoleId/dashboard | School overview stats grid + recent activity timeline |
4. Conditional Expressions
| ID | Expression | Trigger | True Action | False Action |
|---|---|---|---|---|
SKOLE-DASH-CE001 | children.length > 1 | Parent dashboard | Show child switcher tab | Show single child stats |
SKOLE-DASH-CE002 | todayAttendance === null | Parent dashboard | Show “Not yet recorded” | Show attendance status |
SKOLE-DASH-CE003 | pendingDiary > 0 | PendingDiaryCard | Show count badge in red | Show green checkmark |
SKOLE-DASH-CE004 | user.type === 'staff' | Home screen | Teacher dashboard layout | — |
5. Internal Module Connections
| Direction | Modules Aggregated | Data / Event |
|---|---|---|
| DASH → ATND | Attendance | Today’s attendance status per child |
| DASH → DIRY | Diary | Pending diary entry count |
| DASH → ACTV | Activities | Latest 3 activities in feed |
| DASH → WRIT | Write To | Unread reply count |
| DASH → STUD | Students | Teacher’s assigned student count |