How yennego/sms works
This is a multi-tenant school-management system: school staff and platform administrators use a versioned API to manage tenants, people, academic records, fees, and communications. Requests enter the FastAPI application, resolve tenant context, and reach domain services backed by PostgreSQL models and CRUD operations. The README also describes notifications, reporting, file management, and RBAC; several are roadmap or incompletely sampled, so their internal flows are not asserted here. Edges reflect excerpts, SOURCE INDEX references, or explicit README statements; unsampled implementations are represented by their existing directories.
Main entry points: class_enrollment_service.py Enrollment service · main.py FastAPI app · api.py Versioned API · fee_service.py Fee management
Components 20
Application and tenancy
- FastAPI app
Backend/sms-backend/main.py - Versioned API
Backend/sms-backend/src/api/v1/api.py - Tenant resolution
Backend/sms-backend/src/core/middleware/tenant.py
Identity and people
- Authentication
Backend/sms-backend/src/api/v1/endpoints/auth - Admissions
Backend/sms-backend/src/services/people/admission_service.py - Student records
Backend/sms-backend/src/db/crud/people/student.py - Access control
Backend/sms-backend/src/core/security/permissions.py
Academic management
- Academic endpoints
Backend/sms-backend/src/api/v1/endpoints/academics - Enrollment service
Backend/sms-backend/src/services/academics/class_enrollment_service.py - Class model
Backend/sms-backend/src/db/models/academics/class_model.py - Enrollment model
Backend/sms-backend/src/db/models/academics/enrollment.py
School operations
- Fee management
Backend/sms-backend/src/services/finance/fee_service.py - Fee ledger
Backend/sms-backend/src/services/finance/ledger.py - Communications
Backend/sms-backend/src/services/communication/communication_service.py - Notification delivery
Backend/sms-backend/src/services/notification - Reporting
Backend/sms-backend/src/services/tenant/reports.py - File management
Backend/sms-backend/src/services/files/storage.py
Persistence
- Database sessions
Backend/sms-backend/src/db/session.py - School records
Backend/sms-backend/src/db/models
Other components
- School users
Connections 20
- School users → FastAPI app: use API
- FastAPI app → Versioned API: mounts routes
Backend/sms-backend/main.py - FastAPI app → Tenant resolution: installs middleware
Backend/sms-backend/main.py - FastAPI app → Database sessions: uses sessions
Backend/sms-backend/main.py - Tenant resolution → Database sessions: resolves tenant
Backend/sms-backend/src/core/middleware/tenant.py - Versioned API → Authentication: routes requests
- Versioned API → Academic endpoints: routes requests
- Authentication → Access control: checks permissions
- Academic endpoints → Enrollment service: handles enrollment
- Enrollment service → Enrollment model: reads and writes
Backend/sms-backend/src/services/academics/class_enrollment_service.py - Enrollment service → Class model: checks classes
Backend/sms-backend/src/services/academics/class_enrollment_service.py - Enrollment service → Student records: checks students
Backend/sms-backend/src/services/academics/class_enrollment_service.py - Admissions → Student records: uses student CRUD
Backend/sms-backend/src/services/people/admission_service.py - Admissions → Fee management: sets up fees
Backend/sms-backend/src/services/people/admission_service.py - Enrollment service → Fee management: uses fee service
Backend/sms-backend/src/services/academics/class_enrollment_service.py - Fee management → Fee ledger: calculates balances
Backend/sms-backend/src/services/finance/fee_service.py - Communications → Notification delivery: dispatches alerts
Backend/sms-backend/src/services/communication/communication_service.py - Database sessions → School records: persists records
- School users → Reporting: request reports
- School users → File management: upload files