Skip to content

[PROJECT] DashVotes is a mobile PWA for creating and voting on polls

Notifications You must be signed in to change notification settings

nTamura/dashvotes

Repository files navigation

Original version has been scrapped and is being completely redone with hooks, Redux, and JSS. Deployed app may be unstable or broken at this time.

DashVotes

Dashvotes is a mobile PWA which allows users to create and vote on polls. You can share your (or other's) polls and get instant feedback from the results.

Dashvotes is created with React, Firebase/Firestore, Redux, Recharts and JSS.

Data structure

firestore
 ├─polls
 │  └─pollId
 │     ├─pid
 │     ├─createdBy: { displayName, uid}
 │     ├─createdAt: timestamp
 │     ├─title: str
 │     ├─description: str
 │     ├─expireAt: timestamp
 │     ├─isPublic: bool
 │     ├─options: [array]
 │     └─results: [array of options]
 │        └─option
 │           └─vote: { userName, uid }
 └─users
    └─userId
      ├─displayName: str
      ├─fName: str
      ├─lName: str
      ├─email: str
      ├─pollsCreated: [array of pid]
      ├─pollsVoted: [array of pid]
      └─score

Data is posted to Cloud Firestore, synced with Firebase auth service.

Todo

  • private polls viewable to only user with invite
  • poll expiration date
  • extend client side form validation
  • voter can only vote once
  • voter can change vote (overwrite)
  • creator cannot vote on own polls
  • admin functionality
  • admin can see all results
  • delete/edit poll if admin/owner
  • edit profile
  • profile scores

Releases

No releases published

Packages

No packages published