{"id":32692014,"url":"https://github.com/steinwedel/camt-052","last_synced_at":"2025-11-01T15:04:52.725Z","repository":{"id":321297360,"uuid":"1085285210","full_name":"steinwedel/Camt-052","owner":"steinwedel","description":"A modern desktop and web application for viewing and analyzing CAMT.052 v8 XML bank statement files with multi-language support.","archived":false,"fork":false,"pushed_at":"2025-10-28T21:44:08.000Z","size":481,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-28T23:24:54.283Z","etag":null,"topics":["bank-statement","banking","camt052","cross-platform","desktop-app","electron","finance","financial-data","iso20022","nodejs","transaction-viewer","xml","xml-parser"],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/steinwedel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-28T20:39:31.000Z","updated_at":"2025-10-28T21:44:17.000Z","dependencies_parsed_at":"2025-10-28T23:25:04.366Z","dependency_job_id":"6a3883e8-4203-41a6-b908-405d7249b3fe","html_url":"https://github.com/steinwedel/Camt-052","commit_stats":null,"previous_names":["steinwedel/camt-052"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/steinwedel/Camt-052","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steinwedel%2FCamt-052","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steinwedel%2FCamt-052/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steinwedel%2FCamt-052/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steinwedel%2FCamt-052/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steinwedel","download_url":"https://codeload.github.com/steinwedel/Camt-052/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steinwedel%2FCamt-052/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282158360,"owners_count":26623994,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-01T02:00:06.759Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bank-statement","banking","camt052","cross-platform","desktop-app","electron","finance","financial-data","iso20022","nodejs","transaction-viewer","xml","xml-parser"],"created_at":"2025-11-01T15:01:51.706Z","updated_at":"2025-11-01T15:04:52.716Z","avatar_url":"https://github.com/steinwedel.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"public/icon.png\" alt=\"CAMT.052 Viewer Logo\" width=\"200\"\u003e\n\u003c/p\u003e\n\n# CAMT.052 Kontoauszug Viewer\n\nEine 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.\n\n\n## 📋 Funktionen\n\n- **XML-Datei Upload**: Einfaches Hochladen von CAMT.052 v8 XML-Dateien\n- **Vollständige Transaktionsanzeige**: Zeigt alle wichtigen Informationen an:\n  - Absender (Name und IBAN)\n  - Empfänger (Name und IBAN)\n  - Betrag (formatiert in EUR)\n  - Buchungsdatum\n  - Valutadatum\n  - Verwendungszweck\n  - Transaktionstyp (Eingang/Ausgang)\n- **Kontoinformationen**: Anzeige von IBAN, Kontoinhaber und Währung\n- **Saldoanzeige**: Übersicht über Eröffnungs- und Schlusssaldo\n- **Statistiken**: Anzahl der Buchungen, Eingänge und Ausgänge\n- **Moderne Benutzeroberfläche**: Responsive Design mit professionellem Look\n\n## 📥 Binäre Dateien herunterladen (Empfohlen)\n\n**Keine Installation erforderlich!** Laden Sie die vorkompilierten ausführbaren Dateien direkt herunter:\n\n### Desktop-Anwendungen (Direkt ausführbar)\n\n**Windows:**\n- [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)\n  - Einfach herunterladen und per Doppelklick starten - keine Installation nötig!\n\n**macOS:**\n- [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)\n  - Funktioniert auf Intel und Apple Silicon Macs\n  - DMG öffnen, App in Programme-Ordner ziehen und starten\n\n\u003e **⚠️ macOS Sicherheitshinweis**\n\u003e \n\u003e Beim Ausführen wird folgende Fehlermeldung angezeigt:\n\u003e \n\u003e *\"Apple konnte nicht überprüfen, ob „CAMT.052 Viewer\" frei von Schadsoftware ist, die deinen Mac beschädigen oder deine Privatsphäre verletzen kann.\"*\n\u003e \n\u003e **Lösung:** Das Problem kann wie folgt behoben werden:  \n\u003e 👉 [Apple Support: App aus unbekannter Quelle öffnen](https://support.apple.com/de-de/guide/mac-help/mchleab3a043/mac)\n\n**Linux:**\n- [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)\n  - Ausführbar machen: `chmod +x camt.052-desktop-viewer-linux-x64.AppImage`\n  - Starten: `./camt.052-desktop-viewer-linux-x64.AppImage`\n\n- [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)\n  - Ausführbar machen: `chmod +x camt.052-desktop-viewer-linux-arm64.AppImage`\n  - Starten: `./camt.052-desktop-viewer-linux-arm64.AppImage`\n\n### Server-Executables (Standalone)\n\n**Windows:**\n- [camt.052-web-viewer-windows.exe](https://github.com/steinwedel/Camt-052/releases/latest/download/camt.052-web-viewer-windows.exe) (~38 MB)\n\n**macOS:**\n- [camt.052-web-viewer-macOS-universal](https://github.com/steinwedel/Camt-052/releases/latest/download/camt.052-web-viewer-macOS-universal) (~51 MB)\n  - Ausführbar machen: `chmod +x camt.052-web-viewer-macOS-universal`\n\n**Linux:**\n- [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)\n  - Ausführbar machen: `chmod +x camt.052-web-viewer-linux-x64`\n\n- [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)\n  - Ausführbar machen: `chmod +x camt.052-web-viewer-linux-arm64`\n\n### Checksums (SHA256)\n\nZur Verifizierung der Downloads:\n- [SHA256SUMS-server.txt](https://github.com/steinwedel/Camt-052/releases/latest/download/SHA256SUMS-server.txt)\n- [SHA256SUMS-desktop.txt](https://github.com/steinwedel/Camt-052/releases/latest/download/SHA256SUMS-desktop.txt)\n\n**Alle Releases anzeigen:** [GitHub Releases](https://github.com/steinwedel/Camt-052/releases)\n\n---\n\n## 🚀 Installation (Für Entwickler)\n\n1. **Repository klonen oder Dateien herunterladen**\n\n2. **Abhängigkeiten installieren**:\n```bash\nnpm install\n```\n\nDie folgenden Pakete werden installiert:\n- `express` - Web-Server Framework\n- `fast-xml-parser` - XML-Parser für CAMT.052 Dateien\n- `multer` - Datei-Upload Middleware\n\n## 📦 Standalone Executables erstellen\n\nSie können eigenständige ausführbare Dateien für Windows, macOS und Linux erstellen, die keine Node.js-Installation benötigen.\n\n### Voraussetzungen\n\n- Node.js und npm müssen installiert sein (nur für den Build-Prozess)\n- Mindestens 500 MB freier Speicherplatz\n\n### Build-Methoden\n\n#### Methode 1: Build-Script verwenden (Empfohlen)\n\nDas `build.js` Script bietet eine benutzerfreundliche Oberfläche für **beide Build-Typen**:\n\n**Alle Builds (Server + Desktop):**\n```bash\n# Erstellt alle Server-Executables UND Desktop-Apps für alle Plattformen\nnode build.js all\n```\n\n**Server-Executables (Standalone):**\n```bash\n# Aktuelle Plattform\nnode build.js server\n\n# Alle Plattformen erstellen\nnode build.js server:all\n\n# Nur Windows\nnode build.js server:windows\n\n# Nur macOS\nnode build.js server:macos\n\n# Nur Linux (erstellt beide Architekturen: x64 und ARM64)\nnode build.js server:linux\n\n# Nur Linux x64\nnode build.js server:linux:x64\n\n# Nur Linux ARM64\nnode build.js server:linux:arm64\n```\n\n**Desktop-Apps (Electron - Direkt ausführbare Dateien):**\n```bash\n# Desktop-App für aktuelle Plattform\nnode build.js desktop\n\n# Desktop-Apps für alle Plattformen (empfohlen)\nnode build.js desktop:all\n\n# Nur Windows\nnode build.js desktop:windows\n\n# Nur macOS\nnode build.js desktop:macos\n\n# Nur Linux (erstellt beide Architekturen: x64 und ARM64)\nnode build.js desktop:linux\n\n# Nur Linux x64\nnode build.js desktop:linux:x64\n\n# Nur Linux ARM64\nnode build.js desktop:linux:arm64\n```\n\nDie Desktop-Builds erstellen **direkt ausführbare Dateien** ohne Installation:\n- **macOS**: DMG Installer (Universal Binary für Intel + Apple Silicon)\n- **Windows**: Portable .exe (keine Installation nötig)\n- **Linux**: AppImage (direkt ausführbar, x64 und ARM64)\n\nDas Script:\n- ✅ Prüft automatisch ob `pkg` installiert ist\n- ✅ Installiert `pkg` falls nötig\n- ✅ Erstellt die `dist-server` und `dist-desktop` Verzeichnisse\n- ✅ Komprimiert die Server-Executables mit GZip\n- ✅ Unterstützt Electron-Builder für Desktop-Apps\n- ✅ Zeigt detaillierte Fortschrittsinformationen\n- ✅ Gibt eine Zusammenfassung mit Dateigrößen aus\n\n#### Methode 2: NPM Scripts verwenden\n\n```bash\n# Server-Executables\nnpm run build:server           # Alle Plattformen\nnpm run build:server:win       # Windows\nnpm run build:server:mac       # macOS\nnpm run build:server:linux     # Linux (x64 und ARM64)\n\n# Desktop-Apps\nnpm run build:desktop          # Aktuelle Plattform\nnpm run build:desktop:all      # Alle Plattformen\nnpm run build:desktop:win      # Windows\nnpm run build:desktop:mac      # macOS\nnpm run build:desktop:linux    # Linux (x64 und ARM64)\n```\n\n### Erstellte Dateien\n\n**Server-Executables** (im `dist-server/` Verzeichnis):\n\n```\ndist-server/\n├── camt.052-web-viewer-windows.exe          # Windows (ca. 50-70 MB)\n├── camt.052-web-viewer-macOS-universal      # macOS Universal (ca. 50-70 MB)\n├── camt.052-web-viewer-linux-x64            # Linux Intel/AMD (ca. 50-70 MB)\n└── camt.052-web-viewer-linux-arm64          # Linux ARM (ca. 50-70 MB)\n```\n\n**Desktop-Apps** (im `dist-desktop/` Verzeichnis):\n\n```\ndist-desktop/\n├── camt.052-desktop-viewer-windows.exe              # Windows Portable (ca. 100-150 MB)\n├── camt.052-desktop-viewer-macOS-universal.dmg      # macOS DMG Installer (ca. 200-250 MB)\n├── camt.052-desktop-viewer-linux-x64.AppImage       # Linux Intel/AMD (ca. 150-200 MB)\n└── camt.052-desktop-viewer-linux-arm64.AppImage     # Linux ARM (ca. 150-200 MB)\n```\n\n**Hinweis**: \n- Die Desktop-Apps sind größer als Server-Executables, da sie eine vollständige Chromium-Engine enthalten\n- Die macOS DMG ist eine Universal Binary (Intel + Apple Silicon)\n- Linux-Builds sind für beide Architekturen verfügbar (x64 und ARM64)\n\n### Executables ausführen\n\n#### Server-Executables\n\n**Windows:**\n```bash\n# Doppelklick auf die .exe Datei oder im Terminal:\ncamt.052-web-viewer-windows.exe\n```\n\n**macOS:**\n```bash\n# Ausführbar machen (einmalig):\nchmod +x camt.052-web-viewer-macOS-universal\n\n# Starten:\n./camt.052-web-viewer-macOS-universal\n```\n\n**Linux:**\n```bash\n# Intel/AMD 64-bit:\nchmod +x camt.052-web-viewer-linux-x64\n./camt.052-web-viewer-linux-x64\n\n# ARM 64-bit:\nchmod +x camt.052-web-viewer-linux-arm64\n./camt.052-web-viewer-linux-arm64\n```\n\n#### Desktop-Apps (Direkt ausführbar)\n\n**Windows:**\n```bash\n# Einfach die portable .exe Datei starten:\ncamt.052-desktop-viewer-windows.exe\n# Oder per Doppelklick - keine Installation erforderlich!\n```\n\n**macOS:**\n```bash\n# DMG öffnen und App in Applications-Ordner ziehen:\nopen camt.052-desktop-viewer-macOS-universal.dmg\n# Dann .app aus Applications-Ordner starten\n# Oder per Doppelklick auf die DMG-Datei\n\n# Die App ist eine Universal Binary und läuft automatisch nativ\n# auf Intel und Apple Silicon Macs\n```\n\n**Linux:**\n```bash\n# Intel/AMD 64-bit:\nchmod +x camt.052-desktop-viewer-linux-x64.AppImage\n./camt.052-desktop-viewer-linux-x64.AppImage\n\n# ARM 64-bit:\nchmod +x camt.052-desktop-viewer-linux-arm64.AppImage\n./camt.052-desktop-viewer-linux-arm64.AppImage\n\n# Oder per Doppelklick\n```\n\n### Was ist enthalten?\n\nDie Executables enthalten:\n- ✅ Node.js Runtime\n- ✅ Alle npm-Abhängigkeiten (express, fast-xml-parser, multer, adm-zip)\n- ✅ Server-Code (server.js)\n- ✅ Web-Interface (public/index.html)\n- ✅ Alle benötigten Assets\n\n**Keine Installation erforderlich!** Die Dateien können direkt ausgeführt werden.\n\n### Optimierung\n\nDie Executables sind mit GZip komprimiert, um die Dateigröße zu minimieren:\n- **Ohne Kompression**: ~80-100 MB\n- **Mit GZip**: ~50-70 MB (ca. 30-40% kleiner)\n\n### Verteilung\n\nDie erstellten Executables können einfach verteilt werden:\n1. Kopieren Sie die entsprechende Datei auf den Zielrechner\n2. Keine Installation oder Abhängigkeiten erforderlich\n3. Einfach ausführen und im Browser öffnen (http://localhost:3001)\n\n### Technische Details\n\n- **pkg Version**: 5.8.1\n- **Node.js Version**: 18 (eingebettet)\n- **Kompression**: GZip\n- **Plattformen**: \n  - Windows: x64\n  - macOS: x64 (Universal Binary)\n  - Linux: x64 und ARM64\n\n### Fehlerbehebung\n\n**Problem**: \"pkg: command not found\"\n```bash\nnpm install --save-dev pkg@5.8.1\n```\n\n**Problem**: Executable startet nicht auf macOS\n```bash\n# Sicherheitseinstellungen umgehen:\nxattr -d com.apple.quarantine camt.052-web-viewer-macOS-universal\nchmod +x camt.052-web-viewer-macOS-universal\n```\n\n**Problem**: Executable startet nicht auf Linux\n```bash\n# Ausführungsrechte setzen:\nchmod +x camt.052-web-viewer-linux-x64\n# oder für ARM:\nchmod +x camt.052-web-viewer-linux-arm64\n```\n\n## 💻 Verwendung\n\nDie Anwendung kann auf **zwei Arten** verwendet werden:\n\n### Modus 1: Desktop-Anwendung (Electron) 🖥️\n\n**Empfohlen für die tägliche Nutzung**\n\n```bash\nnpm run electron\n```\n\nDies öffnet die Anwendung in einem nativen Desktop-Fenster mit eingebettetem Browser. Vorteile:\n- ✅ Eigenständiges Fenster (kein Browser erforderlich)\n- ✅ Native Desktop-Integration\n- ✅ Automatischer Start des Servers im Hintergrund\n- ✅ Einfaches Schließen über das Fenster\n\n**Entwicklungsmodus mit DevTools:**\n```bash\nnpm run electron:dev\n```\n\n### Modus 2: Web-Browser 🌐\n\n**Für Entwicklung oder wenn kein Electron installiert ist**\n\n```bash\nnpm start\n```\n\nDer Server läuft standardmäßig auf **http://localhost:3001**\n\n**Port-Konfiguration:**\n\nSie können einen benutzerdefinierten Port über die Kommandozeile angeben:\n\n```bash\n# Direktes Format (Port als Argument)\nnode server.js 8080\n\n# Flag-Format (mit --port)\nnode server.js --port 8080\n```\n\nWenn kein Port angegeben wird, verwendet der Server automatisch Port 3001.\n\nÖffnen Sie dann Ihren Browser und navigieren Sie zu `http://localhost:3001` (oder dem von Ihnen gewählten Port)\n\n### Anwendung verwenden\n\n**Datei-Upload (2 Methoden):**\n\n1. **Methode 1 - Datei auswählen:**\n   - Klicken Sie auf \"📁 Datei auswählen\"\n   - Wählen Sie eine CAMT.052/053 XML- oder ZIP-Datei aus\n   - Die Datei wird automatisch hochgeladen und analysiert\n\n2. **Methode 2 - Drag \u0026 Drop:**\n   - Ziehen Sie eine XML- oder ZIP-Datei auf den Upload-Bereich\n   - Die Datei wird automatisch hochgeladen und analysiert\n\nDie Buchungen werden sofort geparst und angezeigt - kein zusätzlicher Button-Klick erforderlich!\n\n### Beispieldatei testen\n\nEine Beispiel-CAMT.052-Datei ist im Projekt enthalten:\n- **Datei**: `sample-camt052.xml`\n- **Inhalt**: Enthält 6 Beispielbuchungen mit verschiedenen Transaktionstypen\n- **Konto**: Max Mustermann (DE89370400440532013000)\n\n## 📁 Projektstruktur\n\n```\ncamt52/\n├── electron.js            # Electron Hauptprozess (Desktop-Modus)\n├── server.js              # Express-Server mit XML-Parsing-Logik\n├── package.json           # Projekt-Konfiguration und Abhängigkeiten\n├── public/\n│   └── index.html        # Web-Interface (Frontend)\n├── testdaten/            # Beispiel-XML-Dateien zum Testen\n├── uploads/              # Temporärer Ordner für hochgeladene Dateien\n└── README.md             # Diese Datei\n```\n\n## 🔍 Angezeigte Informationen\n\nDie Anwendung zeigt folgende Informationen an:\n\n### Kontoinformationen\n- IBAN\n- Kontoinhaber\n- Währung\n\n### Kontostände\n- Eröffnungssaldo (OPBD)\n- Schlusssaldo (CLBD)\n- Weitere Salden falls vorhanden\n\n### Buchungen (Transaktionen)\nJede Buchung zeigt:\n- **Typ**: Eingang (grün) oder Ausgang (rot)\n- **Buchungsdatum**: Datum der Buchung\n- **Valutadatum**: Wertstellungsdatum\n- **Absender**: Name und IBAN des Absenders\n- **Empfänger**: Name und IBAN des Empfängers\n- **Betrag**: Formatiert in der jeweiligen Währung\n- **Verwendungszweck**: Beschreibung der Transaktion\n\n### Statistiken\n- Gesamtanzahl der Buchungen\n- Anzahl der Eingänge\n- Anzahl der Ausgänge\n\n## 🛠️ Technische Details\n\n### CAMT.052 Format\nDie Anwendung unterstützt das CAMT.052 v8 Format (ISO 20022 Standard) für Kontoauszüge.\n\n### Parsing-Logik\n- Automatische Erkennung von Einzel- und Mehrfachberichten\n- Unterstützung für verschiedene Saldo-Typen\n- Flexible Extraktion von Absender/Empfänger-Informationen\n- Robuste Fehlerbehandlung\n\n### Sicherheit\n- **Datenschutz**: Alle Daten werden ausschließlich lokal auf Ihrem Computer verarbeitet - keine Übertragung an externe Server oder Dritte\n- Hochgeladene Dateien werden nach dem Parsen automatisch gelöscht\n- Nur XML-Dateien werden akzeptiert\n- Fehlerhafte Dateien werden mit aussagekräftigen Fehlermeldungen abgelehnt\n\n## 📝 Beispiel-Transaktionen\n\nDie `sample-camt052.xml` enthält folgende Beispiel-Transaktionen:\n\n1. **Gehaltszahlung** - 1.500,00 € (Eingang)\n2. **Mietzahlung** - 850,00 € (Ausgang)\n3. **Stromrechnung** - 125,50 € (Ausgang)\n4. **Beratungsleistung** - 2.500,00 € (Eingang)\n5. **Krankenversicherung** - 450,00 € (Ausgang)\n6. **Mobilfunkrechnung** - 75,00 € (Ausgang)\n\n## 🎨 Features\n\n- ✅ Responsive Design\n- ✅ Deutsche Lokalisierung\n- ✅ Farbcodierte Transaktionstypen\n- ✅ Übersichtliche Tabellenansicht\n- ✅ Moderne Benutzeroberfläche\n- ✅ Echtzeit-Dateiverarbeitung\n- ✅ Detaillierte Fehlerbehandlung\n\n## 📄 Lizenz\n\nMIT\n\n## 👨‍💻 Entwicklung\n\nEntwickelt mit:\n- Node.js\n- Express.js\n- fast-xml-parser\n- Vanilla JavaScript (Frontend)\n- HTML5 \u0026 CSS3\n\n\n**Hinweis**: Diese Anwendung dient zu Demonstrationszwecken. Für den produktiven Einsatz sollten zusätzliche Sicherheitsmaßnahmen implementiert werden.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteinwedel%2Fcamt-052","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteinwedel%2Fcamt-052","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteinwedel%2Fcamt-052/lists"}