Skip to main content

SKOLE-NOTB — Noticeboard Module

Module ID: SKOLE-NOTB | Version: 1.0 | Status: Active
Products: Parent App (read) · Teacher App (create/manage) · Web App (manage)

1. Overview

FieldValue
Module NameNoticeboard
Module CodeNOTB
Business ValueCentral broadcast channel for formal school announcements (fee due dates, holidays, exam schedules, circulars). Provides a permanent, searchable record replacing physical notice boards.

Scope In

  • Post, edit, soft-delete notices with title, description, type
  • All parents and staff see the same school-wide feed
  • Filter by notice_type

Scope Out

  • Targeted notices to specific grade/student (use Activities for that)
  • Email/push delivery of notices (planned)

2. Requirements

Functional Requirements (FR)

What the module must DO — actions, behaviors, and outcomes.
  • SKOLE-NOTB-FR001: The module shall allow teachers and admins to create formal notices with title, description, and type.
  • SKOLE-NOTB-FR002: The module shall support specific notice types: general, exam, holiday, fee, and circular.
  • SKOLE-NOTB-FR003: The module shall enable authorized users to edit and soft-delete existing notices.
  • SKOLE-NOTB-FR004: The module shall provide all school community members with a synchronized, school-wide notice feed.
  • SKOLE-NOTB-FR005: The module shall allow users to filter notices by their assigned type.

Non-Functional Requirements (NFR)

How well the module must do it — performance, security, and reliability.
  • SKOLE-NOTB-NFR001: The module shall perform chronological sorting by displaying notices in newest-first order.
  • SKOLE-NOTB-NFR002: The module shall behave reliably by strictly excluding soft-deleted notices (notice_deleted = 1) from all active feeds.
  • SKOLE-NOTB-NFR003: The module shall ensure consistent visibility across all platform surfaces (Parent, Teacher, and Web apps).

Constraints

Rules and boundaries — tech choices and platform restrictions.
  • C001: We must treat Noticeboard as a school-wide broadcast module, unlike the student-targeted Activities module, to ensure broad dissemination of formal information.
  • C002: We must reuse the Engagement module’s reaction capabilities to allow parents to acknowledge formal notices.

3. Sub-modules / Backlog

IDSub-modulePriorityStatusEstimateLinked FR
SKOLE-NOTB-SM001Teacher notice managementP0Done1dFR001–FR003
SKOLE-NOTB-SM002Parent noticeboard viewerP0Done1dFR004–FR005
SKOLE-NOTB-SM003Web admin noticeboardP1Done1dFR001–FR005

4. Logical Implementation

Core Query (both parent and teacher)

GET /parent-app/noticeboard?notice_type=
  WHERE skole_id = jwt.skole_id AND notice_deleted = 0
  ORDER BY created_at DESC

Error Handling

ScenarioHTTPMessage
Missing skole_id400”skole_id is required”
Notice not found404”Notice not found”

5. UI Requirements

Parent App — NoticeboardScreen

IDScreenRouteDescription
SKOLE-NOTB-UI001NoticeboardScreen/noticeboardScrollable feed of school notices with type chips
Components:
IDComponentProps
SKOLE-NOTB-UC001NoticeCardnotice, onPress
SKOLE-NOTB-UC002NoticeTypeFiltertypes[], selected, onChange
SKOLE-NOTB-UC003NoticeDetailModalnotice, visible, onClose

Teacher App & Web App

IDScreenRouteDescription
SKOLE-NOTB-UI002Teacher NoticeboardScreen/noticeboardFeed with create/edit/delete controls
SKOLE-NOTB-UI003Admin Noticeboard/:skoleId/noticeboardWeb CRUD for notices

6. Conditional Expressions

IDExpressionTriggerTrue ActionFalse Action
SKOLE-NOTB-CE001notice_deleted === 1DB queryExcludeInclude
SKOLE-NOTB-CE002notice_type === 'exam'NoticeCard renderBlue type badgeOther color
SKOLE-NOTB-CE003notice_type === 'fee'NoticeCard renderOrange type badgeOther color
SKOLE-NOTB-CE004user.type === 'staff'Screen renderShow edit/delete on cardRead-only

7. Internal Module Connections

DirectionModuleData / EventCondition
NOTB → AUTHAuthJWT skole_id scopes noticesEvery request
ENGG → NOTBEngagementReactions attach via entity_type='noticeboard'On react action

8. Database Tables

IDTableRole
SKOLE-NOTB-TB001noticeboardsAll notice records

noticeboards Key Columns

ColumnTypeNotes
idInt PK
skole_idVarChar(15)Tenant key
notice_titleVarChar(255)
notice_descVarChar(255)
notice_typeVarChar(255)general/exam/holiday/fee/circular
notice_deletedInt0=active, 1=deleted

9. API Endpoints

IDMethodRouteAuthDescription
SKOLE-NOTB-EP001GET/parent-app/noticeboardJWT (parent)View all notices
SKOLE-NOTB-EP002GET/teachers-app/noticeboardJWT (staff)View all notices
SKOLE-NOTB-EP003POST/teachers-app/noticeboardJWT (staff)Create notice
SKOLE-NOTB-EP004PUT/teachers-app/noticeboard/:idJWT (staff)Update notice
SKOLE-NOTB-EP005DELETE/teachers-app/noticeboard/:idJWT (staff)Soft-delete notice
SKOLE-NOTB-EP006GET/web-app/noticeboardJWT (user)Admin view notices
SKOLE-NOTB-EP007POST/web-app/noticeboardJWT (user)Admin create notice
SKOLE-NOTB-EP008PUT/web-app/noticeboard/:idJWT (user)Admin update notice
SKOLE-NOTB-EP009DELETE/web-app/noticeboard/:idJWT (user)Admin delete notice