Table of Contents
Advanced Markdown Editor
Team
| Matrikelnummer | Name | Primäre Rolle | Sekundäre Rolle |
|---|---|---|---|
| 12216451 | Jeremiasz Zrolka | Teamcoordinator | Backend Tech Lead |
| 12314167 | Florentin Schäfer | Backend Tech Lead | CI/CD Lead |
| 12225128 | Nick Fischer | CI/CD Lead | Testing Lead |
| 12123662 | Benjamin Goisser | Documentation Lead | Backend Tech Lead |
| 12314645 | Alex Wilfinger | Testing Lead | Teamcoordinator |
| 12226596 | Jakob Matijasevic | UI/UX Lead | Frontend Lead |
Problembeschreibung
Viele bestehende Markdown-Editoren sind funktional eingeschränkt oder setzen zwingend Benutzerkonten voraus. Besonders fehlt oft die Möglichkeit, Dokumente in Echtzeit gemeinsam zu bearbeiten. Sie sind isolierte Einzellösungen für spezielle Bereiche, welche die Bedürfnisse unserer Zielgruppen großteils nicht abdecken: Entweder fehlt Realtime-Zusammenarbeit, der Export ist eingeschränkt, oder es besteht Account-Zwang. Unser Ziel ist es, ein Werkzeug zu entwickeln, das diese Schwächen beseitigt und mehrere bestehende Tools in einer modernen, webbasierten Anwendung vereint.
Der Advanced Markdown Editor soll Nutzer:innen ermöglichen, ohne Account Dokumente zu erstellen, zu teilen und in Echtzeit gemeinsam zu bearbeiten, aber speziell für Markdown. Durch eine Registrierung können Einstellungen und Markdown-Dokumente plattformübergreifend gespeichert werden.
Unser Ziel ist es ein flexibles Werkzeug zu entwickeln, dass Entwickler:innen, Studierende und Teams dabei unterstützt, in Markdown an einer Vielzahl an Usecases (Projektplanung, Gruppenarbeiten usw.) zu arbeiten.
Zielgruppe
Entwickler:innen/Tech-Affine Teams profitieren von Side-by-Side Editoren, Versionsverlauf und vielen anderen Features für Wikis, Projektplanung und Dokumentation direkt in Markdown.
Studierende/Akademiker:innen können unseren Advanced Markdown Editor für gemeinsame Mitschriften und Projekten verwenden. Die Realtime Collaboration und Export in verschiedene Formate machen das Tool ideal für Gruppenarbeiten und um Inhalte direkt zu teilen.
Features
| Name | Beschreibung | Typ |
|---|---|---|
| Toolbar | Diverse Textformatierungen (Bulletpoints, Tables, Links usw.) über eine graphische Oberfläche zugreifbar | Muss |
| Edit-View | Editor mit Markdown-Unterstützung und Syntaxvorhebung (Monaco) | Muss |
| Preview | Preview von Markup | Muss |
| Statistik-Leiste | Statistik über Anzahl Wörter, Zeilen, Character usw. | Muss |
| Laden | Laden von .md-Dokumenten (auch ohne Account) | Muss |
| Persistenter Zustand des Editor | Zustand des Editors persistent, auch nach Verlassen der Seite (auch ohne Account über Caching) | Muss |
| Realtime Collaboration | Mehrere Benutzer können gleichzeitig dasselbe Dokument bearbeiten und die Änderungen in Echtzeit sehen. | Muss |
| Export (Pandoc) | Die Möglichkeit, Dokumente in verschiedene Formate wie Markdown (.md) und PDF zu exportieren. Die Integration mit Pandoc ermöglicht potenziell viele weitere Formate. | Muss |
| Sharing-Permissions mit Links | Das Teilen von Dokumenten über generierte Links mit verschiedenen Berechtigungsstufen (z.B. Anzeigen, Bearbeiten). | Muss |
| LaTeX/Math Integration | Unterstützung für die Eingabe und Darstellung mathematischer Formeln und Symbole mit LaTeX-Syntax. | Muss |
| Bilder/Videos | Die Möglichkeit, Bilder und Videos in Dokumente einzubetten oder einzufügen. | Muss |
| Custom Keybinds | Benutzerdefinierte Tastenkombinationen zur schnelleren Ausführung von Befehlen und Aktionen innerhalb der Anwendung. | Muss |
| Dateiverwaltung (Sub-Dokumente) | Eine Verwaltung von Dokumenten, die keine Ordnerstruktur verwendet, sondern eine hierarchische Struktur ermöglicht, bei der Dokumente Unterdokumente enthalten können. | Muss |
| Cheatsheet | Eine Übersicht mit einer Liste der verfügbaren Befehle, benutzerdefinierten Tastenkombinationen und Markdown-Syntax. | Muss |
| Versionsverlauf | Die Möglichkeit, frühere Versionen eines Dokuments einzusehen und gegebenenfalls wiederherzustellen. | Muss |
| Account-Erstellung/Verwaltung | Benutzer können Konten erstellen und verwalten, um ihre Dokumente und Einstellungen zu speichern und zu synchronisieren. | Optional |
| Dokumente mit Accounts teilen | Die Möglichkeit, spezifische Dokumente mit anderen registrierten Benutzern zu teilen und deren Zugriffsrechte zu verwalten. | Optional |
| PWA für Offline-Editing | Eine Progressive Web App (PWA), die die Offline-Bearbeitung von Dokumenten und die lokale Speicherung von Daten ermöglicht. | Optional |
| Cloud Storage Integration | Integration mit Cloud-Speicherdiensten wie Google Drive und OneDrive, um Dokumente direkt zu öffnen, zu speichern und zu synchronisieren. | Optional |
| Monitoring für Admins (Sentry) | Integration mit einem Monitoring-Tool wie Sentry zur Erfassung und Analyse von Fehlern und Problemen in der Anwendung. | Optional |
| Custom Themes (Dark/Light) | Die Möglichkeit, das visuelle Erscheinungsbild der Anwendung durch benutzerdefinierte Themes oder zumindest durch eine Auswahl zwischen einem hellen und einem dunklen Design anzupassen. | Optional |
| Markdown Flavours | Unterstützung für verschiedene Markdown-Dialekte oder -Erweiterungen (z.B. GitHub Flavored Markdown). | Optional |
| Spellcheck | Eine integrierte Rechtschreibprüfung zur Erkennung und Korrektur von Tippfehlern. | Optional |
| LLM-Integration | Integration mit Large Language Models (LLMs) für Funktionen wie Texterstellung, Zusammenfassung oder andere KI-gestützte Features. | Optional |
| Diagramme | Die Fähigkeit, verschiedene Arten von Diagrammen (z.B. Flussdiagramme, Sequenzdiagramme) direkt im Editor zu erstellen oder einzubinden. | Optional |
Domänenmodell
@startuml
' ========== Entity-Klassen ==========
class User {
usertoken
}
class Document {
documentId
title
markdownFlavor
}
class DocumentVersion {
versionId
createdAt
}
class DocumentAction {
actionType
actorId
}
class LinkShare {
linkId
permission
expiresAt
}
class Settings {
theme
customKeybinds
}
class MediaFile {
fileId
fileType
storagePath
}
class Storage {
storageId
type
location
}
class MonitoringData {
timestamp
}
class Account {
email
password
}
' ========== Relationships ==========
User --> Document : owns
User --> DocumentAction : performs
User --> LinkShare : creates
User --> Settings : configures
Account --> User: refers to
Document --> DocumentVersion : has versions
Document --> MediaFile : embeds
Document --> Storage : stored in
Document --> LinkShare : can be shared by
DocumentAction --> Document : targets
DocumentAction --> MonitoringData : generates
LinkShare --> Document : grants access to
@enduml