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
| Platform | Technology | Users | Key Features |
|---|---|---|---|
| Web Admin | NestJS + Next.js | School admins, Super admins | Full module management, student/employee CRUD, fee collection, reporting |
| Parents App | Flutter | Parents | Student academics, attendance, fees, announcements, messages |
| Teachers App | Flutter | Teachers | Mark attendance, enter exam results, approve leaves, announcements |
| Driver App | Flutter | Bus drivers | Bus 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)
- Routing —
getDbFromSchoolId()inpackages/dbdetermines 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:
| Method | Platform | Purpose |
|---|---|---|
| Phone + OTP | All mobile apps | Initial authentication |
| JWT Access Token | All platforms | API authorization (15min expiry) |
| Refresh Token | All platforms | Token rotation |
| 4-digit PIN | Mobile apps | Quick re-entry (no OTP on app reopen) |
| Biometrics | Parents, Teachers | FaceID / fingerprint for fast login |
| RBAC | All platforms | Role-based module permissions |