# Vortragsnotizen: ## 1. Status Quo (auch Randbedingungen) ### Technologien - Golang als Programmiersprache (unverändert) - Goland als IDE (in Studienprojekt I) - VSCode (Editor mit Extension wegen besserer WSL Kompatibität) - Fyne als Frontend-Go-Library (unverändert) - Überlegung: Frontend-Framework als Frontend mit REST-API Kommunikation (React, Angular, Vue) - mehr Aufwand der nur die Inconvinience von Fyne lösen würde - Probleme mit Wails für Web-Framework-Desktop Apps - somit mehr Aufwand als funktionale Veränderungen - deshalb bei Fyne bleiben mit Kommunikation über Signal Channel - TCP/IP als Protokoll weiterhin - Testing: Zwei Szenarien: - Zwei Computer (inconvinient) - Zwei Instanzen auf dem selben Computer oder zwei VMs haben sich eher bewährt wegen Zeiteffizienz ### Funktionalitäten - Bisher bauen wir auf einer Software auf mit: - Netzwerk: Lokale automatische TCP-Verbindungen - TCP-Paketversand automatisch in drei verschiedenen Verzögerungen - Pakete werden visualisiert über Balkendiagramme - Verbindungsstatus LED für den User - Dark Mode für Barriefreiheit, wie reduzierte Augenbelastung und bessere Lesbarkeit - Fenster kann im Vollbild genutzt werden mit automatischer Skalierung der UI-Elemente - Cross-Platform kompatibel, Auslieferung für Windows, Linux und MacOS ## Frontend-Erweiterungen ### Peer-Discovery - Vorher: Nutzer kann nicht sehen mit welchem anderen Peer er verbunden ist, nur dass er überhaupt verbunden ist oder nicht - Snapdrop UI nicht realisiert weil: - Fyne arbeitet mit statischen Layouts und nativen Widgets - Radar-Zeichnung im Canvas zu komplex zur Erhaltung der Wartbarkeit des Code - Stattdessen Stärke von Fyne: Grid-Layout - Für Snapdrop Frontend-Austausch durch Web-Framework nötig leider (besser lösbar darin) - **Button Grid** für verfügbare Instanzen, blau/weiß oder blau/schwarz für hohen kontrast - Grid wird vom Backend alle 100ms aktualisiert - **Responsiveness im Button Grid Container** : - Schmales Fenster: Nur zwei Buttons nebeneinander - Breites Fenster: Vier Buttons nebeneinander, - Vorher: User klickt auf Button -> verbindet sich -> kann nur disconnecten indem er das Programm schließt - Disconnect Button im verbunden Zustand - Keine Peers werden angezeigt, weil die aktuelle Instanz schon verbunden ist