OnePerson OneVote (OPOV) Software for simple voting scenarios

The end goal of this software is to provide a means for users to create contests or polling events.


This software is a Work-In-Progress.

This page will eventually provide documentation of how to use the OPOV software.

User Requirements

  • Open source using Blazor components and .NET
  • MongoDB data source
  • Email verification for all users
  • Privileged users can configure the OPOV sofware, e.g. contest content and model

Design Notes

Roles
  • Admin/SuperAdmin
  • EventPlanner
  • ContestAdmin
  • Contestant
  • Voter
  • Poller
Workflow for users and roles
  • Every user needs to register their email address before using OPOV
  • After registration, a User will need to request a CODE for access to a Role and/or Contest
  • Role Descriptions
    • OpovEvent-Admin
      • can create OpovEvents
      • can assign users as Contest-Admins and provide them their Codes
      • can create Contests and configure each Contest's basic setup, e.g.:
        • Start/Stop times
        • Number of allowed Contestants
        • Number of allowed Voters
        • the Contest type e.g. Vote/Poll
        • perhaps Code generation model selection
    • Contest-Admin
      • can complete the rest of Contest setup, e.g.:
          create questions
          upload background pic
      • can assign users as Contestants and provide them their Codes
      • provide Codes to Voters/Pollers
    • Contestant
      • can enter data in Contestant area of Contests accessible to the Contestant

ISSUE with Google Auth from behind Nginx reverse proxy!

Apparently I'm not the only one failing to get Google Auth to work from behind a proxy.
Seems to be a netcore issue. So I'm going to table this ISSUE, for now, and hope others fix it soon.

ScratchPad Notes Below
  • Each Contest has a ContestType: Poll, Basic
  • EventPlanner can designate 0 to N ContestAdmins for each Contest (of type Basic)
  • EventPlanner can designate 0 to N Pollers for each Contest (of type Poll)
  • EventPlanner has ContestAdmin/Poller access for all Contests by default
  • Each Event contains 1 to N Contest(s)
  • A Poll-Contest will be configured by the EventPlanner
  • A Basic-Contest will be configured by a ContestAdmin (?)
  • A Basic-Contest will be managed by a ContestAdmin - e.g. verify Contestant entries
  • Voting data generated by users will be kept in Collection separate from app data
Data Planning
  • ContestResults
    • reference to Contest class ID as string
    • Contest Name
    • List<UserVoteRecord> UserVoteRecords
  • UserVoteRecord
    • reference to Identity user ID as string
    • email address of user from Identity data
    • List<VoteEntry> VoteEnties
  • VoteEntry
    • Date/Time of vote
    • Reference to question (Question Data definition TBD)
    • Vote answer to question (dependent upon Question Type)
    • Question Type (helps determine how Vote answer is processed)

Auto-resize TextArea

An unhandled error has occurred. Reload 🗙