A reusable electronic voting platform with individual voting weights
The platform manages delegates, agendas, voting questions and results in one system. Organisers launch votes in real time, delegates participate through personal links, and the results are automatically exported into XLSX and PDF protocols.
Private platform
Access is limited to organisers and participants of RGR events.
In use since June 2026
Role: Product design, UX/UI, frontend, backend, database, integrations, production deployment and ongoing support
Stack
- React 18
- Vite
- Tailwind CSS
- Node.js
- Express
- PostgreSQL
- Prisma
- Socket.io
- JWT
- GreenSMS
- ExcelJS
- PDFKit
- Timeweb Cloud
- delegates used the platform
- 300+delegates used the platform
- voting questions conducted
- 50+voting questions conducted
- of total implementation work
- 4 daysof total implementation work
- technical failures during the event
- 0technical failures during the event

Context and challenge
The Russian Guild of Realtors (RGR) needed to run more than fifty formal votes across its National Council and the congress of RGR members.
Every delegate carried an individual voting weight. Depending on the question, a participant had to split that weight between options, select several candidates, or assign the whole weight to a single decision.
The organisers needed one system that would bring delegate registration, agenda preparation, running the votes, keeping track of the event and producing the final protocols together — without manual recounting or switching between separate tools.
Who the product is for
- organisers of congresses, councils and professional conferences
- associations and member bodies that vote by representation
- event registrars and secretariats
- voting moderators
- delegates with an individual voting weight
- the architecture is reusable: the platform is not tied to a single event
Solution
I built a single web product covering the full electronic voting cycle: from uploading delegates and assembling the agenda to running questions in real time and exporting the final protocols.
The platform supports multiple events, several administrative roles and three voting mechanics. Organisers run the system themselves through the admin interface, while delegates receive personal links and vote from a phone or a computer.
Weighted voting
Each delegate is assigned an individual weight between 1 and 150 votes. The server verifies that the distributed total matches that weight exactly.
Three mechanics
Quantitative voting — for, against, abstain — ranked selection of several options, and alternative voting for a single option.
Delegate management
XLSX import, manual mapping for non-standard columns, review of problematic rows and bulk issuing of personal links.
Personal access
Participants receive individual tokens, links, QR codes and SMS messages. Deactivated access stops working immediately.
Agenda and roles
The administrator manages events, the registrar manages delegates, and the moderator runs the agenda, the questions and the voting itself.
Real-time operation
Socket.io keeps the opening and closing of questions, timers and voting progress in sync across moderator and participant screens.
Timers and auto-start
Questions can close automatically on a timer and start one after another following the order of the agenda.
Protocols and results
The platform compiles summary results and exports the data into XLSX and PDF in the format required by the client.
My role
The brief came from the Russian Guild of Realtors. I independently turned the client’s requirements and the rules of weighted voting into a working production platform. The platform was built with AI-assisted development in Claude Code: AI served as a tool to speed up design work, writing code, checking scenarios and iterating on the product, while the requirements, the architectural decisions and the verification of the result stayed with me.
- worked through the voting rules and formalised the logic of all three question types
- designed the delegate, registrar, moderator and administrator journeys
- defined the interface structure and the visual system of the product
- independently built the React frontend
- independently built the Node.js and Express backend
- designed the PostgreSQL data model and the data layer with Prisma
- implemented server-side weight validation and protection against repeat voting
- set up real-time updates over Socket.io
- built the admin interface for events, delegates, the agenda and the results
- created a tolerant XLSX import with column auto-detection, a preview and manual mapping
- implemented personal links, QR codes and SMS delivery
- built the export of results into XLSX and PDF
- set up JWT authentication and separation of the administrative roles
- prepared the Docker build, PostgreSQL and the production deployment on Timeweb Cloud
- configured the domain and HTTPS
- tested the key scenarios
- continue to support and develop the product
I designed the platform so that during an event the organisers could manage delegates, questions and results entirely on their own, without depending on the developer.
From requirements to production
- Requirements
Voting rules and user roles
Worked through the mechanics of weighted voting, the rules of each question type and the scenarios for the administrator, registrar, moderator and delegate.
- Design
Architecture for the full cycle
Designed the interfaces, the database, server-side validation, the real-time layer and the path from delegate import to a finished protocol.
- 4 days
Independent implementation
Using AI-assisted development, built the frontend, the backend, the database, the integrations and the administrative side of the platform.
- June 2026
Live use
The organisers ran more than fifty questions for more than three hundred delegates through the platform themselves. The event went ahead without technical failures.
Technology and approach
The platform had to validate votes on the server, keep participants in sync in real time, work on mobile devices and produce official results.
Frontend and user roles
React and Tailwind CSS power the delegate, registrar, moderator and administrator interfaces. The scenarios are adapted for mobile devices and for use during a live event.
Backend and data
Node.js, Express, PostgreSQL and Prisma handle events, delegates, questions, votes, administrative roles and the activity log.
Real time and reliability
Socket.io keeps voting state, timers and progress in sync. Server-side validation checks the voting weight and rules out a second submission.
Integrations and infrastructure
GreenSMS delivers the personal links, ExcelJS and PDFKit produce the protocols, and Timeweb Cloud hosts the application, the database, the domain and HTTPS.
Team and responsibilities
- Russian Guild of Realtors (RGR)
- The brief, the requirements for voting rules and protocols, preparation of the delegate list and the agenda, and running the platform themselves during the events.
- Daniil Berdinskikh
- Product design, UX/UI, frontend, backend, database, integrations, testing, production deployment and ongoing support.
Outcome
The platform went into production and was used by RGR for real, formally regulated votes.
- more than 300 delegates used the platform
- more than 50 voting questions were conducted
- the event went ahead without technical failures
- every SMS carrying a personal link was delivered
- the core functionality of the platform was used during the event
- the organisers ran the system themselves, with no developer present
- results and protocols were produced by the platform itself
- a single interface reduced the effort of organising and running the votes
- after the first event the client continued to use the product for subsequent votes
- the platform remains in operation and is actively supported
Gallery


Current status
The platform runs in production and is reused by the Russian Guild of Realtors for its next votes.
I remain responsible for technical support and the further development of the product. The architecture allows new events to be created, delegates and agendas to be uploaded, votes to be run and results to be produced without reworking the platform for each occasion.