DiashowDL
Nach unserem ersten Gehversuch im vergangenen Jahr, eine App namens ESP32-Cam mithilfe von KI zu entwickeln – damals noch mit dem ungefähren Verhältnis von 60 % KI und 40 % menschlichem Zutun –, haben wir nun eine App fast allein von der Idee bis zur Produktionsreife mit der Unterstützung von KI umgesetzt.
DiashowDL, steht für Diashow Description Language. Diese Cross-Plattform-Flutter-App ermöglicht Diashows in zwei Modi: Kiosk oder Präsentation. Bei Letzterem wird eine Diashow von einem mobilen Gerät auf einem Desktop oder einem TV mit Android-Unterstützung wiedergegeben. Die App steht für die jeweiligen Stores von Apple (iOS und macOS-Variante), Google, Amazon und für Windows zur Verfügung. An der Linux Variante für den Snapcraft Store wird noch gearbeitet.
Durch das Client-Server-Konzept ist jedes Gerät bezüglich der Darstellung gleichberechtigt – die Intention ist es aber, von einem mobilen Gerät die Diashow auf einem größeren Bildschirm abzuspielen. Im Präsentationsmodus steht ein virtueller Laserpointer zur Verfügung. Optional zur Steuerung der Diashow durch Wischen und Buttons kann durch das Schwenken des mobilen Gerätes der Wechsel zum nächsten Bild initiiert werden.

Die Diashow Description Language ermöglicht einen vereinheitlichten Aufbau einer Diashow bezüglich der Überblendeffekte, Beschriftungen und Widgets. Als Widgets stehen Uhrzeit, Wetter, Logos, Luftqualität und eine Stoppuhr für den Vortragenden zur Verfügung.
Zusätzlich zu Bildern können Videos, Lottie-Animationen, Webseiten und PDFs in eine Diashow eingebunden werden.

Ein REST-API ermöglich es, eine Diashow durch externen Ereignisse zu steuern. Auf GitHub stehen dazu implementierte Beispiele in Python, Java, Go, Dart, Rust und Node.js zur Verfügung.

Die App wurde größtenteils mit dem jeweils aktuellen Modell von Claude Code entwickelt – bei bestimmten Aufgabenstellungen kam Claude Code vs. Gemini zum Einsatz. Die Flutter-Entwicklung lebt von dem Ökosystem der Plugins, inklusive der Tatsache, dass ein Plugin nicht immer für alle OS implementiert sein muss. Daher war einiges an Experimentieren in Form von „Vibe-Engineering“ vonnöten, um die Funktionalität der App für alle OS zu implementieren.
Für das Projekt haben wir summa summarum ca. 3 Monate gebraucht: kontinuierliches Arbeiten an dieser App als Hauptprojekt, aber ohne unsere anderen, kleineren Projekte aus den Augen zu verlieren.
Unsere Erfahrungswerte aus diesem Projekt:
- Die Codeentwicklung per Prompting hat erstaunlich gut funktioniert. Der erste Prototyp in seiner Grundfunktion ist schon nach einer Woche gestanden. Die restliche Zeit wurde mit Anpassungen an das jeweilige OS, Optimierungen und Erweiterungen bestritten.
- Was wir unterschätzt hatten: den Aufwand, der vonnöten ist, um Screenshots halbwegs ansprechend für fünf Stores jeweils in den benötigten Varianten (Smartphone, Tablet oder Desktop) zur Verfügung zu stellen. Und wenn man KI-Bilder im Hochformat (Portrait) erstellt, dann sollte man gleich von Anfang an das gleiche Motiv auch im Querformat (Landscape), wenn möglich für den Desktop, berücksichtigen.
- Eine Cross-Plattform-App in den Apple Store einzubringen, läuft unter dem biblischen Motto: „Du sollst keine anderen Stores neben dem Apple Store haben.“ In der Beschreibung der App darf diese zwar als Cross-Plattform-App bezeichnet werden; welche nun aber die anderen Plattformen seien, darf namentlich nicht ausgesprochen oder durch Logos der Stores angedeutet werden. Bei Bruch dieses Tabus kommt gleich unbarmherzig der Bannstrahl in Form der App-Rejection durch das Apple-Review-Team.
- Der Amazon Store stößt bei der Verwendung der Store-Logos in Screenshots auf die Frage, ob man die Rechte für diese Logos besitze. Konsequenz: Austausch der Logos durch Text.
- Bei der Linux-Variante kämpfen wir noch mit dem Problem, dass manches Flutter-Plugin mit dem Sandbox-Konzept von Snap kollidiert und nicht funktioniert (RPM- und DEB-Pakete sind hingegen kein Problem). Da ist beizeiten noch ein Deep Dive vonnöten.
- Windows 10 ist noch nicht wirklich tot. Ehrlich gesagt, hatten wir Windows 10 nicht getestet und die ersten Crash-Statistiken im Windows Store für Windows-10-Installationen waren betrüblich. Also Windows 10 in einer VM installiert und die App getestet: Probleme mit Plugins unter Windows 10 samt Crash. Als Konsequenz wurde die App erneut mit einer Restriktion auf nur Windows Version 11 veröffentlicht.