Es gab ja hier schon mehrmals Ambitionen, ein neues Frontend zu schreiben. Das aktuelle funktioniert zwar gut, hat aber auch ein paar Nachteile aus Entwicklersicht.
Durch die letzte Aufmerksamkeit, die die UI bekommen hat und auch weil ich es etwas Schade finde, wenn die Arbeit verloren geht, die manche sich schon gemacht haben, habe ich mir überlegt, wie man weiter vorgehen kann.
Ich denke, die vorangegangenen Prototypen sind aus einem wesentlichen Grund im Sande verlaufen: Zu umfangreiche Änderungen sowohl im frontend als auch backend. Das liegt meiner Ansicht nach am Template-Processing, welches das Backend mit der UI koppelt.
Daher schlage ich vor, nach und nach eine JSON-API einzuführen und den Template-Processor zu entfernen.
So können wir mit kleinen Änderungen zu einem Stand kommen, der freundlicher gegenüber neuen UIs ist.
Die folgenden Schritte wären notwendig:
- JSON API drastisch erweitern, um alle settings etc. abfragen zu können
- Im HTML die neuen APIs verwenden, um letztendlich eine statische Website ohne Templates zu erhalten
- Frontend inklusive externer Abhängigkeiten als komprimiertes bundle auf dem ESP32 ablegen.
- Potentielle neue Website kann gegen API entwickelt werden und parallel zu alter UI verwendet werden (compile flag)
Das würde die folgenden Vorteile mit sich bringen:
- Neue UIs können gegen das API-Backend entwickelt werden. Das schließt natürlich Web-frontends, aber auch native Apps oder Heimautomatisierung/Skripte mit ein
- Statisches Frontend kann komprimiert werden und ggf. alle Abhängigkeiten mitbringen (webpack)
- Neue Features lassen sich schneller umsetzen
- Vereinheitlichung von Management und Accesspoint UI
Das setzt natürlich voraus, dass grundsätzlich Willen da ist, den aktuellen Python HTML Preprocessor durch standard web-technologien wie vite oder webpack zu ersetzen.
Eine vorherige Diskussion fand bereits hier statt. Ich möchte daran anknüpfen, aber explizit die neue Oberfläche ausklammern, da das viel zu umfrangreich wäre. Es soll darum gehen, den Weg für zukünftige Änderungen zu ebnen. Jeder Schritt soll dabei übersichtlich und iterativ sein.
Mich würde mal interessieren was ihr von dem Plan haltet. Findet ihr eine neue UI unnötig? Wollt ihr auf keinen Fall ein Framework wie Vue oder React? Findet ihr die JSON-API gut aber das Frontend soll so bleiben?