Show a desktop notification when the AI TA finishes replying
Notify me when classmates post messages in the forum
Play an alert sound whenever there is a new notification
A university-based student community discussion board independent of any single course. It uses a dual anonymous mode, display-name snapshots, edit history and moderator review mechanisms, balancing students' freedom of expression with accountability in the academic community.
Taiwanese Students have anonymous community cultures such as Dcard and PTT beauty boards, but these platforms lack academic context: in an anonymous post saying "Looking for a linear algebra teacher", the replies may come from passers-by, cram-school operators, or even AI spam. In the Uedu campus version, all participants must be teachers and Students certified by that university, which preserves the safety of anonymous posting while also ensuring the relevance of the conversation.
Identity verification: participants on the Uedu campus version are already bound to their school identity through course enrolment records, so they need not publicly disclose their student ID to ensure they are from the same school.Academic first: moderators are appointed by Uedu system administrators, usually TAs or department office staff, and their review standard is academic ethics rather than purely online rules.Data governance: all posting and reaction data may be imported into the Educational Data Lake as research material for the Sociomics dimension.
Primarily implemented in app_school_forum.py, including two sets of blueprints for the UI and API. The data model is centralised in sql/school_forum.sql and several incremental migration files.
classroomgpt.school field){subdomain}.uedu.tw (for example ntu.uedu.tw), it is bound by default to the school version corresponding to that subdomain/school-forum/<university_code>//api/school-forum/<university_code>/The university edition has 10 core data tables:
| Data table | Purpose |
|---|---|
school_forum_profiles | Nickname settings for each person and each school, with stepwise rename cooldowns (first→1 day→7 days→30 days) |
school_forum_boards | Board categories (e.g. "General Discussion", "Course Selection Experience", "Department Board Announcements"), grouped by university |
school_forum_threads | Main post, including the anonymous flag and author_display_name (snapshot) |
school_forum_replies | Two-layer comments (main post reply + sub-reply) |
school_forum_likes | 16 emoji reaction records |
school_forum_bookmarks | Favourites |
school_forum_reports | Violation report, status: pending → dismissed / hidden / deleted |
school_forum_moderators | Moderator assigned, authorised by the system administrator |
school_forum_citations | Audit log of the Instructor quoting school edition content in the Course Forum |
school_forum_edit_history | Archived raw version before editing |
| Field | Maximum |
|---|---|
| Main post title | 200 characters |
| Main post content | 100 KB |
| Reply content | 50 KB |
| Attachment size | 10 MB |
Anti-spam: the same person must wait 10 seconds between posts on the same board.
The university edition allows users to choose named or anonymous posting each time, but both modes are implemented with safeguards designed to avoid common anonymity loopholes:
When posting, the user's current school_forum_profiles.display_name will be written into school_forum_threads.author_display_name in a snapshot format. Even if the user later changes their nickname, historical posts will still display the name used at the time.
If the profile is joined in real time directly, any nickname change by the user will synchronously alter all historical posts, effectively creating 'traceable time travel', which is easy to abuse (for example, changing one’s name to avoid responsibility and then changing it back). The snapshot approach ensures that the attribution at the time of posting is permanently auditable.
Anonymous posts in the same discussion thread are assigned a consistent anonymous code (e.g. “Anonymous 1”, “Anonymous 2”). Calculation method:
This design lets readers determine whether "the palindrome is from the same person" versus "different people each replied", without building up enough cross-thread fingerprinting to de-anonymise anyone.
Purpose: prevent identity confusion caused by frequent renaming in a short period, while allowing beginners room to experiment and learn from mistakes.
The university edition supports 16 emoji reactions, using the same vocabulary as the Uedu course forum. It uses a toggle mechanism, so the same user can only react or unreact with the same emoji on the same post.
| Category | Emoji | Common uses |
|---|---|---|
| Positive | heart, thumbsup, eyes, rocket, confetti, fire, lightbulb, thinking, check | Consent, delight, inspiration, being seen |
| Other | angry, question, zzz, smile, grin, joy, clown | Questioning, humour, scepticism |
A single like cannot express the difference between "this contribution is constructive" vs. "this is interesting" vs. "this is questionable". A refined emoji vocabulary allows community sentiment to be quantified for research (for example, "which topics tend to receive thinking vs. clown"). The school version does not use ranking by "total likes"; all emoji are recorded equally, and the front end chooses how to present them.
Users can edit their own main text and replies, but all changes will be fully recorded:
is_edited flag to the main post / reply form; the UI shows an "Edited" badgeschool_forum_edit_history, including the editor and timestampThe design of edit history balances individual correction rights (such as correcting typos and misprints) and community accountability (such as not being able to secretly alter inflammatory remarks). This is compatible with the GDPR 'right to rectification' and with the academic community's 'version traceability'.
Any authenticated user may report a single main post or reply, with reasons attached. Reports are written to school_forum_reports, with initial status pending.
The school's moderator (appointed by the system administrator and stored in school_forum_moderators) can retrieve the pending review list at /api/school-forum/<code>/reports?status=pending. There are three ways to handle it:
| Action | Effect |
|---|---|
dismissed | Marked as a false report; no content changes will be made |
hidden | Soft-delete; hidden from ordinary users, can be restored in the moderator backend |
deleted | Hard delete, and synchronise the parent post's reply_count |
All processing actions are written to handle_note for audit. Moderators are assigned as system administrators to perform the actions manually, ensuring that power is not abused.
At present, the university edition sends confirmation email only for profile creation / renaming (sent asynchronously via email_queue, with a netiquette reminder included). Other actions (handling reports, reply notifications) are not included in email to avoid excessive disruption.
| Orientation | University Edition (School Forum) | Course Forum |
|---|---|---|
| Scope | All students and instructors across the university | Single Course |
| Anonymous | Supports (dual mode) | Not supported (mandatory naming) |
| Membership Type | School affiliation is sufficient | Class enrolment identity |
| Rating | Does not count towards grades | May count towards the grade (via the forum_scoring methodology) |
| BERT quality evaluation | Do not use | Use |
| Instructor review emoji | N/A | Viewed (eyes = viewed) |
| Report review | Moderator (school level) | Instructor and TA (class level) |
The “Grading” and “BERT Quality Evaluation” functions in the course forum assume a teacher–student relationship: instructors have the right to give academic evaluation of Student contributions. The campus version is a peer community; introducing grading would distort motivation to post and stifle anonymous culture. The two require different incentive and governance designs.
The university edition provides valuable material for the Sociomics dimension within the Uedu Educational Omics framework:
All public research must: (1) be de-identified (not disclose personal user_id); (2) keep anonymous speech anonymous, without reverse-engineering the mapping between code names; (3) not quote verbatim content involving sensitive topics (mental health, discrimination allegations). Researchers must pass IRB review (NTU-REC 202507EM058 is a reference example) and obtain Uedu export consent forms.
When citing this system, please cite: "Uedu School Forum: a university-scoped community board with dual-mode anonymity and snapshot display names (https://uedu.tw)" and state the university, period and de-identification method of the data used.