live)Quadratic Voting (
Open-source QV tool
This application is built atop
- Front-end: NextJS (React)
- Back-end: NodeJS + Express serverless functions
- Database: PostgreSQL + the Prisma DB toolkit
At a fundamental level, the way in which voting links are generated and sessions are handled is kept simple:
eventstable keeps track of open voting events. Each event has a
secret_key (uuid)to manage the event.
voterstable keeps track of all voters and their preferences. Each voter has a
id (uuid)that together with the
event_uuid (uuid)represents their unique voting URL.
- prisma/schema.sql contains the SQL schema for the application.
- pages/api/events/details.js contains the QV calculation logic.
- Setup your PostgreSQL database
# Import schema psql -f prisma/schema.sql
Setup environment variables. Copy prisma/.env.sample to
DATABASE_URLwith your PostgreSQL DB url.
# Install dependencies yarn # Run application yarn dev
Run in Docker container
# Build container docker build . -t rxc_qv # Run docker run -d --env DATABASE_URL=postgresql://__USER__:__PASSWORD__@__HOST__/__DATABASE__ -p 2000:2000 rxc_qv