Dinletter

Web-Apps
Version: 1.0.0
Technologie: HTML, CSS, Vanilla JavaScript, IndexedDB, PDF.js
Kategorie: Web-Apps

Beschreibung

Dinletter ist eine browserbasierte Anwendung, mit der private Briefe nach DIN 5008 erstellt, geprüft und gedruckt werden können. Ziel war eine praktische Lösung, die sich um Abstände, Adressfeld und Seitenaufbau kümmert, damit der eigentliche Inhalt im Mittelpunkt bleibt.

Zum Editor gehören eine direkte Brief- und Umschlagvorschau, eine lokale Verwaltung für Entwürfe und Kontakte sowie Funktionen für Anlagen, Unterschriften und die fertige Ausgabe.

Technik

Die Anwendung ist mit HTML, CSS und Vanilla JavaScript umgesetzt. Editor, Vorschau, Dokumentverwaltung, Navigation und Speicherung sind in getrennte Module aufgeteilt, damit die verschiedenen Anwendungszustände nachvollziehbar bleiben.

Briefe, Kontakte und Anlagen werden lokal im Browser über IndexedDB gespeichert. Ein optionaler Passwortschutz verschlüsselt diese Daten mit der Web Crypto API, ohne Briefinhalte an einen Server zu übertragen.

PDF.js verarbeitet PDF-Anlagen für Vorschau und Druck. Die integrierte Druckprüfung kontrolliert wichtige Angaben vor der Ausgabe; gedruckt oder als PDF gespeichert wird anschließend direkt über den Browser.

Technische Highlights

  • Live-Vorschau für Brief und DIN-lang-Fensterumschlag
  • Lokale Briefverwaltung mit Suche, Duplizieren und Weiterbearbeiten
  • Adressbuch für wiederverwendbare Empfängerdaten
  • PDF- und Bildanlagen mit Sortierung und Auswahl einzelner PDF-Seiten
  • Digitale Unterschrift mit freier Positionierung und Skalierung
  • Druckprüfung, Druckmarken sowie Ausgabe über Druckdialog oder als PDF
  • Lokale Speicherung mit optionaler AES-GCM-Verschlüsselung

Was ich dabei gelernt habe

Bei Dinletter stand für mich besonders im Mittelpunkt, Eingabe, Vorschau, lokale Speicherung und Ausgabe als zusammenhängenden Workflow zu denken. Dabei wurde deutlich, wie wichtig klar getrennte Module und verlässliche Zustände sind, wenn viele Funktionen dieselben Briefdaten verwenden.