> ## Documentation Index
> Fetch the complete documentation index at: https://docs.criar.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Dashboard Module

> SKOLE-DASH — Dashboard Module

# SKOLE-DASH — Dashboard Module

**Module ID:** `SKOLE-DASH` | **Version:** 1.0 | **Status:** Active\
**Products:** 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_id` and 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_id` for 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 |

**Components:**

| 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    |
