Files
Matthias Hinrichs 189e7a2329 first commit
2025-08-26 03:17:49 +02:00

178 lines
5.8 KiB
Markdown

# 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