first commit
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user