cssu / cssu.ca

Website of the Computer Science Student Union (CSSU) at the University of Toronto.
https://www.cssu.ca
GNU Affero General Public License v3.0
5 stars 4 forks source link

[Feature Request] Orientation 2024 stamp rally #93

Open JasonBarahan opened 2 months ago

JasonBarahan commented 2 months ago

Description

Implement a QR-code based virtual stamp rally program. This will be hosted on a specific subdomain of our website and will be used for orientation. Every time a user attends a mini-event, workshop, or visits a booth at our clubs fair, they can scan a QR code to get a stamp in their books. Once they obtain a minimum number of stamps, they can go to the CSSU lounge to obtain a prize (like a free ice cream sandwich).

Rationale

Stamp rallies are a "classic social team move" (quoted from Charles) to boost engagement. This was previously discussed in an executive meeting and there is interest in implementing it for orientation.

The turnaround time is 2 months, I don't know whether it is possible, but I'm hoping this is. We will probably need graphics to hop on board this project if feasible.

Implementation

This is a preliminary implementation and is subject to discussion during the meeting.

Logistics

We'll create a separate repo on this and host the finished site on orientation.cssu.ca. I'll take care of setup.

Authentication

We were thinking of having students authenticate using their utorID. To avoid any logistical issues with obtaining access to idpz what we could do is:

Alternatively we could implement our own login system.

Obtaining QR codes

If we choose to take the static QR code route (one QR code for each booth/event) we need to make sure people don't take photos of the QR code to cheat the system. We could add a secret question (or a couple of rotating secret questions) unique to each booth or club and have people at the booths answer them to get that QR code marked.

If we choose to take the dynamic QR code route... (yet to discuss)

Data persistence

I was thinking of using a dynamic client side rendered approach. We'd (probably) need a small database to store information on booths that a user has visited.

Rewards redemption

We need to decide on the conditions where the reward is given, and also implement checks to ensure that people do not lie and attempt to get more than one reward. One way to approach this is:

JasonBarahan commented 2 months ago

It doesn't have to be themed after a passport - anything that has stamps (like train tickets) could work too! image

JasonBarahan commented 2 months ago

https://www.heroku.com/pricing or we can use netlify

https://www.cockroachlabs.com/pricing/

JasonBarahan commented 2 months ago

Repo is live: https://github.com/cssu/orientation-stamp-rally