Skip to main content

SyncAD Documentation

SyncAD is a comprehensive, multi-tenant school administration platform serving 4 user roles across web and mobile — built on a central PostgreSQL database with per-school isolated database instances.

Platforms

PlatformTechnologyUsersKey Features
Web AdminNestJS + Next.jsSchool admins, Super adminsFull module management, student/employee CRUD, fee collection, reporting
Parents AppFlutterParentsStudent academics, attendance, fees, announcements, messages
Teachers AppFlutterTeachersMark attendance, enter exam results, approve leaves, announcements
Driver AppFlutterBus driversBus tracking, trip lifecycle, student boarding, live GPS

Architecture Overview

SyncAD uses multi-tenancy at the database level:

  • Central DB — School metadata, user accounts, role permissions, school configuration
  • Per-School DB — Student records, attendance, exam results, fee ledgers, library books, bus routes (isolated PostgreSQL, 50+ tables per school)
  • RoutinggetDbFromSchoolId() in packages/db determines which school DB to query based on JWT school ID claim

Real-time — Bus tracking uses Socket.IO with a Redis adapter. Drivers broadcast GPS coordinates; parents see live bus location.

Infrastructure — AWS RDS (PostgreSQL with TLS), S3 (presigned URLs for file uploads), SES (transactional email), SNS → FCM (push notifications), Route53 (school subdomains).

Authentication

All 4 platforms share a common auth foundation:

MethodPlatformPurpose
Phone + OTPAll mobile appsInitial authentication
JWT Access TokenAll platformsAPI authorization (15min expiry)
Refresh TokenAll platformsToken rotation
4-digit PINMobile appsQuick re-entry (no OTP on app reopen)
BiometricsParents, TeachersFaceID / fingerprint for fast login
RBACAll platformsRole-based module permissions