Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Event sign-up sheet RFC #2120

Open
6 tasks
lewisbelcher opened this issue Sep 1, 2024 · 1 comment
Open
6 tasks

Event sign-up sheet RFC #2120

lewisbelcher opened this issue Sep 1, 2024 · 1 comment
Assignees
Labels
💡 enhancement New feature or request 🐳 Large A real chonky boy with lots of complexity. 🎨 needs-design ❓ needs-info Issue needs further information or decisions before proceeding

Comments

@lewisbelcher
Copy link

Description

A user should be able to:

  1. Select events in the calendar and click a button to create an event sign-up sheet that can be printed and distributed at physical meetings
  2. Scan filled in sign-up sheets using desktop/mobile and have the relevant checked fields entered into

Part 1 is useful as a standalone feature.

The intention for part 2 (scanning the sign-up sheets) is to encode selected event IDs in a QR code and include this in a corner of the sign-up sheet. This QR code can then be used to not only communicate which events are present on the page and in what order, but also to locate the document and, in turn, locate relevant checkboxes and identify whether they have been checked.

QR code creation

At the moment is assumed that only event IDs need to be encoded in the QR code, but this may be extended in the future.

What size QR code do we need?

  • The maximum desired number of events per page is around 40.
  • It's probably reasonable to assume that each ID can be contained within 3 bytes (up to an ID of 16,777,216).
  • 40 such 3-byte IDs would require encoding 120 bytes in the QR code, plus some headroom for some potential metadata (~30 bytes for good measure).
  • This means we'd need ~150 bytes in the QR code.
  • The nearest QR code version to this size is version 7 (see here) with lowest error correction, which provides 154 bytes.
  • We can probably do a lot better than this by compressing the data going into the QR code. This remains to be investigated.

Estimated issue size

I think this issue is large because it involves implementing new, non-trivial functionality (document creation, QR encoding, computer vision).

Prerequisites

All platform-related prerequisites are already met.

Requirements

  • Create a print-friendly webpage containing basic header information (name, email address etc. to make the attendee identifiable)
  • Pack and compress a list of event ID integers
  • QR code creation
  • QR code scanner
  • CV magic to locate the document and relevant checkboxes
  • Data ingestion into the system (as a first step we assume that the organiser can manually search for the attendee in the system)

Possible implementations

Entirely JS based

  • QR scanner
  • Investigate appropriate libraries for:
    • Data compression
    • QR generation
    • CV

Webassembly

Webassembly could be explored as an alternative to JS.

  • Could allow for more custom image processing and CV functionality
  • Could give significant speed benefits
  • Almost certainly more complicated
  • Almost certainly more fun

Design specifications

TODO

Open questions

  • Are we safe to assume a maximum plausible ID can be contained within 3 bytes? If we use appropriate compression can we use 4 bytes anyway?
  • Is there a relevant benefit for a Webassembly approach other than that Lewis would like to investigate it? Would it create too much complexity and make maintenance a pain?
@lewisbelcher lewisbelcher added 💡 enhancement New feature or request 🎨 needs-design ❓ needs-info Issue needs further information or decisions before proceeding 🐳 Large A real chonky boy with lots of complexity. labels Sep 1, 2024
@lewisbelcher lewisbelcher self-assigned this Sep 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💡 enhancement New feature or request 🐳 Large A real chonky boy with lots of complexity. 🎨 needs-design ❓ needs-info Issue needs further information or decisions before proceeding
Projects
None yet
Development

No branches or pull requests

2 participants
@lewisbelcher and others