9ad54ae241f045986c18784c7fdf19af178e6e23
Frühstückskonten Verwaltung
Eine Web-App zur Verwaltung von Frühstückskonten für den Offenen Treff. Besucher können über eine PIN ihren Kontostand abfragen, Mitarbeiter können Einzahlungen und Abbuchungen vornehmen.
Funktionen
Für Besucher
- Kontostand mit 4-stelliger PIN abfragen
- Übersichtlicher Kontostand in großem Format
Für Mitarbeiter
- Konten anlegen und verwalten
- Einzahlungen und Abbuchungen durchführen
- Transaktionshistorie einsehen
- Feste Artikelpreise verwenden oder manuelle Beträge eingeben
Für Administratoren
- Alle Mitarbeiterfunktionen
- Artikelverwaltung (anlegen, bearbeiten, löschen)
- Benutzerverwaltung (Mitarbeiter anlegen, löschen)
Installation
Voraussetzungen
- Node.js (Version 14 oder höher)
- npm (wird mit Node.js installiert)
Schritte
- Repository klonen und in das Verzeichnis wechseln:
cd fruehstuecksapp
- Abhängigkeiten installieren:
npm install
-
Datenbank initialisieren: Die Datenbank wird automatisch beim ersten Start erstellt.
-
Anwendung starten:
npm start
Für die Entwicklung mit automatischem Neustart:
npm run dev
- Im Browser öffnen: http://localhost:3000
Standard-Anmeldung
- Benutzername: admin
- Passwort: admin123
Datenbank
Die Anwendung verwendet SQLite und speichert die Daten in der Datei fruehstueck.db im Projektverzeichnis.
Datenbank-Schema
- users: Mitarbeiter und Administratoren
- accounts: Besucher-Konten mit PIN
- items: Artikel mit festen Preisen
- transactions: Alle Transaktionen (Einzahlungen und Abbuchungen)
Sicherheit
- Alle Passwörter und PINs werden mit bcrypt gehasht
- Sessions werden serverseitig verwaltet
- Standard-Admin-Passwort sollte nach der ersten Anmeldung geändert werden
Konfiguration
Umgebungsvariablen
- PORT: Port für den Server (Standard: 3000)
- SESSION_SECRET: Geheimnis für Session-Cookies (Standard: 'fruehstueck-secret-key')
Beispiel für .env-Datei:
PORT=3000
SESSION_SECRET=your-secret-key-here
API-Endpunkte
GET /pin-check
- Seite zur PIN-Abfrage für Besucher
POST /api/pin-check
- JSON-API zur PIN-Abfrage (für mögliche mobile Integration)
- Request:
{ "pin": "1234" } - Response:
{ "success": true, "name": "Max Mustermann", "balance": 15.50 }
Lizenz
Diese Software ist für den internen Gebrauch im Offenen Treff bestimmt.
Description
Languages
EJS
54.6%
JavaScript
36.9%
CSS
8.5%