Warning
This is a working prototype, changes in development will occur rapidly and may not reflect the final system. This README is still being rewritten. Refer to old_README.md for setup instructions
This project is approximately 50% AI-assisted using GitHub Copilot. The developer directed the design, reviewed the output, tested the system, and made the final changes.
- Able to read ID entries from Google Form via Google Sheets integration through OAuth
- Lookup ID entries and generate a QR with given information
- Local server (Flask) and offline-capable for QR verification
- Python cryptography signature via Ed25519
-
Asks for event name and expiry date (to be improved soon!).
-
Connects to Google Sheets and loads the ID records. The first time, it asks you to sign in. (OAuth)
-
User enters an ID number from the form.
-
Program checks the Google sheets form.
-
ID status is checked:
Status Result approvedID is approved and details are shown pendingID is currently pending and details are shown revokedordeniedAccess is denied Any other status Access is denied -
If
approved, asks whether to generate a QR code. If yes, the QR code is saved ingenerated_qr_images. -
If the ID number is not found in Google Sheets, the user is notified and asked to try again.
- The Flask server starts with
verify_app.pyand hosts the verifier page. - The page can be opened at
https://127.0.0.1:5000on the computer running the server. - A phone on the same network can open
https://<computer-local-ip>:5000to use the verifier. - The page uses the device camera to scan the QR code.
- The verifier checks the QR code's signature, expiry date, and ID status.
- The page shows whether the ID is valid and approved.
- The verifier reads a saved QR image from the local computer.
- It decodes the QR code and checks its digital signature.
- It checks whether the QR code has expired.
- It checks whether the ID status is approved.
- The terminal shows whether the QR code is valid and approved.
- gspread v6.0 or later
- google-auth v2.0 or later
- google-auth-oauthlib v1.0 or later
- qrcode v8.2 or later
- Pillow v13 or later
- cryptography v50.0.2 or later
- opencv-python v4.10 or later
- Flask v3.1.3 or later
Install the dependencies:
python -m pip install -r requirements.txtImportant
Make sure you have a Google Cloud account available, this will not incur any credits or payments for using the OAuth session.
Found at markdown/old_README.md