# Africa Alert - Screen & Navigation Documentation
## Overview
Africa Alert is a Progressive Web App (PWA) for school management with **4 distinct user roles**, each with their own personalized dashboard and navigation.
**Roles:**
- π **Admin** - Full school management access (8 nav items)
- π©βπ« **Teacher** - Teaching and attendance management (5 nav items)
- π¨βπ **Student** - Personal portal and attendance view (4 nav items)
- π¨βπ©βπ§ **Parent** - Children's progress and fee management (5 nav items)
---
## Navigation Architecture
### Role-Based Navigation
The navigation adapts automatically based on the logged-in user's role. Each role sees only the links relevant to their responsibilities.
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π« Africa Alert [Role-Specific Links...] [Badge] [Avatar] β
β School Management [Logout] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
### Navigation Config by Role
#### Admin Navigation (Full Access)
| Icon | Label | Route | Description |
|------|-------|-------|-------------|
| π | Dashboard | `/dashboard/admin` | Overview & stats |
| π¨βπ | Students | `/students` | Manage students |
| π©βπ« | Teachers | `/teachers` | Manage teachers |
| π | Classes | `/classes` | Manage classes |
| π
| Attendance | `/attendance` | Take/view attendance |
| π° | Fees | `/fees` | Manage fees |
| π¬ | Messages | `/messages` | Internal messaging |
| π
| Events | `/events` | School calendar |
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π« Africa Alert β
β School Management β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π Dashboard β π¨βπ Students β π©βπ« Teachers β π Classes β ... β
β [+ 4 more links] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
#### Teacher Navigation (Teaching Focus)
| Icon | Label | Route | Description |
|------|-------|-------|-------------|
| π | Dashboard | `/dashboard/teacher` | Teaching overview |
| π | My Classes | `/classes` | View assigned classes |
| π | Attendance | `/attendance` | Mark attendance |
| π¬ | Messages | `/messages` | Communication |
| π
| Schedule | `/events` | View calendar |
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π« Africa Alert β
β School Management β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π Dashboard β π My Classes β π Attendance β π¬ Messages β π
Schedule β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
#### Student Navigation (Personal Portal)
| Icon | Label | Route | Description |
|------|-------|-------|-------------|
| π | My Dashboard | `/dashboard/student` | Personal portal |
| π
| My Attendance | `/attendance` | View own attendance |
| π¬ | Messages | `/messages` | Inbox |
| π
| Events | `/events` | School events |
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π« Africa Alert β
β School Management β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π My Dashboard β π
My Attendance β π¬ Messages β π
Events β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
#### Parent Navigation (Children Focus)
| Icon | Label | Route | Description |
|------|-------|-------|-------------|
| π | Dashboard | `/dashboard/parent` | Children overview |
| π¨βπ©βπ§ | Children | `/attendance` | View children's attendance |
| π° | Fees | `/fees` | View & pay fees |
| π¬ | Messages | `/messages` | School communication |
| π
| Events | `/events` | School calendar |
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π« Africa Alert β
β School Management β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π Dashboard β π¨βπ©βπ§ Children β π° Fees β π¬ Messages β π
Events β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
---
## Navigation Bar Components
### 1. Logo & Brand
```
ββββββββββββββββββ
β π« Africa Alert β
β School Mgmt β
ββββββββββββββββββ
```
- SVG icon with blue background
- App name and subtitle
- Clickable β redirects to role dashboard
### 2. Navigation Links
- Horizontal list of links (center)
- Active state: blue background + blue text
- Hover state: light gray background
- Icon + label for each link
- Responsive: hidden on mobile
### 3. Role Badge
```
ββββββββββββββ
β β Admin β (red background)
ββββββββββββββ
```
| Role | Background | Text | Border |
|------|------------|------|--------|
| Admin | `#fee2e2` | `#991b1b` | `#fecaca` |
| Teacher | `#dbeafe` | `#1e40af` | `#bfdbfe` |
| Student | `#dcfce7` | `#166534` | `#bbf7d0` |
| Parent | `#fef3c7` | `#92400e` | `#fde68a` |
### 4. User Avatar
```
ββββββββββββββββββββββββββββ
β [JS] John Smith β
β john@school.com β
ββββββββββββββββββββββββββββ
```
- Circular avatar with user initials
- Gradient purple background
- Full name + email displayed
### 5. Logout Button
- Red hover state
- Icon + text (text hidden on mobile)
---
## Login Screen
**URL:** `/login`
**Access:** Public (all users)
### UI Layout
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β βββββββββββββββββββββββββββββββββββ β
β β π« Africa Alert β β
β β School Management System β β
β β β β
β β βββββββ βββββββ βββββββ ββββββββ β
β β β π β β π©βπ«β β π¨βπβ β π¨βπ©βπ§ββ β
β β βAdminβ βTeachβ βStudβ βParentββ β
β β βββββββ βββββββ βββββββ ββββββββ β
β β β β
β β Email: [________________] β β
β β Password: [________________] β β
β β β β
β β [ Sign In ] β β
β β β β
β β Demo Accounts: β β
β β β’ admin@school.com / admin123 β β
β β β’ teacher@school.com / ... β β
β βββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
### Features
1. **Role Quick-Select Buttons**
- Click to auto-fill credentials
- Visual hover feedback
- 4 role options
2. **Login Form**
- Email + password inputs
- Loading state on submit
- Error display
3. **Demo Accounts List**
- Admin: `admin@school.com` / `admin123`
- Teacher: `teacher@school.com` / `teacher123`
- Student: `student@school.com` / `student123`
- Parent: `parent@school.com` / `parent123`
### Login Flow
```
User clicks role
β
Credentials auto-fill
β
User clicks Sign In
β
JWT token stored in localStorage
β
Redirect to role-specific dashboard
β
Navigation updates to show role-appropriate links
```
---
## Dashboard Screens
### Admin Dashboard (`/dashboard/admin`)
**Purpose:** Complete school management overview
**Stats Cards:**
| Card | Icon | Value | Trend |
|------|------|-------|-------|
| Students | π¨βπ | 245 | +12% |
| Teachers | π©βπ« | 28 | +5% |
| Classes | π | 12 | +3 |
| Revenue | π° | $45K | +18% |
**Sections:**
- Quick Overview (attendance, fees)
- Quick Actions (shortcuts)
- System Status
**Access:** Full CRUD on all modules
---
### Teacher Dashboard (`/dashboard/teacher`)
**Purpose:** Teaching schedule and daily tasks
**Stats Cards:**
| Card | Icon | Value |
|------|------|-------|
| My Classes | π | 4 |
| Periods Today | β° | 6 |
| Pending Tasks | π | 2 |
| Messages | π¬ | 5 |
**Sections:**
- My Classes (assigned)
- Today's Schedule
- Quick Actions
**Access:** View classes, mark attendance, send messages
---
### Student Dashboard (`/dashboard/student`)
**Purpose:** Personal school portal
**Stats Cards:**
| Card | Icon | Value |
|------|------|-------|
| Attendance | π
| 95% |
| Classes | π | 3 |
| Due Fees | π° | $500 |
| Messages | π¬ | 2 |
**Sections:**
- Profile Card (gradient background)
- Today's Classes
- Attendance Summary
- My Fees
- Recent Messages
**Access:** View own data only
---
### Parent Dashboard (`/dashboard/parent`)
**Purpose:** Monitor children's activities
**Stats Cards:**
| Card | Icon | Value |
|------|------|-------|
| Children | π¨βπ©βπ§ | 2 |
| Total Fees | π° | $2,850 |
| Due | β οΈ | $850 |
| Messages | π¬ | 3 |
**Sections:**
- Profile Card
- My Children (with attendance + fees)
- Quick Actions
- Fee Summary
**Access:** View children, pay fees
---
## Module Pages
### Classes (`/classes`)
**Access:** Admin (CRUD), Teacher (view)
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Classes & Subjects β
β βββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ
β β Classes [+] β β Subjects [+] ββ
β β β β ββ
β β Grade 1 - A (40) [π]β β Mathematics (Grade 1) [π] ββ
β β Grade 2 - A (35) [π]β β English (Grade 1) [π] ββ
β β Grade 3 - A (38) [π]β β Science (Grade 1) [π] ββ
β βββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
### Attendance (`/attendance`)
**Access:** All roles (view/edit varies)
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Attendance β
β Date: [2026-01-15] Class: [All Classes βΌ] [Save] β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Student β Present β Absent β Late β Excused β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β Alice Johnson β [β] β [ ] β [ ] β [ ] β β
β β Bob Williams β [ ] β [β] β [ ] β [ ] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
### Fees (`/fees`)
**Access:** Admin (full), Parent (view/pay)
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Fees Management β
β βββββββββββββ βββββββββββββ βββββββββββββ β
β ββ Create β βπ Assign β βπ° Payment β β
β βFee Group β βFees β βRecord β β
β βββββββββββββ βββββββββββββ βββββββββββββ β
β β
β Student Fees: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Student β Fee β Amount β Paid β Status β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β Alice J.β Tuition β $5,000 β$3,000 β π‘ Partial β β
β β Bob W. β Tuition β $5,000 β$5,000 β π’ Paid β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
### Messages (`/messages`)
**Access:** All roles
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Messages [+ Compose]β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β From β To β Subject β Date β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β Admin β Jane S. β Meeting... β Jan 15, 10:30 β β
β β John S. β Admin β Question... β Jan 14, 3:45 β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
### Events (`/events`)
**Access:** All roles
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Events & Calendar [+ Add] β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Date β Title β Type β Description β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β Jan 15 β First Day β π General β β β
β β Feb 20 β Mid-Term Exams β π Exam β Week-long β β
β β Mar 10 β Spring Holiday β π Holidayβ Closed β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
---
## Role Permissions Matrix
| Feature | Admin | Teacher | Student | Parent |
|---------|:-----:|:-------:|:-------:|:------:|
| **Dashboard** | | | | |
| View dashboard | β | β | β | β |
| Role-specific stats | β | β | β | β |
| **Users** | | | | |
| Manage students | β | - | - | - |
| Manage teachers | β | - | - | - |
| View own profile | β | β | β | β |
| **Academic** | | | | |
| Manage classes | β | - | - | - |
| View classes | β | β | β | β |
| Mark attendance | β | β | - | - |
| View attendance | β | β | β | β |
| **Financial** | | | | |
| Manage fees | β | - | - | - |
| View fees | β | - | β | β |
| Pay fees | - | - | - | β |
| **Communication** | | | | |
| View messages | β | β | β | β |
| Send messages | β | β | β | β |
| **Calendar** | | | | |
| Manage events | β | - | - | - |
| View events | β | β | β | β |
**Legend:** β = Full access, - = No access
---
## Responsive Design
### Breakpoints
| Width | Layout | Navigation |
|-------|--------|------------|
| >1024px | Full | Desktop: all links visible |
| 768-1024px | 2-column | Tablet: condensed nav |
| <768px | 1-column | Mobile: hamburger menu |
### Mobile Navigation
- Hamburger menu icon appears
- Full-screen overlay menu
- All links listed vertically
- Logout button at bottom
---
## Route Structure
```
/
βββ login # Public
β
βββ dashboard/
β βββ admin # Admin dashboard
β βββ teacher # Teacher dashboard
β βββ student # Student dashboard
β βββ parent # Parent dashboard
β
βββ students # Admin only
βββ teachers # Admin only
βββ classes # Admin, Teacher
βββ attendance # All roles
βββ fees # Admin, Parent
βββ messages # All roles
βββ events # All roles
```
### Route Protection
1. Check if user is authenticated (JWT token)
2. Check if user has required role
3. Redirect unauthorized users to their dashboard
---
## File Structure
```
africa-alert-pwa/
βββ client/src/
β βββ components/
β β βββ Nav.tsx # Role-aware navigation
β β
β βββ pages/
β β βββ Login.tsx # Login with role select
β β β
β β βββ Students.tsx # Admin only
β β βββ Teachers.tsx # Admin only
β β βββ Classes.tsx # Admin, Teacher
β β βββ Attendance.tsx # All roles
β β βββ Fees.tsx # Admin, Parent
β β βββ Messages.tsx # All roles
β β βββ Events.tsx # All roles
β β β
β β βββ dashboard/
β β βββ AdminDashboard.tsx # Full management
β β βββ TeacherDashboard.tsx # Teaching focus
β β βββ StudentDashboard.tsx # Personal portal
β β βββ ParentDashboard.tsx # Children overview
β β
β βββ store/
β β βββ auth.ts # Zustand auth state
β β
β βββ App.tsx # Routes + protection
β βββ main.tsx # Entry point
β βββ index.css # Global styles
β
βββ server/
β βββ src/
β βββ index.js # API routes
β βββ database/
β βββ init.js # Schema + seed data
β
βββ docker-compose.yml
βββ Dockerfile
βββ README.md
```
---
## Key Implementation Details
### Navigation Config
```javascript
const NAV_CONFIG = {
admin: [
{ path: '/dashboard/admin', label: 'Dashboard', icon: LayoutDashboard },
{ path: '/students', label: 'Students', icon: GraduationCap },
// ... 8 items
],
teacher: [
{ path: '/dashboard/teacher', label: 'Dashboard', icon: Home },
{ path: '/classes', label: 'My Classes', icon: BookOpen },
// ... 5 items
],
// ...
};
```
### Role Colors
```javascript
const ROLE_COLORS = {
admin: { bg: '#fee2e2', color: '#991b1b', border: '#fecaca' },
teacher: { bg: '#dbeafe', color: '#1e40af', border: '#bfdbfe' },
student: { bg: '#dcfce7', color: '#166534', border: '#bbf7d0' },
parent: { bg: '#fef3c7', color: '#92400e', border: '#fde68a' },
};
```
### Route Protection
```javascript
function ProtectedRoute({ children, allowedRoles }) {
const { token, user } = useAuthStore();
if (!token) return ;
if (allowedRoles && !allowedRoles.includes(user.role)) {
return ;
}
return children;
}
```
---
*Document Version: 3.0*
*Last Updated: June 2026*
*Features: Role-based nav, 4 dashboards, permissions matrix, responsive design*