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
- can complete the rest of Contest setup, e.g.:
-
Contestant
- can enter data in Contestant area of Contests accessible to the Contestant
- OpovEvent-Admin
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.
- 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
-
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)