https://github.com/steinwedel/camt-052
A modern desktop and web application for viewing and analyzing CAMT.052 v8 XML bank statement files with multi-language support.
https://github.com/steinwedel/camt-052
bank-statement banking camt052 cross-platform desktop-app electron finance financial-data iso20022 nodejs transaction-viewer xml xml-parser
Last synced: 8 months ago
JSON representation
A modern desktop and web application for viewing and analyzing CAMT.052 v8 XML bank statement files with multi-language support.
- Host: GitHub
- URL: https://github.com/steinwedel/camt-052
- Owner: steinwedel
- License: mit
- Created: 2025-10-28T20:39:31.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-10-28T21:44:08.000Z (8 months ago)
- Last Synced: 2025-10-28T23:24:54.283Z (8 months ago)
- Topics: bank-statement, banking, camt052, cross-platform, desktop-app, electron, finance, financial-data, iso20022, nodejs, transaction-viewer, xml, xml-parser
- Language: HTML
- Size: 470 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CAMT.052 Kontoauszug Viewer
Eine Node.js-Anwendung (Web und Desktop) zum Auslesen und Anzeigen von Buchungen aus CAMT.052 v8 XML-Dateien. Dabei werden alle Daten ausschließlich lokal auf Ihrem Computer (Desktop-Anwendung) oder dem Server (Serveranwendung) verarbeitet. Eine Übertragung an externe Server oder Dritte findet nicht statt.
## 📋 Funktionen
- **XML-Datei Upload**: Einfaches Hochladen von CAMT.052 v8 XML-Dateien
- **Vollständige Transaktionsanzeige**: Zeigt alle wichtigen Informationen an:
- Absender (Name und IBAN)
- Empfänger (Name und IBAN)
- Betrag (formatiert in EUR)
- Buchungsdatum
- Valutadatum
- Verwendungszweck
- Transaktionstyp (Eingang/Ausgang)
- **Kontoinformationen**: Anzeige von IBAN, Kontoinhaber und Währung
- **Saldoanzeige**: Übersicht über Eröffnungs- und Schlusssaldo
- **Statistiken**: Anzahl der Buchungen, Eingänge und Ausgänge
- **Moderne Benutzeroberfläche**: Responsive Design mit professionellem Look
## 📥 Binäre Dateien herunterladen (Empfohlen)
**Keine Installation erforderlich!** Laden Sie die vorkompilierten ausführbaren Dateien direkt herunter:
### Desktop-Anwendungen (Direkt ausführbar)
**Windows:**
- [camt.052-desktop-viewer-win.exe](https://github.com/steinwedel/Camt-052/releases/latest/download/camt.052-desktop-viewer-win.exe) (Portable, ~100-150 MB)
- Einfach herunterladen und per Doppelklick starten - keine Installation nötig!
**macOS:**
- [camt.052-desktop-viewer-macOS-universal.dmg](https://github.com/steinwedel/Camt-052/releases/latest/download/camt.052-desktop-viewer-macOS-universal.dmg) (Universal Binary, ~200-250 MB)
- Funktioniert auf Intel und Apple Silicon Macs
- DMG öffnen, App in Programme-Ordner ziehen und starten
> **⚠️ macOS Sicherheitshinweis**
>
> Beim Ausführen wird folgende Fehlermeldung angezeigt:
>
> *"Apple konnte nicht überprüfen, ob „CAMT.052 Viewer" frei von Schadsoftware ist, die deinen Mac beschädigen oder deine Privatsphäre verletzen kann."*
>
> **Lösung:** Das Problem kann wie folgt behoben werden:
> 👉 [Apple Support: App aus unbekannter Quelle öffnen](https://support.apple.com/de-de/guide/mac-help/mchleab3a043/mac)
**Linux:**
- [camt.052-desktop-viewer-linux-x86_64.AppImage](https://github.com/steinwedel/Camt-052/releases/latest/download/camt.052-desktop-viewer-linux-x86_64.AppImage) (Intel/AMD 64-bit, ~150-200 MB)
- Ausführbar machen: `chmod +x camt.052-desktop-viewer-linux-x64.AppImage`
- Starten: `./camt.052-desktop-viewer-linux-x64.AppImage`
- [camt.052-desktop-viewer-linux-arm64.AppImage](https://github.com/steinwedel/Camt-052/releases/latest/download/camt.052-desktop-viewer-linux-arm64.AppImage) (ARM 64-bit, ~150-200 MB)
- Ausführbar machen: `chmod +x camt.052-desktop-viewer-linux-arm64.AppImage`
- Starten: `./camt.052-desktop-viewer-linux-arm64.AppImage`
### Server-Executables (Standalone)
**Windows:**
- [camt.052-web-viewer-windows.exe](https://github.com/steinwedel/Camt-052/releases/latest/download/camt.052-web-viewer-windows.exe) (~38 MB)
**macOS:**
- [camt.052-web-viewer-macOS-universal](https://github.com/steinwedel/Camt-052/releases/latest/download/camt.052-web-viewer-macOS-universal) (~51 MB)
- Ausführbar machen: `chmod +x camt.052-web-viewer-macOS-universal`
**Linux:**
- [camt.052-web-viewer-linux-x64](https://github.com/steinwedel/Camt-052/releases/latest/download/camt.052-web-viewer-linux-x64) (Intel/AMD 64-bit, ~46 MB)
- Ausführbar machen: `chmod +x camt.052-web-viewer-linux-x64`
- [camt.052-web-viewer-linux-arm64](https://github.com/steinwedel/Camt-052/releases/latest/download/camt.052-web-viewer-linux-arm64) (ARM 64-bit, ~46 MB)
- Ausführbar machen: `chmod +x camt.052-web-viewer-linux-arm64`
### Checksums (SHA256)
Zur Verifizierung der Downloads:
- [SHA256SUMS-server.txt](https://github.com/steinwedel/Camt-052/releases/latest/download/SHA256SUMS-server.txt)
- [SHA256SUMS-desktop.txt](https://github.com/steinwedel/Camt-052/releases/latest/download/SHA256SUMS-desktop.txt)
**Alle Releases anzeigen:** [GitHub Releases](https://github.com/steinwedel/Camt-052/releases)
---
## 🚀 Installation (Für Entwickler)
1. **Repository klonen oder Dateien herunterladen**
2. **Abhängigkeiten installieren**:
```bash
npm install
```
Die folgenden Pakete werden installiert:
- `express` - Web-Server Framework
- `fast-xml-parser` - XML-Parser für CAMT.052 Dateien
- `multer` - Datei-Upload Middleware
## 📦 Standalone Executables erstellen
Sie können eigenständige ausführbare Dateien für Windows, macOS und Linux erstellen, die keine Node.js-Installation benötigen.
### Voraussetzungen
- Node.js und npm müssen installiert sein (nur für den Build-Prozess)
- Mindestens 500 MB freier Speicherplatz
### Build-Methoden
#### Methode 1: Build-Script verwenden (Empfohlen)
Das `build.js` Script bietet eine benutzerfreundliche Oberfläche für **beide Build-Typen**:
**Alle Builds (Server + Desktop):**
```bash
# Erstellt alle Server-Executables UND Desktop-Apps für alle Plattformen
node build.js all
```
**Server-Executables (Standalone):**
```bash
# Aktuelle Plattform
node build.js server
# Alle Plattformen erstellen
node build.js server:all
# Nur Windows
node build.js server:windows
# Nur macOS
node build.js server:macos
# Nur Linux (erstellt beide Architekturen: x64 und ARM64)
node build.js server:linux
# Nur Linux x64
node build.js server:linux:x64
# Nur Linux ARM64
node build.js server:linux:arm64
```
**Desktop-Apps (Electron - Direkt ausführbare Dateien):**
```bash
# Desktop-App für aktuelle Plattform
node build.js desktop
# Desktop-Apps für alle Plattformen (empfohlen)
node build.js desktop:all
# Nur Windows
node build.js desktop:windows
# Nur macOS
node build.js desktop:macos
# Nur Linux (erstellt beide Architekturen: x64 und ARM64)
node build.js desktop:linux
# Nur Linux x64
node build.js desktop:linux:x64
# Nur Linux ARM64
node build.js desktop:linux:arm64
```
Die Desktop-Builds erstellen **direkt ausführbare Dateien** ohne Installation:
- **macOS**: DMG Installer (Universal Binary für Intel + Apple Silicon)
- **Windows**: Portable .exe (keine Installation nötig)
- **Linux**: AppImage (direkt ausführbar, x64 und ARM64)
Das Script:
- ✅ Prüft automatisch ob `pkg` installiert ist
- ✅ Installiert `pkg` falls nötig
- ✅ Erstellt die `dist-server` und `dist-desktop` Verzeichnisse
- ✅ Komprimiert die Server-Executables mit GZip
- ✅ Unterstützt Electron-Builder für Desktop-Apps
- ✅ Zeigt detaillierte Fortschrittsinformationen
- ✅ Gibt eine Zusammenfassung mit Dateigrößen aus
#### Methode 2: NPM Scripts verwenden
```bash
# Server-Executables
npm run build:server # Alle Plattformen
npm run build:server:win # Windows
npm run build:server:mac # macOS
npm run build:server:linux # Linux (x64 und ARM64)
# Desktop-Apps
npm run build:desktop # Aktuelle Plattform
npm run build:desktop:all # Alle Plattformen
npm run build:desktop:win # Windows
npm run build:desktop:mac # macOS
npm run build:desktop:linux # Linux (x64 und ARM64)
```
### Erstellte Dateien
**Server-Executables** (im `dist-server/` Verzeichnis):
```
dist-server/
├── camt.052-web-viewer-windows.exe # Windows (ca. 50-70 MB)
├── camt.052-web-viewer-macOS-universal # macOS Universal (ca. 50-70 MB)
├── camt.052-web-viewer-linux-x64 # Linux Intel/AMD (ca. 50-70 MB)
└── camt.052-web-viewer-linux-arm64 # Linux ARM (ca. 50-70 MB)
```
**Desktop-Apps** (im `dist-desktop/` Verzeichnis):
```
dist-desktop/
├── camt.052-desktop-viewer-windows.exe # Windows Portable (ca. 100-150 MB)
├── camt.052-desktop-viewer-macOS-universal.dmg # macOS DMG Installer (ca. 200-250 MB)
├── camt.052-desktop-viewer-linux-x64.AppImage # Linux Intel/AMD (ca. 150-200 MB)
└── camt.052-desktop-viewer-linux-arm64.AppImage # Linux ARM (ca. 150-200 MB)
```
**Hinweis**:
- Die Desktop-Apps sind größer als Server-Executables, da sie eine vollständige Chromium-Engine enthalten
- Die macOS DMG ist eine Universal Binary (Intel + Apple Silicon)
- Linux-Builds sind für beide Architekturen verfügbar (x64 und ARM64)
### Executables ausführen
#### Server-Executables
**Windows:**
```bash
# Doppelklick auf die .exe Datei oder im Terminal:
camt.052-web-viewer-windows.exe
```
**macOS:**
```bash
# Ausführbar machen (einmalig):
chmod +x camt.052-web-viewer-macOS-universal
# Starten:
./camt.052-web-viewer-macOS-universal
```
**Linux:**
```bash
# Intel/AMD 64-bit:
chmod +x camt.052-web-viewer-linux-x64
./camt.052-web-viewer-linux-x64
# ARM 64-bit:
chmod +x camt.052-web-viewer-linux-arm64
./camt.052-web-viewer-linux-arm64
```
#### Desktop-Apps (Direkt ausführbar)
**Windows:**
```bash
# Einfach die portable .exe Datei starten:
camt.052-desktop-viewer-windows.exe
# Oder per Doppelklick - keine Installation erforderlich!
```
**macOS:**
```bash
# DMG öffnen und App in Applications-Ordner ziehen:
open camt.052-desktop-viewer-macOS-universal.dmg
# Dann .app aus Applications-Ordner starten
# Oder per Doppelklick auf die DMG-Datei
# Die App ist eine Universal Binary und läuft automatisch nativ
# auf Intel und Apple Silicon Macs
```
**Linux:**
```bash
# Intel/AMD 64-bit:
chmod +x camt.052-desktop-viewer-linux-x64.AppImage
./camt.052-desktop-viewer-linux-x64.AppImage
# ARM 64-bit:
chmod +x camt.052-desktop-viewer-linux-arm64.AppImage
./camt.052-desktop-viewer-linux-arm64.AppImage
# Oder per Doppelklick
```
### Was ist enthalten?
Die Executables enthalten:
- ✅ Node.js Runtime
- ✅ Alle npm-Abhängigkeiten (express, fast-xml-parser, multer, adm-zip)
- ✅ Server-Code (server.js)
- ✅ Web-Interface (public/index.html)
- ✅ Alle benötigten Assets
**Keine Installation erforderlich!** Die Dateien können direkt ausgeführt werden.
### Optimierung
Die Executables sind mit GZip komprimiert, um die Dateigröße zu minimieren:
- **Ohne Kompression**: ~80-100 MB
- **Mit GZip**: ~50-70 MB (ca. 30-40% kleiner)
### Verteilung
Die erstellten Executables können einfach verteilt werden:
1. Kopieren Sie die entsprechende Datei auf den Zielrechner
2. Keine Installation oder Abhängigkeiten erforderlich
3. Einfach ausführen und im Browser öffnen (http://localhost:3001)
### Technische Details
- **pkg Version**: 5.8.1
- **Node.js Version**: 18 (eingebettet)
- **Kompression**: GZip
- **Plattformen**:
- Windows: x64
- macOS: x64 (Universal Binary)
- Linux: x64 und ARM64
### Fehlerbehebung
**Problem**: "pkg: command not found"
```bash
npm install --save-dev pkg@5.8.1
```
**Problem**: Executable startet nicht auf macOS
```bash
# Sicherheitseinstellungen umgehen:
xattr -d com.apple.quarantine camt.052-web-viewer-macOS-universal
chmod +x camt.052-web-viewer-macOS-universal
```
**Problem**: Executable startet nicht auf Linux
```bash
# Ausführungsrechte setzen:
chmod +x camt.052-web-viewer-linux-x64
# oder für ARM:
chmod +x camt.052-web-viewer-linux-arm64
```
## 💻 Verwendung
Die Anwendung kann auf **zwei Arten** verwendet werden:
### Modus 1: Desktop-Anwendung (Electron) 🖥️
**Empfohlen für die tägliche Nutzung**
```bash
npm run electron
```
Dies öffnet die Anwendung in einem nativen Desktop-Fenster mit eingebettetem Browser. Vorteile:
- ✅ Eigenständiges Fenster (kein Browser erforderlich)
- ✅ Native Desktop-Integration
- ✅ Automatischer Start des Servers im Hintergrund
- ✅ Einfaches Schließen über das Fenster
**Entwicklungsmodus mit DevTools:**
```bash
npm run electron:dev
```
### Modus 2: Web-Browser 🌐
**Für Entwicklung oder wenn kein Electron installiert ist**
```bash
npm start
```
Der Server läuft standardmäßig auf **http://localhost:3001**
**Port-Konfiguration:**
Sie können einen benutzerdefinierten Port über die Kommandozeile angeben:
```bash
# Direktes Format (Port als Argument)
node server.js 8080
# Flag-Format (mit --port)
node server.js --port 8080
```
Wenn kein Port angegeben wird, verwendet der Server automatisch Port 3001.
Öffnen Sie dann Ihren Browser und navigieren Sie zu `http://localhost:3001` (oder dem von Ihnen gewählten Port)
### Anwendung verwenden
**Datei-Upload (2 Methoden):**
1. **Methode 1 - Datei auswählen:**
- Klicken Sie auf "📁 Datei auswählen"
- Wählen Sie eine CAMT.052/053 XML- oder ZIP-Datei aus
- Die Datei wird automatisch hochgeladen und analysiert
2. **Methode 2 - Drag & Drop:**
- Ziehen Sie eine XML- oder ZIP-Datei auf den Upload-Bereich
- Die Datei wird automatisch hochgeladen und analysiert
Die Buchungen werden sofort geparst und angezeigt - kein zusätzlicher Button-Klick erforderlich!
### Beispieldatei testen
Eine Beispiel-CAMT.052-Datei ist im Projekt enthalten:
- **Datei**: `sample-camt052.xml`
- **Inhalt**: Enthält 6 Beispielbuchungen mit verschiedenen Transaktionstypen
- **Konto**: Max Mustermann (DE89370400440532013000)
## 📁 Projektstruktur
```
camt52/
├── electron.js # Electron Hauptprozess (Desktop-Modus)
├── server.js # Express-Server mit XML-Parsing-Logik
├── package.json # Projekt-Konfiguration und Abhängigkeiten
├── public/
│ └── index.html # Web-Interface (Frontend)
├── testdaten/ # Beispiel-XML-Dateien zum Testen
├── uploads/ # Temporärer Ordner für hochgeladene Dateien
└── README.md # Diese Datei
```
## 🔍 Angezeigte Informationen
Die Anwendung zeigt folgende Informationen an:
### Kontoinformationen
- IBAN
- Kontoinhaber
- Währung
### Kontostände
- Eröffnungssaldo (OPBD)
- Schlusssaldo (CLBD)
- Weitere Salden falls vorhanden
### Buchungen (Transaktionen)
Jede Buchung zeigt:
- **Typ**: Eingang (grün) oder Ausgang (rot)
- **Buchungsdatum**: Datum der Buchung
- **Valutadatum**: Wertstellungsdatum
- **Absender**: Name und IBAN des Absenders
- **Empfänger**: Name und IBAN des Empfängers
- **Betrag**: Formatiert in der jeweiligen Währung
- **Verwendungszweck**: Beschreibung der Transaktion
### Statistiken
- Gesamtanzahl der Buchungen
- Anzahl der Eingänge
- Anzahl der Ausgänge
## 🛠️ Technische Details
### CAMT.052 Format
Die Anwendung unterstützt das CAMT.052 v8 Format (ISO 20022 Standard) für Kontoauszüge.
### Parsing-Logik
- Automatische Erkennung von Einzel- und Mehrfachberichten
- Unterstützung für verschiedene Saldo-Typen
- Flexible Extraktion von Absender/Empfänger-Informationen
- Robuste Fehlerbehandlung
### Sicherheit
- **Datenschutz**: Alle Daten werden ausschließlich lokal auf Ihrem Computer verarbeitet - keine Übertragung an externe Server oder Dritte
- Hochgeladene Dateien werden nach dem Parsen automatisch gelöscht
- Nur XML-Dateien werden akzeptiert
- Fehlerhafte Dateien werden mit aussagekräftigen Fehlermeldungen abgelehnt
## 📝 Beispiel-Transaktionen
Die `sample-camt052.xml` enthält folgende Beispiel-Transaktionen:
1. **Gehaltszahlung** - 1.500,00 € (Eingang)
2. **Mietzahlung** - 850,00 € (Ausgang)
3. **Stromrechnung** - 125,50 € (Ausgang)
4. **Beratungsleistung** - 2.500,00 € (Eingang)
5. **Krankenversicherung** - 450,00 € (Ausgang)
6. **Mobilfunkrechnung** - 75,00 € (Ausgang)
## 🎨 Features
- ✅ Responsive Design
- ✅ Deutsche Lokalisierung
- ✅ Farbcodierte Transaktionstypen
- ✅ Übersichtliche Tabellenansicht
- ✅ Moderne Benutzeroberfläche
- ✅ Echtzeit-Dateiverarbeitung
- ✅ Detaillierte Fehlerbehandlung
## 📄 Lizenz
MIT
## 👨💻 Entwicklung
Entwickelt mit:
- Node.js
- Express.js
- fast-xml-parser
- Vanilla JavaScript (Frontend)
- HTML5 & CSS3
**Hinweis**: Diese Anwendung dient zu Demonstrationszwecken. Für den produktiven Einsatz sollten zusätzliche Sicherheitsmaßnahmen implementiert werden.