178 lines
5.8 KiB
Markdown
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
|