Skip to content

Commit bcf13ae

Browse files
bump version and update readme
1 parent 746377e commit bcf13ae

4 files changed

Lines changed: 68 additions & 19 deletions

File tree

README.md

Lines changed: 66 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ A comprehensive software tool for managing school information flows between teac
66

77
School Data Hub integrates with data exported from the NRW Education ministry software ([SVWS](https://www.svws.nrw.de/)) to build extended models of pupils in the backend without uploading any personal data to the server. The backend models are then used to add and manage additional information collaboratively.
88

9-
10-
119
## Architecture & Data Protection
1210

1311
### Privacy-First Approach
1412

15-
School Data Hub implements a unique privacy-first architecture by **decoupling personal information from the database**. Instead of storing personal data on the server, this information is **stored locally on each device and shared through secure data transport between devices**.
13+
School Data Hub implements a privacy-first architecture by **decoupling personal information from the database**. Instead of storing personal data on the server, this information is **stored locally on each device and shared through secure data transport between devices**.
1614

1715
### How It Works
1816

@@ -22,13 +20,18 @@ School Data Hub implements a unique privacy-first architecture by **decoupling p
2220

2321
3. **Authentication**: After scanning the keys, users can log in with their credentials. However, even after login, no pupil data will be available.
2422

25-
4. **Pupil Data Import**: Users must obtain pupil credentials by transferring them from another device (typically from a desktop version of the app). These credentials are stored in secure storage. API calls require both authenticated access **and** the pupil's internal id.
23+
4. **Pupil Data Import**: Users must obtain pupil credentials by transferring them from another device (typically from a desktop version of the app), or by importing from an Excel template. These credentials are stored in secure storage. API calls require both authenticated access **and** the pupil's internal id.
24+
25+
### Real-Time Collaboration
26+
27+
Changes made by one user are pushed in real-time to all connected clients via `HubStreamService`, a server-sent event stream built on Serverpod streaming. This ensures that attendance records, schoolday events, authorizations, competence data, and learning support updates are immediately visible to all colleagues.
2628

2729
### Encrypted Data
2830

2931
The following data is encrypted:
3032
- All stored files on the server
3133
- Sensitive information text, like special needs support strings
34+
- Encryption is gradually being migrated to an updated format; the client handles this transparently
3235

3336
## Features
3437

@@ -44,11 +47,12 @@ Track student attendance with comprehensive details:
4447

4548
### Schoolday Events
4649

47-
Document and track schoolday events with photo attachments. Events can include:
50+
Document and track schoolday events with photo and audio attachments. Events can include:
4851
- Admonitions
4952
- Accident reports
5053
- Parent meetings
5154
- Any other incidents associated with pupils
55+
- Event type icons for quick visual identification
5256

5357
### School Lists
5458

@@ -70,6 +74,7 @@ Manage a school-specific currency system used as a reward mechanism. Students ca
7074
- School merchandise (t-shirts, buttons)
7175
- School supplies (pencils, erasers)
7276
- Small games and activities (frisbees, etc.)
77+
- Credit transaction history chart (WIP)
7378

7479
### Special Information (WIP)
7580

@@ -87,6 +92,10 @@ Document and track individual learning support plans for pupils. This feature su
8792
- **Status Tracking**: Document category statuses as estimated by the responsible teacher
8893
- **Development Goals**: Document educational learning support goals that are accessible for colleagues teaching the pupil.
8994
- **Collaborative Progress**: Enable multiple colleagues to share documentation about the goals' progress over time.
95+
- **Document & Audio Attachments**: Attach documents and audio recordings to support goals and checks
96+
- **Special Needs Teacher**: Assign a special needs teacher per learning support plan
97+
- **Configurable Print Options**: Control which support categories appear in printed reports
98+
- **PDF Generation**: Print learning support plans as PDF documents
9099

91100
### Workbooks
92101

@@ -103,23 +112,28 @@ Track and manage student competencies:
103112
- Competence-based assessments
104113
- Progress tracking
105114
- Semester-based reporting
115+
- Add, edit, and delete competencies and support categories
116+
- Attach documents to competence goals
117+
- Competence report PDF generation
106118

107119
### Library Books Management
108120

109121
Digital library management system for tracking books:
110122
- Book catalog with ISBN support
111123
- Location tracking for library books
112124
- Book tagging system
113-
- Lending management
125+
- Lending management with audio recording support
114126
- Book search functionality
115127
- Multiple book instances per ISBN
128+
- Lending-specific filters
116129

117130
### Pupil Profile
118131

119132
Comprehensive pupil profile view consolidating all information about a student, including:
120133
- Parents' language proficiency in German (important for multilingual families)
121134
- Sibling information with relationship awareness
122135
- Afterschool care details
136+
- Kindergarten information
123137
- All other pupil-related data
124138

125139
### Timetable Management (WIP)
@@ -131,8 +145,31 @@ Complete timetable management system for scheduling and organizing classes:
131145
- Classroom/location management
132146
- Flexible time slot configuration
133147
- Create, edit, and delete scheduled lessons
148+
- Drag-and-drop lesson scheduling
149+
- Multi-teacher support per lesson
134150
- Filter by weekday and lesson group
135151

152+
### Over-the-Air Updates
153+
154+
The app supports code push updates via [Shorebird](https://shorebird.dev/), allowing patches to be delivered directly to users without requiring a full app store release. The app checks for updates on startup and prompts the user to restart when a patch is available.
155+
156+
### Multi-Instance Support
157+
158+
Use the app with multiple school environments. Users can store several school keys and switch between instances, enabling staff who work across schools to manage all their data from a single device.
159+
160+
### Statistics & Charts
161+
162+
Visual analytics across multiple data domains:
163+
- Attendance statistics
164+
- Schoolday event statistics
165+
- Book lending statistics
166+
- Credit transaction charts
167+
- Pupil demographics (enrollment, groups, languages)
168+
169+
### School Data Management
170+
171+
View and edit school-level information such as school name, logo, and other institutional data.
172+
136173
### School Calendar
137174

138175
Manage school calendar and semesters:
@@ -145,11 +182,12 @@ Manage school calendar and semesters:
145182
### User Management
146183

147184
Administrative interface for managing users:
148-
- Add new users
185+
- Add new users (single or batch creation with progress feedback)
149186
- Update user information
150-
- Delete users
187+
- Delete users (with forced logout on deleted devices)
151188
- Reset passwords
152189
- Manage user roles and permissions
190+
- Per-user pupil access authorization
153191

154192
### Matrix Integration (Matrix Corporal)
155193

@@ -158,6 +196,9 @@ If configured with a Synapse server and [Matrix Corporal](https://github.com/dev
158196
- Room membership
159197
- Per-user power levels in rooms
160198
- Sending messages from the admin account to users
199+
- Compulsory rooms (rooms all users must join)
200+
- View reported messages from Matrix admin API
201+
- Account type filtering
161202

162203
## Utilities
163204

@@ -168,14 +209,15 @@ Cross-feature utilities that enhance functionality across the application:
168209
Generate printable PDF reports for:
169210
- Attendance lists (daily and summary reports)
170211
- Individual learning support plans
212+
- Competence reports
171213
- School lists
172214
- Missed classes summaries
173215

174216
### Filters & Search
175217

176218
Advanced filtering and sorting capabilities:
177219
- General filters (class, school year)
178-
- View-specific filters
220+
- Feature-specific filters (school lists, book lendings, learning support plans, Matrix accounts)
179221
- Custom sorting by various criteria
180222
- Quick search functionality
181223

@@ -185,15 +227,29 @@ Email notification system for various events and updates.
185227

186228
### (admin/dev) Logs
187229

188-
- UI implemented to acces and/or delete client and server side logs.
230+
- UI implemented to access and/or delete client and server side logs.
189231
- Copy-to-clipboard buttons to make log sharing easier.
190232

233+
### (admin/dev) Server Model Diagram
234+
235+
In-app viewer for the server's relational data model, useful for development and debugging.
236+
237+
### Audio Recordings
238+
239+
Record and attach audio files across multiple features:
240+
- Schoolday event documentation
241+
- Book lending notes
242+
- Competence goal documentation
243+
- Support goal and check attachments
244+
191245
## Technology Stack
192246

193247
- **Client**: Flutter (cross-platform mobile and desktop application)
194248
- **Backend**: Serverpod 2.9.1 (Dart-based server framework)
195249
- **Programming Language**: Dart (SDK >=3.8.0)
196250
- **State Management**: watch_it 1.7.0
251+
- **CI/CD**: GitHub Actions (deploys triggered by commits affecting server packages)
252+
- **OTA Updates**: Shorebird (Android)
197253

198254
## Setup
199255

school_data_hub_flutter/README.md

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,6 @@ It implements a privacy-first architecture where sensitive pupil data is stored
1515

1616
**Shorebird Integration**: The client uses Shorebird for over-the-air (OTA) code push updates, allowing for rapid deployment of bug fixes and feature updates without requiring app store releases.
1717

18-
## Prerequisites
19-
20-
- **Flutter SDK**: >=3.19.0
21-
- **Dart SDK**: >=3.8.0
22-
- **Serverpod**: The project uses Serverpod 2.9.1 for backend communication
23-
- **School Data Hub Client**: A local dependency (`../school_data_hub_client`)
24-
2518
## Getting Started
2619

2720
### Installation

school_data_hub_flutter/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
1313
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
1414
# Read more about iOS versioning at
1515
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
16-
version: 0.5.5+1
16+
version: 0.5.9+1
1717

1818
environment:
1919
sdk: '>=3.8.0 <4.0.0'

school_data_hub_server/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: school_data_hub_server
22
description: Starting point for a Serverpod server.
3-
version: 0.5.3+1
3+
version: 0.5.9+1
44

55
environment:
66
sdk: '>=3.3.0 <4.0.0'

0 commit comments

Comments
 (0)