Skip to content

Codenix-1349/VoteBox-Showcase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 

Repository files navigation

🗳️ VoteBox – Digitale Abstimmungsplattform

Invite-basierte Online-Wahlen für Parteien, Verbände und Organisationen · Node.js · Express 5 · React 19 · PostgreSQL · TOTP-Sicherung

         


📋 Inhaltsverzeichnis


📸 Screenshots

Admin-Login
Admin-Login mit TOTP-Absicherung
Abstimmung erstellen
Neue Abstimmung erstellen
Stimmabgabe
Stimmabgabe durch Wahlberechtigte
Abstimmungsübersicht
Abstimmungsübersicht (Admin)
CSV-Import
CSV-Import der Wahlberechtigten

📖 Überblick

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.


🔄 Wahlfluss im Detail

Jede Abstimmung durchläuft zwei klar getrennte Seiten: Wahlleitung und Wahlberechtigte.

🛠 Seite der Wahlleitung

1️⃣ Vorbereitung

2️⃣ Einladungsversand

3️⃣ Monitoring

4️⃣ Ergebnisse


🗳 Seite der Wahlberechtigten

1️⃣ Einladung erhalten

2️⃣ Link öffnen

3️⃣ Stimme abgeben

4️⃣ Bestätigung


✨ Kernfunktionen

🔐 Admin-Absicherung

  • 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

📥 Wählerverwaltung

  • 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

📨 Einladungssystem

  • Individuelle Invite-Links per SMTP
  • Re-Invite nur solange noch keine Stimme abgegeben wurde
  • Automatische Invalidierung alter Links bei Re-Invite oder Deaktivierung

🛡 Datenschutz & Retention

  • 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

🧠 Technische Architektur

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

🛠 Tech Stack

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
Mail Nodemailer (SMTP)
Security Helmet, Rate-Limiting, CORS
Deployment Docker, nginx
Tests Node.js built-in test runner

🎯 Was dieses Projekt zeigt

  • 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

👨‍💻 Autor

Patrick Neumann

GitHub: github.com/Codenix-1349

About

Invite-basierte Online-Wahlen für Parteien, Verbände und Organisationen nach DSGVO · Node.js · Express 5 · React 19 · PostgreSQL · TOTP-Sicherung

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors