# WhereIsMyMoney Eine moderne Webanwendung zur persönlichen Finanzverwaltung mit umfassenden Funktionen für Transaktionsmanagement und Finanzübersicht. ## Features ### Transaktionsmanagement - **Vollständige CRUD-Operationen**: Erstellen, Bearbeiten, Löschen von Transaktionen - **Multi-Edit-Funktionalität**: Mehrere Transaktionen gleichzeitig bearbeiten - **Multi-Delete-Funktionalität**: Mehrere Transaktionen gleichzeitig löschen - **Erweiterte Filter**: Nach Datum, Beschreibung, Kategorie, Konto, Typ und Betrag filtern - **Paginierung**: Übersichtliche Navigation durch große Transaktionslisten - **Regelmäßige Transaktionen**: Automatische Generierung wiederkehrender Transaktionen ### Konten & Kategorien - **Bankkonten-Management**: Verwaltung mehrerer Bankkonten mit verschiedenen Typen - **Depot-Management**: Verwaltung von Investment-Depots verschiedener Broker - **Kategorien-System**: Flexible Kategorisierung mit Icons für bessere Übersicht - **Übersicht über Einnahmen und Ausgaben**: Detaillierte Finanzanalyse ### Benutzerfreundlichkeit - **Responsive Design**: Optimiert für Desktop und Mobile - **Interaktive Dashboards**: Grafische Darstellung der Finanzdaten mit Chart.js - **Benutzereinstellungen**: Passwort-Management und Profilverwaltung - **Session-Management**: Sichere Benutzeranmeldung mit Safari-Kompatibilität ### Technische Features - **Type-safe Templates**: a-h/templ für sichere HTML-Generierung - **Moderne Architektur**: GORM für Datenbankoperationen - **RESTful API**: JSON-basierte Endpunkte für AJAX-Operationen - **Filter-Persistierung**: URL-Parameter bleiben bei Navigation erhalten ## Technologien - **Backend**: Go 1.23 mit Gin Framework - **Templates**: a-h/templ für type-safe HTML Templates - **Database**: GORM mit SQLite - **Configuration**: Viper für Konfigurationsmanagement - **Sessions**: Gorilla Sessions - **Frontend**: Tailwind CSS ## Installation 1. Repository klonen oder herunterladen 2. In das Projektverzeichnis wechseln: ```bash cd whereismymoney ``` 3. Dependencies installieren: ```bash go mod tidy ``` 4. Templates generieren: ```bash templ generate ``` 5. Server starten: ```bash go run main.go ``` ## API Routes ### Authentifizierung - **Auth**: `/login`, `/register`, `/logout` ### Hauptseiten - **Dashboard**: `/` (geschützt) - Finanzübersicht mit Grafiken - **Transaktionen**: `/transactions` (geschützt) - Transaktionsliste mit Filtern - **Konten**: `/accounts` (geschützt) - Bank- und Depot-Verwaltung - **Einstellungen**: `/settings` (geschützt) - Benutzereinstellungen ### Transaktions-API - **GET** `/transactions` - Transaktionsliste mit Paginierung und Filtern - **POST** `/transactions` - Neue Transaktion erstellen - **PUT** `/transactions/:id` - Transaktion bearbeiten - **DELETE** `/transactions/:id` - Transaktion löschen - **PUT** `/transactions/multi-update` - Mehrere Transaktionen bearbeiten - **DELETE** `/transactions/multi-delete` - Mehrere Transaktionen löschen ### Recurring Transactions - **GET** `/recurring` - Regelmäßige Transaktionen anzeigen - **POST** `/recurring` - Neue regelmäßige Transaktion erstellen - **PUT** `/recurring/:id` - Regelmäßige Transaktion bearbeiten - **DELETE** `/recurring/:id` - Regelmäßige Transaktion löschen 6. Browser öffnen: http://localhost:8080 ## Entwicklung ### Templates generieren ```bash templ generate ``` ### Server starten ```bash go run main.go ``` ### Build erstellen ```bash go build -o app . ./app ``` ## Konfiguration Die App verwendet eine `config.yaml` Datei für die Konfiguration: ```yaml server: host: localhost port: "8080" database: type: sqlite path: "./whereismymoney.db" ``` ## Projekt-Struktur ``` whereismymoney/ ├── main.go # Hauptanwendung mit Routing ├── config.yaml # Konfigurationsdatei ├── whereismymoney.db # SQLite Datenbank ├── static/ │ ├── css/ │ │ └── style.css # Custom CSS │ └── js/ │ └── dashboard-charts.js # Chart.js Konfiguration ├── internal/ │ ├── config/ │ │ └── config.go # Konfigurationsverwaltung │ ├── database/ │ │ └── database.go # Datenbankverbindung und Migrationen │ ├── handlers/ │ │ └── handlers.go # HTTP Handler (Auth, Transaktionen, etc.) │ ├── models/ │ │ └── models.go # GORM Modelle (User, Transaction, etc.) │ └── views/ # Templ Templates │ ├── layout.templ # Basis-Layout │ ├── navigation.templ # Navigation-Komponente │ ├── dashboard.templ # Dashboard mit Grafiken │ ├── transactions.templ # Transaktionsliste mit Filtern │ ├── accounts.templ # Konten-Management │ ├── recurring.templ # Regelmäßige Transaktionen │ ├── settings.templ # Benutzereinstellungen │ ├── login.templ # Login-Seite │ └── register.templ # Registrierung └── README.md # Diese Datei ``` ## Datenbank-Modelle ### User - Benutzerauthentifizierung mit bcrypt - Beziehungen zu Konten, Depots und Transaktionen ### Transaction - Vollständige Transaktionsdaten (Betrag, Beschreibung, Datum, etc.) - Verknüpfung zu Benutzern, Kategorien und Konten - Unterstützung für Ein- und Ausgaben ### RecurringTransaction - Vorlage für regelmäßige Transaktionen - Flexible Intervalle (täglich, wöchentlich, monatlich, jährlich) - Automatische Generierung neuer Transaktionen ### BankAccount & Depot - Verschiedene Kontotypen (Girokonto, Sparkonto, Kreditkarte) - Depot-Management für verschiedene Broker - Saldo-Verfolgung ### Category - Kategorisierung mit Icons - Flexible Zuordnung zu Transaktionen