AlloIRL - Statement of Work

AlloIRL: Statement of Work

TLDR

What: A web app to facilitate an in person Allo vote experience with minimal crypto onboarding.

Participants are invited to sign up via email oauth, scan the nfc / qr codes at the tables of a grantee, specify a number of votes, and press submit to save the score to offchain database. They can also see their past contributions & remaining votes.

After the event, the event host exports a CSV and uploads to Allo’s import flow, disbursement happens from that point onwards with relevant pool/mechanism/chain.

When: Live events Feb 21, 23, 26, 27, 2025

Must-Have Features: User signup, project viewing, voting, CSV export

Tech Stack: React (Next.js), Supabase, PostgreSQL (suggestions)

Scale: Support 200 concurrent users

Key Dates

  • Wireframes drawn by Jon Bo: Jan 10

  • Design: Jan 10 - xyz

  • MVP & feedback: Jan 31, 2025

  • Testing: Feb 3 - Feb 14

  • Live Events: Feb 21, 23, & 27

Choreography / Experience Overview

Pre Event:

  • Participants pre-register for event on Luma/Partiful and list of emails / phone numbers is used as an allowlist for verification
  • Event host creates Allo round for event.
  • Grantees create Gitcoin projects.
  • Rounds are pulled down into alloirl web app and assigned unique IDs.
  • QR codes or NFC cards are assigned unique urls (ie alloirl.fun/project/14) and given to each project (that participants will scan with their phones).

During event:

  • Participants sign up to a web app with name + email. They’re given a starter pack of 10 credits on their account.
  • As they walk up to a table, they pull out their phone and scan the NFC card / QR code on the team’s table. Their browser takes them to alloirl.fun/project/14 and they’re given the option to select how many votes to give to this project. They enter an amount and submit a web request.
    • No onchain/tx things happening at this step, just a database update.
    • This should gracefully handle a signup intercept if they haven’t already signed up.
  • If they’re in the audience / away from tables, they can see a projects list and go to the same url and follow the unified interface flow.
  • A TV is loaded up to a leaderboard page with live polling of projects and how many votes they are each allocated, sorted by most / whatever other criteria is interesting.

Post event:

  • Admin page allows CSV export of grants + amounts to be uploaded to Allo
  • CSV is uploaded to Allo, Allow handles disbursement from that point onwards

Features

  1. Authentication

    • Email signup with allowlist
    • Basic profile (name, photo)
    • Password reset
  2. Voting

    • View projects (list + individual pages)
    • Scan QR/NFC to visit project
    • Allocate votes from credit balance
    • Live leaderboard (5s refresh)
    • Credit top-up via Stripe\
  3. Admin dashboard

    • Link gitcoin rounds & import projects metadata
    • Export results as CSV for Gitcoin
    • Calculate quadratic funding distribution

Technical Specs

  • Mobile web app (iOS/Android, 5yr device support)
  • Sub-2s response time on LTE/WiFi
  • QR code generation
  • NFC URL reading
  • Staging environment for testing

Success Criteria

  1. Passes user acceptance testing
  2. Handles 200 concurrent users
  3. Successfully exports to Allo format
  4. All must-have features working

Error Handling

  • Duplicate votes prevented via credit deduction
  • Insufficient credits → error modal
  • Duplicate email → offer password reset

Implementation / Facilitation

  • Dev: Woven Web (Jon & AG)
  • Design: Cici