Notice Board
Staff-managed notices for guardians — campus-targeted or school-wide, with fire-and-forget guardian notification on publish.
The notice board is the guardian-facing announcements surface: staff post a notice (title, description, optional isFeatured), targeted at one campus or school-wide (campusId nullable), and guardians of that campus's students are notified.
| Piece | How it works |
|---|---|
| Entity | notice_board — @TenantScoped(), nullable campusId (null = school-wide), isFeatured flag |
| Staff CRUD | notice-board routes, each guarded @RequirePermissions on Resource.NOTICE_BOARD (CREATE/LIST/READ/UPDATE/DELETE) |
| Guardian notification | On create, the service resolves guardians via guardian_x_student links for the campus and emails them — fire-and-forget (.catch + log; a mail failure never fails the create) |
Not year-scoped — notices are operational content, not academic records.
No in-app surface yet
As of July 2026 the Education Hub has no notice-board UI — no staff screen to create notices and no guardian screen to read them. The API and the email notification are live; the frontend surface is still to be built. Don't document (or promise) an on-screen flow yet.