kavehhn
a6c760c3b7
fix(sms): prefix course time with ساعت
...
SMS courseTime now reads «از ساعت 19 تا 21» instead of «از 19 تا 21».
2026-08-16 00:16:40 +03:30
kavehhn
4d60755a95
feat(classes): store weekdays and meeting times on the class
...
Keep the class schedule on the class itself so SMS and listings do not have to infer days and hours from sessions.
2026-08-15 23:59:07 +03:30
kavehhn
192c595c68
feat: add password change, class unenroll, and optional notify flags
...
Let admins skip SMS on user, class, and invoice actions, and let users change their own password with the current one.
2026-08-15 23:48:18 +03:30
kavehhn
0cdb9cec20
feat(sms): send class start date, days, and course time
...
Expose schedule fields on class and invoice templates so SMS can include Jalali start date, weekdays, and hour range.
2026-08-15 23:09:04 +03:30
kavehhn
366cd41bb7
fix(settings): persist every SMS template variable on save
...
Mongoose Mixed updates were dropping extra invoiceCreated variables after a successful save.
2026-08-15 22:55:54 +03:30
kavehhn
d3190a8729
fix(settings): support Persian and flexible SMS variable names and improve save persistence
2026-08-15 22:03:22 +03:30
kavehhn
d2d4ee719b
feat(settings): support dynamic number of SMS template variables
2026-08-15 21:58:10 +03:30
kavehhn
9472537536
fix(professors): handle nationalId and phone aliases with trimming; update payment sms
2026-08-15 19:07:17 +03:30
kavehhn
93f3aeb719
feat(sms): add FULLNAME, PAYMENT_PRICE, and COURSE template variables for invoice SMS
2026-08-15 18:55:17 +03:30
kavehhn
1ef54ad414
fix: stream FilePond uploads to S3 and proxy private file previews
...
Disk-based multer plus an authenticated content endpoint match the working Node.js uploader and avoid browser signed-URL failures on SeaweedFS.
2026-08-15 18:46:26 +03:30
kavehhn
7ebf9409f0
feat: let SuperAdmin rename SMS template variable names
...
Store custom sms.ir parameter names per template slot so outbound messages match the panel placeholders.
2026-08-15 18:43:24 +03:30
kavehhn
3160f07873
feat: send account and invoice SMS from stored template IDs
...
Move sms.ir template IDs out of env into settings so SuperAdmin can manage them, and record every outbound SMS status in notifications.
2026-08-15 18:37:44 +03:30
kavehhn
23edffba6a
fix: rewrite temp files with PutObject instead of SeaweedFS CopyObject
...
CopyObject returns InternalError 500 across buckets, so commits now Get+Put and ensure the documents bucket exists on startup.
2026-08-15 03:33:55 +03:30
kavehhn
877dfa65d5
fix: treat SuperAdmin role name case-insensitively in permission checks
...
The seeded role is SuperAdmin, but the middleware only matched superAdmin, so SuperAdmin could be denied documents and other new permissions.
2026-08-15 03:27:21 +03:30
kavehhn
e1772a2559
fix: force HTTPS S3 endpoint to avoid Coolify 307 on uploads
...
http://s3 hosts redirect to https; AWS SDK cannot follow PUT redirects, which caused XML parse errors.
2026-08-15 03:04:53 +03:30
kavehhn
aa2132f02c
fix: disable AWS SDK checksum defaults for SeaweedFS uploads
...
PutObject was failing with XML parse errors because flexible checksum headers are unsupported; match SeaweedFS recommended S3 client settings.
2026-08-15 03:00:42 +03:30
kavehhn
7394829d49
fix: honor table search q param on users and related lists
...
Dashboard sends q, but users/classes/payments ignored it; accept q/search and normalize Persian digits.
2026-08-15 02:57:19 +03:30
kavehhn
4603b45208
feat: private certificates/documents buckets with SeaweedFS support
...
Add Document CRUD, temp→bucket commit flow, SeaweedFS env aliases, and default temp bucket name to temp.
2026-08-15 02:53:59 +03:30
kavehhn
5c2fad4b44
feat: add adminNotes and registered class counts for users
...
Expose nationalId aliases and enrollment counts on user list responses, and store admin notes on users, classes, and sessions.
2026-08-15 02:39:10 +03:30
kavehhn
bf5e66fa95
feat: add append-only course/user data import and expand user profile
...
Support uploading structured JSON to create courses, classes, and students without wiping existing data, and merge user name fields while adding gender and registration details from source sheets.
2026-08-15 01:31:44 +03:30
kavehhn
35704409ec
feat: bootstrap SuperAdmin from env and lock one-time seeding
...
Production creates the SuperAdmin from env credentials, and dashboard seeding is authenticated, SuperAdmin-only, and locked after the first run.
2026-08-14 23:23:06 +03:30
kavehhn
3ca098b74d
build(docker): add multi-stage production Dockerfile with health check
2026-08-12 06:46:04 +03:30
kavehhn
d0cde07a1f
feat: add /api/seed endpoint and refactor seed.js
2026-08-12 06:29:05 +03:30
kavehhn
d28e71c3fa
chore: update node version to 22 in Dockerfile
2026-08-12 05:55:55 +03:30
kavehhn
07edb98a05
feat: enhance health check endpoint with database status check
2026-08-12 05:26:00 +03:30
kavehhn
f04c797be6
Initial commit: teaching institution management API.
...
Express/MongoDB backend with JWT auth, RBAC, S3 uploads, notifications, and scheduled jobs.
2026-08-09 04:18:08 +02:00