Back to Projects
Full Stack2023
iScore — School Management SaaS Platform
Full-stack development of a production school management platform serving ~300 schools and 110,000+ users.
Overview
iScore is a production multi-tenant SaaS platform for school management, serving ~300 schools and 110,000+ users with multiple user roles and granular teacher permissions.
Problem
Schools needed a single platform to manage students, staff, schedules, permissions, approvals, and daily school operations across independent tenants while keeping each school's data and access rules isolated.
Requirements
- Support ~300 independent school tenants and 110,000+ users on shared infrastructure
- Support multiple user roles with granular, school-specific permissions
- Maintain and evolve a production platform used daily by schools without disrupting existing workflows
- Modernize the mobile application by migrating from React Native to Flutter while preserving backend compatibility
Architecture
A multi-tenant Node.js/Express backend serves all schools from shared infrastructure, with MongoDB as the primary data store and authorization rules based on school membership, user roles, and granular teacher permissions. The platform includes an Angular web application and a Flutter mobile application migrated from the previous React Native codebase.
Technical Challenges
Evolving a large production system without disrupting active schools
New features and architectural changes had to be introduced while schools continued relying on the platform for daily operations.
Modeling fine-grained permissions across independent schools
Access depended on school membership, user role, and teacher-specific permissions, requiring flexible authorization while maintaining strict tenant isolation.
Migrating the mobile application while preserving compatibility
The legacy React Native application was migrated to Flutter while keeping the existing backend contracts and user workflows stable.
Key Decisions
Migrate the mobile application from React Native to Flutter
Flutter was chosen to improve maintainability, UI consistency, and development speed while allowing the existing backend and business logic to remain compatible.
Solution
Continued developing and maintaining the shared multi-tenant backend and Angular web application while redesigning and migrating the legacy React Native mobile application to Flutter.
Results
- Platform serves ~300 schools and 110,000+ users in production.
- Successfully migrated the legacy React Native mobile application to Flutter while preserving existing backend integration and user workflows.
- Improved long-term maintainability by consolidating mobile development around a modern Flutter architecture.
Lessons Learned
- Large migrations are safer when backend compatibility is preserved and functionality is moved incrementally instead of rewriting the entire system at once.