04 — Information Architecture (Homework Module)
- 1. Zone: authenticated app → Homework destination
- 2. Route table (module-owned; extends
00-shared/05 §4) - 3. Screen hierarchy
- 4. Modal hierarchy (module, per
00-shared/05 §5) - 5. Screen relationships
- 6. Quick actions / FAB / context menus
- 7. Information needs per screen (content model)
- 8. Accessibility of IA
Where Homework screens live in the shell (00-shared/05 §2:
/homeworkdestination, roles teacher, student, parent-read). Routes mirror the API exactly:homework.controller.tsexposesPOST /homework,GET /homework/class/:classId,GET /homework/:id,PATCH /homework/:id,DELETE /homework/:id,POST /homework/:id/submit,GET /homework/:id/submissions,PATCH /homework/:id/submissions/:submissionId/grade.
1. Zone: authenticated app → Homework destination
AppShell (/homework branch)
└─ /homework HomeworkList (role-filtered)
├─ /homework/new Create/Edit form (teacher/admin)
├─ /homework/:id Homework detail
│ ├─ submissions tab (teacher/admin) → grading sheet
│ └─ grade feedback (student/parent) → submission detail
└─ /homework/:id/edit Edit form (teacher/admin; PATCH)
- Phone: push navigation; Tablet/desktop (≥ 840 dp): master-detail — list left,
detail right (
00-shared/04 §6).
2. Route table (module-owned; extends 00-shared/05 §4)
| Route | Screen | Auth | Source API |
|---|---|---|---|
/homework | Homework list (class-filtered) | JWT | GET /homework/class/:classId |
/homework/new | Create homework form | JWT (UI-gated to teacher/admin — OQ-9) | POST /homework (+ POST /files/upload) |
/homework/:id | Homework detail + my submission | JWT | GET /homework/:id, GET /homework/:id/submissions |
/homework/:id/edit | Edit form | JWT | PATCH /homework/:id |
/homework/:id/submissions | Submission list (teacher) | JWT | GET /homework/:id/submissions |
/homework/:id/submissions/:submissionId | Grading sheet / grade feedback | JWT | PATCH …/grade; GET /files/:id/download |
/homework/:id/submit | Submission form (student) | JWT | POST /homework/:id/submit (+ POST /files/upload) |
Deep link: studylyon://homework/:id (00-shared/05 §4).
3. Screen hierarchy
flowchart TD
HW[/homework/ list/] --> NEW[/homework/new create/]
HW --> D[/homework/:id detail/]
D --> E[/homework/:id/edit/]
D --> SUB[/homework/:id/submit/]
D --> SL[/homework/:id/submissions teacher/]
SL --> GS[/submissions/:submissionId grade sheet/]
D --> FD[/grade feedback student/]
- List is the hub: creation, detail, and (teacher) submissions all branch from it.
- Detail is role-shaped: student sees Submit + grade feedback; teacher sees Edit/Delete menu + Submissions; parent sees read-only (planned).
4. Modal hierarchy (module, per 00-shared/05 §5)
- Snackbar/toast — "Homework assigned", "Submitted", "Graded", "Copied" (attachment).
- Bottom sheet — attachment preview picker, grade summary quick-view.
- Dialog — delete confirm, regrade confirm ("overwrites existing grade"), submit confirm when late (client-computed flag).
- Full-screen page — create/edit form (> 3 fields → page), grading sheet (list-like, full screen for batch work).
- Loader — inline spinners / skeletons; never full-screen dual column.
5. Screen relationships
- List → detail → edit returns → detail refreshes (
Refresh). - Detail → submissions → grade sheet returns → submission row shows new grade.
- Student detail → submit success → detail shows "Submitted" state (server doc is the single source of truth).
- Any homework state change on server (graded elsewhere) → next screen open re-fetches;
WS
(planned)topic for homework not in00-shared/07 §8list — usenotification.new+ pull-to-refresh.
6. Quick actions / FAB / context menus
- FAB on list: "New homework" (teacher/admin only; one FAB per screen,
00-shared/05 §7). - Context menu on homework row: Edit, Delete (teacher/admin). On submission row (teacher): Open, Grade.
- Swipe (phone): row actions Edit/Delete (≤ 2,
00-shared/08 §1). - Keyboard (desktop):
Nnew homework on list;Esccloses sheets/dialogs.
7. Information needs per screen (content model)
| Screen | Primary data | Secondary |
|---|---|---|
| List | title, dueDate, subjectId, status (homework.schema.ts:18-34) | teacher name (resolved), my-submission badge |
| Detail | full doc + attachments + description | submissions count (teacher) / my submission + grade (student) |
| Grade sheet | submissions: studentId, status, submittedAt, marks?, remarks? (homework-submission.schema.ts:9-31) | attachment preview, late badge (client-computed) |
8. Accessibility of IA
- One
headlineMediumper screen; list rows readtitle, subject, due; grade rows readstudent, status, marks. - Focus order: list → filter → FAB; forms in field order (
08_Form_Specifications.md).