A comprehensive React Native + TypeScript mobile platform serving 5 distinct user roles with 40+ screens, offline-first architecture, end-to-end encrypted messaging, rubric-based grading, and integrated fee collection via M-Pesa.
Scale
The Problem
Most Kenyan schools still rely on paper registers, SMS-based communication, and manual fee collection. Parents have no real-time visibility into their child's academic progress. Teachers spend hours on administrative tasks instead of teaching. School administrators lack data-driven insights for decision making.
Existing school management tools are designed for Western markets, require constant internet connectivity, and don't support M-Pesa fee collection โ making them impractical for the Kenyan context.
The Solution
StalloyceEdu provides a unified mobile experience for all school stakeholders. Students access assignments and grades. Teachers manage classes, take attendance, and grade with customizable rubrics. Parents monitor progress and pay fees. School admins oversee operations with dashboards. System admins manage multi-school deployments.
The offline-first architecture means the app works fully in areas with poor connectivity, syncing data when connection is restored. End-to-end encrypted messaging ensures private parent-teacher communication. M-Pesa integration handles fee collection with automated receipt generation.
User Roles
Assignment submission, grade viewing, timetable access, resource downloads, attendance history, and peer messaging.
Class management, attendance tracking, rubric-based grading, assignment creation, parent communication, and performance analytics.
Real-time grade monitoring, fee payment via M-Pesa, teacher messaging, attendance alerts, and event calendar.
Staff management, fee reconciliation, student enrollment, performance dashboards, report generation, and announcement broadcasting.
Multi-school management, platform configuration, user provisioning, data export, and system health monitoring.
Features
Tech Stack
React Native with Expo SDK 52 for cross-platform delivery. TypeScript throughout for type safety across 40+ screens.
Firebase Authentication with multi-role claims, Firestore for real-time data, and Cloud Functions for server-side logic.
TweetNaCl for end-to-end message encryption. Per-device key generation with secure storage via Expo SecureStore.
Local SQLite database for offline-first operation with bi-directional sync engine handling conflict resolution on reconnection.
Challenges & Learnings
Five distinct user roles with overlapping but different data needs required a carefully designed state architecture. Role-based navigation guards and conditional UI rendering across 40+ screens.
When a teacher grades offline and a parent pays fees offline, both writing to the same student record, conflict resolution strategy determines which version wins. Implemented last-write-wins with field-level merging.
TweetNaCl's key exchange in a mobile context with multiple devices per user required implementing a key distribution protocol that works across reinstalls and device changes.