No description
- TypeScript 53.8%
- Svelte 44.9%
- HTML 0.6%
- Nix 0.3%
- CSS 0.3%
- Other 0.1%
|
|
||
|---|---|---|
| data | ||
| src | ||
| static | ||
| .envrc | ||
| .gitignore | ||
| .mcp.json | ||
| CLAUDE.md | ||
| flake.lock | ||
| flake.nix | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| postcss.config.js | ||
| README.md | ||
| shell.nix | ||
| svelte.config.js | ||
| tailwind.config.js | ||
| tsconfig.json | ||
| vite.config.ts | ||
Feuerwehr-Kasse
Kassenverwaltung für die Freiwillige Feuerwehr mit drei Unterkassen: Einsatzabteilung, Jugendfeuerwehr und Kinderfeuerwehr.
Tech Stack
- Frontend: SvelteKit + TypeScript
- Styling: TailwindCSS
- Datenbank: sql.js (SQLite im Browser)
- Speicherung: localStorage (automatisch)
Features
Dashboard (/)
- Übersicht der Kontostände pro Abteilung
- Jahresauswahl im Header
- Schnellübersicht Einnahmen/Ausgaben
Buchungen (/buchungen)
- Liste aller Transaktionen mit Filtern (Abteilung, Kategorie, Typ)
- Buchungen hinzufügen, bearbeiten, löschen
- Verknüpfung mit Veranstaltungen
- Kategorisierung (Einnahmen/Ausgaben)
Veranstaltungen (/veranstaltungen)
- Veranstaltungsverwaltung
- Automatische Zusammenfassung (Einnahmen/Ausgaben pro Event)
- Buchungen mit Events verknüpfen
Handgeld (/handgeld)
- Handgeldverwaltung pro Abteilung
- Erfassung von: Ausgegeben, Verbraucht, Zurückgegeben
Berichte (/berichte)
- Finanzberichte pro Jahr
- Kategorienübersicht
- Abteilungsübersicht
Einstellungen (/einstellungen)
- Anfangsbestände: Manuell setzen oder automatisch aus Vorjahr berechnen
- Datenbank exportieren: SQLite-Datei herunterladen
- Datenbank importieren: Backup wiederherstellen
- Seed-Daten laden: 2024 (258 Buchungen) oder 2025 Daten
- Datenbank zurücksetzen: Alle Daten löschen
Installation
cd feuerwehr-kasse
npm install
npm run dev
Die App läuft dann unter http://localhost:5173
Erste Schritte
- App starten mit
npm run dev - Zu Einstellungen navigieren
- 2024 Daten laden oder 2025 Daten laden klicken
- Jahr im Header auswählen
- Dashboard zeigt die Übersicht
Datenspeicherung
- Daten werden automatisch im Browser gespeichert (localStorage)
- Bei Browserwechsel oder Löschen der Browserdaten gehen Daten verloren
- Regelmäßig exportieren! (Einstellungen > Datenbank exportieren)
Seed-Daten
2024 Daten
- 258 Buchungen aus dem Kassenbericht 2024 (PDF)
- 6 Veranstaltungen (Neujahrsempfang, Mitgliederversammlung, Jubiläum 125 Jahre, Dankeschön-Party, Laternenumzug, Weihnachtsfeier)
- Anfangsbestände aus 2023
2025 Daten
- Buchungen aus der Excel-Datei "Kasse Feuerwehr.xlsx"
- Anfangsbestände = Endbestände 2024
Datenbank-Schema
Tabellen
departments- Abteilungen (EA, JFW, KFW)categories- Buchungskategorientransactions- Buchungenevents- Veranstaltungenpetty_cash- Handgeldbewegungenopening_balances- Anfangsbestände pro Jahr/Abteilung
Projektstruktur
feuerwehr-kasse/
├── src/
│ ├── lib/
│ │ ├── db/ # Datenbank (sql.js)
│ │ │ ├── database.ts
│ │ │ ├── schema.ts
│ │ │ ├── seed.ts
│ │ │ ├── seed-2024.json
│ │ │ └── seed-2025.json
│ │ └── stores/ # Svelte Stores
│ │ └── app.ts
│ └── routes/ # Seiten
│ ├── +page.svelte # Dashboard
│ ├── buchungen/
│ ├── veranstaltungen/
│ ├── handgeld/
│ ├── berichte/
│ └── einstellungen/
├── static/
│ └── sql-wasm.wasm # SQLite WASM
└── package.json
Entwicklung
npm run dev # Entwicklungsserver
npm run build # Produktions-Build
npm run preview # Build-Vorschau
Entwicklungshinweise
Siehe ../CLAUDE.md fuer detaillierte Entwicklungshinweise, insbesondere:
- Svelte 5 Runes vs. Legacy Mode
- Reaktive Anweisungen und haeufige Fallstricke
- Floating-Point-Rundung bei Geldbetraegen
- Datenbank-Persistenz