Uploads, media and the rest of the content
Uploads go through a staff-gated media endpoint. Images are re-encoded server-side — resized to ≤1600px and compressed to a hard 500 KB ceiling — which normalises every file and removes the surprises that come with accepting arbitrary binaries.
Instructors see only their own folders and uploads in the media library; admin file management sits behind its own module permission.
Direct messaging is gated by an explicit relationship rule — a follow edge in either direction, or an instructor and a student enrolled in their course. You cannot message a stranger. When real-time push is enabled, the websocket channel is private and authorised per conversation.
Live classes run on TKDS MEETING, self-hosted under your own domain. No third-party meeting provider sits between you and your students, and room access is authorised per join — which is also what produces the attendance record.