Invite-basierte Online-Wahlen für Parteien, Verbände und Organisationen · Node.js · Express 5 · React 19 · PostgreSQL · TOTP-Sicherung
- Überblick
- Screenshots
- Wahlfluss im Detail
- Kernfunktionen
- Technische Architektur
- Tech Stack
- Schnellstart
- Roadmap
- Was dieses Projekt zeigt
- Autor
![]() Admin-Login mit TOTP-Absicherung |
![]() Neue Abstimmung erstellen |
![]() Stimmabgabe durch Wahlberechtigte |
![]() Abstimmungsübersicht (Admin) |
![]() CSV-Import der Wahlberechtigten |
|
VoteBox ist eine sichere, einladungsbasierte Abstimmungsplattform für interne Wahlen in Parteien, Verbänden und vergleichbaren Organisationen.
Der Standardfluss ist bewusst einfach gehalten:
E-Mail erhalten → persönlichen Link öffnen → abstimmen → fertig
Das Projekt legt besonderen Wert auf:
- Starke Admin-Absicherung mit TOTP und HttpOnly-Session
- Reibungslosen Wählerzugang ohne zusätzliche Registrierung
- Datenschutz durch Datenminimierung, saubere Systemtrennung und automatisches Retention-Cleanup
- Schutz gegen Doppeltstimmen durch serverseitige Vote-Session-Logik
- Erweiterbare Multi-Tenant-Architektur (SaaS-Foundation in Aufbau)
Zielbereich: Parteiinterne Wahlen, verbandliche Abstimmungen, Pilotwahlen unter realen Bedingungen.
Nicht Zielbereich: Staatliche Wahlen, Kandidatenaufstellungen für Volksvertretungen, Verfahren mit abweichendem Spezialwahlrecht.
Jede Abstimmung durchläuft zwei klar getrennte Seiten: Wahlleitung und Wahlberechtigte.
1️⃣ Vorbereitung
2️⃣ Einladungsversand
3️⃣ Monitoring
4️⃣ Ergebnisse
1️⃣ Einladung erhalten
2️⃣ Link öffnen
3️⃣ Stimme abgeben
4️⃣ Bestätigung
- Login mit TOTP-Pflicht und QR-Code-Enrollment
- HttpOnly-Session-Cookie
- Rate-Limiting auf allen sensiblen Endpunkten
- Audit-Log für alle Admin- und Systemereignisse
- CSV-Import von Wahlberechtigten
- Versandstatus pro Wähler in Echtzeit
- Einzelne Wähler deaktivieren oder Re-Invite auslösen
- Statusübersicht: abgestimmt / noch offen / deaktiviert
- Individuelle Invite-Links per SMTP
- Re-Invite nur solange noch keine Stimme abgegeben wurde
- Automatische Invalidierung alter Links bei Re-Invite oder Deaktivierung
- Stimmen werden ohne direkten Personenbezug gespeichert
- Saubere Trennung von Wahlberechtigung, Einladung, Session und Stimme
- Automatisches Retention-Cleanup: Personendaten werden nach Ablauf bereinigt, Ergebnisdaten bleiben erhalten
VoteBox ist als klar getrenntes Frontend/Backend-System aufgebaut mit modularen, single-responsibility Services auf der Serverseite.
Frontend (React) → Backend API (Express) → PostgreSQL
Architekturprinzipien:
- Single-Responsibility-Services (ein Service, eine Zuständigkeit)
- Zentralisierte Session- und Auth-Kontrolle
- Erweiterbare Modulstruktur für Multi-Tenant-Ausbau
- Konsequente Datentrennung: Identität, Einladung, Session und Stimme sind entkoppelt
| Bereich | Technologie |
|---|---|
| Frontend | React 19, React Router 7, Vite 6 |
| Backend | Node.js ≥ 22, Express 5 |
| Datenbank | PostgreSQL 15 |
| Auth | TOTP, bcrypt, JWT, HttpOnly-Cookie |
| Nodemailer (SMTP) | |
| Security | Helmet, Rate-Limiting, CORS |
| Deployment | Docker, nginx |
| Tests | Node.js built-in test runner |
- Invite-basierte Authentifizierungsarchitektur ohne Wähler-Registrierung
- Zweiphasiger Admin-Login (Passwort + TOTP) mit sicherer Session-Verwaltung
- Datenschutzkonforme Systemtrennung: Wahlberechtigung, Einladung, Session und Stimme sind entkoppelt
- Automatisiertes Retention-Cleanup ohne Ergebnisverlust
- Erweiterbare Multi-Tenant-Grundlage für SaaS-Ausbau
- Produktreifes PoC mit klarer Pilot- und Vermarktungsperspektive
Patrick Neumann
GitHub: github.com/Codenix-1349




