Keep the class schedule on the class itself so SMS and listings do not have to infer days and hours from sessions.
Expose schedule fields on class and invoice templates so SMS can include Jalali start date, weekdays, and hour range.
Express/MongoDB backend with JWT auth, RBAC, S3 uploads, notifications, and scheduled jobs.