# Proto Ein Rumpf-Konstrukt für Webapps bestehend aus einer kleinen Java-App und einer Web-Bedienoberfläche. Die Java-App implementiert einen embedded Webserver auf der Grundlage des Java-Moduls jdk.httpserver. Die Bedienoberfläche besteht nur aus HTML, CSS und Javascript, die ohne Anpassung am Code auf verschiedenen Geräten funktioniert. ## Eigenschaften Die Bedienoberfläche gruppiert Menü, Kopf- und Fußzeile sowie eine Seitenleiste um einen zentralen Bereich, dessen Inhalt nach unten aus dem sichtbaren Teil der Anzeige herausläuft, wenn der Platz auf der Anzeige nicht ausreicht. Beim Rollen des Inhalts bleiben die umliegenden Elemente und damit die wesentlichen Bedienelemente sichtbar. Der Inhalt des Menüs kann über Beschreibungsdateien an unterschiedliche Belange angepasst und über eine Schaltfläche ein- und ausgeblendet werden. Die Menübeschreibungen müssen in der Javascript Object Notation (JSON) verfasst sein und können beliebig in eine hierarchische Struktur von Untermenüs verschachtelt werden. ## Demo Aussehen und Funktionsweise der Bedienoberfläche kann mit der [Demo](/data/ulrich/test/app-vorlage/) angesehen und ausprobiert werden. ## Verwendung Noch beschreiben #### Add to Home Screen Proto schafft die Grundlage für Apps, die sich neben der universellen Ausführbarkeit in einem Webbrowser auch in einem Schritt auf einem Schlaufon oder Tafelrechner installieren und ausführen lassen, wie es gewöhnlich nur Apps aus dem App Store des Geräteherstellers erlauben. Wird Proto beispielsweise mit Safari auf einem iPhone oder iPad aufgerufen, kann die Funktion "zum Home-Bildschirm hinzufügen" verwendet werden. Anschließend ist die App durch einfaches Antippen ihres Piktogrammes direkt vom Startbildschirm ausführbar wie eine App aus dem App Store. Diese Vorgehensweise funktioniert in vergleichbarer Weise mit Chrome auf Android-Geräten. ## Abhängigkeiten Proto verwendet [Mustache](https://mustache.github.io/) um Seitenvorlagen clientseitig zu HTML zu rendern. Damit der Code einfach geladen und so wie er ist ausprobiert werden kann ist Mustache aus dem Content Delivery Network [CDNJS](https://cdnjs.com/) eingebunden. Ferner ist die Schriftart [Roboto Condensed](https://fonts.google.com/specimen/Roboto+Condensed) aus [Google Fonts](https://fonts.google.com/) eingebaut. Diese Abhängigkeiten sollten von den angegebenen Quellen heruntergeladen und für einen produktiven Einsatz auf dem Rechner hinterlegt werden, auf dem Proto ausgeführt wird. Von dort eingebunden führt die Verwendung dieser Zusätze nicht zu einem Ausbrechen aus dem eigenen Server.