Safa Khier
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.