Online ticketing system, announcements, and resources for students
Screenshot of Platform on Chrome in the dark theme
I have been a Class Representative for three years in the Computer Science course at Heriot-Watt University, now moving into the School Officer role. During my time I found it difficult to gauge the opinions of students on issues and to distribute information.
Thus, my fellow Class Rep, Humaid, and I decided to build an online service which allows for students to submit anonymous tickets, complaints, and to see announcements from Class Reps. At the time of writing, there is no system provided by the university or Student Union (the organisation that we volunteer for) that offers any of these features in a convenient manner.
Platform on mobile in pseudo-PWA (fullscreen) mode
Technology Behind Platform
Platform has been written in Go and built using Macaron as the backend framework, with XORM (object relational mapping) and SQLite handling the databases. The front end uses a template written by Humaid and myself in pure HTML and CSS.
Below are some of the libraries that Platform uses:
- TOML Parser & Encoder for Go
- durafmt for formatting date and time
- bluemonday for santising HTML
- goldmark for Markdown to HTML
- Ace for editing the TOML file in the browser
Platform’s main requirements are that it is fast and easy to use. Due to this we’ve decided on building it from the ground up using pure HTML and CSS to ensure that it loads quickly, especially on mobile data. We also don’t want students to feel frustrated at Platform as this will reduce their willingness to use it.
Class Reps have the ability to write detailed announcements using Markdown on Platform. Tags may also be added to give students more information at a glance, indicating what the post will contain.
Screenshot of the announcements page on Platform
Humaid wrote a function that takes the first 25 words of the announcement to display as a description, further increasing the ease for students and possibly reducing the number of interactions required.
Platform has an anonymous ticketing system where students can create tickets (issues) that others may comment on and upvote.
Screenshot of the tickets page on Platform
Screenshot of a specific ticket on Platform
In order to keep upvotes anonymous, Platform assigns each user a session identifier, which is a hash of their IP address, user-agent header, and a randomly generated number.
Students that want to create tickets or leave comments are given a temporary username so that they may interact with the comments if needed. This is all done seamlessly with no extra effort required from the student - no logins or passwords! This does open Platform to abuse, unfortunately, but it’s a calculated risk; one that gives a large degree of anonymity and seamlessness for the students.
Different courses within the computer science sphere at Heriot-Watt have their own Reps such as Computer Systems and Information Systems. If a student doesn’t know which Rep to contact regarding their concern, Platform has the ability to automatically look up the Rep(s) that is/are responsible for that course and to make sure that the message goes to the right people.
Class Reps (admins) have the ability to create, edit, and delete announcements/tickets/comments from within the browser window. I’m fairly certain that I don’t need to explain why they require this power.
To login, the admin must be listed in the configuration file and have access to their Heriot-Watt email client. They enter their email address and a code will be sent to them.
The login process for a Class Rep
Like Lobste.rs, Platform has a moderation log to allow students to see exactly what has been edited or removed by the Reps. Hopefully this addition can help build trust.
Screenshot of the moderation log on Platform
It can be quite inconvenient going into the TOML configuration file to update the website’s configuration (such as courses, lecturers, links, reps). That’s why we’ve used Ace to allow for editing of the TOML file directly from the browser, so that the less tech savvy don’t have to learn what SSH is.
Screenshot of the online configurator on Platform