Ein modernes, lokales Abstimmungssystem mit Python-Backend und Svelte-Frontend.
✅ Admin-GUI (PyQT)
✅ Backend (Python + FastAPI)
✅ Frontend (Svelte)
easyWahl/
├── backend/
│ ├── admin_gui.py # Tkinter Admin-Panel
│ ├── api.py # FastAPI Server
│ ├── database.py # SQLite Manager
│ ├── models.py # Pydantic Models
│ ├── websocket_manager.py # WebSocket Handler
│ ├── requirements.txt # Python Dependencies
│ └── poll.db # SQLite DB (wird automatisch erstellt)
│
└── frontend/
├── src/
│ ├── lib/
│ │ ├── api.js # API Client
│ │ └── stores.js # Svelte Stores
│ ├── routes/
│ │ ├── +page.svelte # Voting Page
│ │ └── results/
│ │ └── +page.svelte # Results Page
│ └── app.css # Global Styles
└── package.json
cd backend
# Virtuelle Umgebung erstellen (empfohlen)
python -m venv venv
source venv/bin/activate # Linux/Mac
# oder
venv\Scripts\activate # Windows
# Dependencies installieren
pip install -r requirements.txt
# Admin-GUI starten
python admin_gui.py
Die Admin-GUI öffnet sich automatisch. Von dort aus kannst du:
Der Server läuft dann auf: http://localhost:8000
cd frontend
# Dependencies installieren
npm install
# Development-Server starten
npm run dev
Das Frontend ist erreichbar unter: http://localhost:5173
admin_gui.py
/results
oder klicke auf "Zu den Ergebnissen"Der Server bietet eine automatische API-Dokumentation:
Endpoint | Methode | Beschreibung |
---|---|---|
/api/candidates |
GET | Alle Kandidaten abrufen |
/api/candidates |
POST | Kandidat erstellen |
/api/candidates/{id} |
PUT | Kandidat bearbeiten |
/api/candidates/{id} |
DELETE | Kandidat löschen |
/api/vote |
POST | Stimme abgeben |
/api/vote/check |
POST | Prüfen ob Client abgestimmt hat |
/api/results |
GET | Aktuelle Ergebnisse |
/api/admin/reset |
POST | Alle Stimmen zurücksetzen |
/api/admin/unlock |
POST | Clients entsperren |
/api/export |
GET | Excel-Export |
/ws |
WebSocket | Live-Updates |
Server kann im lokalen Netzwerk freigegeben werden:
0.0.0.0:8000
(alle Interfaces)--host
Flag läuft ebenfalls auf allen Interfaceshttp://<SERVER-IP>:5173
(Voting)http://<SERVER-IP>:8000
(API)cd frontend
npm run build
npm run preview
lsof -i :8000
(Mac/Linux) oder netstat -ano | findstr :8000
(Windows)api.py
Der Code ist modular aufgebaut und leicht erweiterbar:
Dieses Projekt ist für den privaten und lokalen Gebrauch gedacht.
Bei Fragen oder Problemen:
/docs
Ein vollständiges, produktionsreifes Poll-System mit modernster Technologie.
Viel Erfolg bei deinen Abstimmungen! 🗳️