2 Punkte von dopeflamingo 2026-01-31 | 16 Kommentare | Auf WhatsApp teilen

Hallo.
Ich bin ein aktiver Entwickler, der in letzter Zeit nach Feierabend und am Wochenende Open Source als Hobby entwickelt.

Ich persönlich mag die intuitive Syntax von Streamlit sehr, und ich weiß auch, dass viele AI-/Data-Forscher in meinem Umfeld es häufig nutzen. Gleichzeitig habe ich aber oft gesehen, dass Leute mit Performance-Problemen kämpfen, je größer ihre Projekte werden. Als Alternative habe ich NiceGUI empfohlen, aber vielen fiel die Eingewöhnung in die Syntax etwas schwer. (NiceGUI wurde anfangs, soweit ich weiß, wohl von einem deutschen Unternehmen für den eigenen internen Einsatz entwickelt … ich halte es jedenfalls für ein wirklich gut gemachtes Framework.)

Außerdem halte ich auch die „Ästhetik“ bei der Darstellung von Daten für sehr wichtig. Allerdings habe ich festgestellt, dass es mit bestehenden Python-basierten GUI-Frameworks überraschend schwierig ist, wirklich ansprechende Oberflächen zu gestalten. Besonders ein großer Nachteil von NiceGUI ist, dass man sich nur schwer vom Material Design von Quasar lösen kann.

Deshalb habe ich Violit selbst entwickelt – mit dem Ziel, ein Tool zu schaffen, das „so einfach wie Streamlit ist, dabei aber schnell in der Performance und leicht zu stylen“. Die architektonische Grundlage bilden FastAPI und shoelace(Lit). Die wichtigsten Merkmale sind wie folgt.

💜 Die wichtigsten Merkmale von Violit

  1. 90 % ähnliche Intuitivität wie Streamlit
  • Die API wurde so intuitiv gestaltet, dass man mit vorhandener Streamlit-Erfahrung fast ohne Lernkurve sofort loslegen kann.
  1. O(1) Reactivity & Clean Syntax
  • Anders als bei Streamlit wird nicht das gesamte Skript neu ausgeführt, nur weil man auf einen Button klickt (No Re-run).
  • Auch ohne Optimierungs-Dekoratoren wie @st.cache ist schnelles und schlankes State-Management allein durch einfache Variablen- (state) Deklarationen möglich. (Das Konzept orientiert sich an den Signals von solid.js.)
  1. Easy Theming System
  • Aktuell werden rund 30 Preset-Themes unterstützt, sodass sich sofort attraktive UIs anwenden lassen.
  • Demnächst ist auch ein Update geplant, mit dem Nutzer Themes direkt selbst anpassen können.
  1. Hybrid Engine & Multi-Platform
  • Es gibt eine flexible Engine, die je nach Wahl des Nutzers sowohl einen Lite-Modus mit HTMX als auch einen WebSocket-Modus unterstützt. Anfangs ist das unproblematisch, aber ich dachte mir, dass es später mit wachsender Nutzerzahl durch WebSockets vielleicht langsamer werden könnte.
  • Ohne Codeänderungen kann man frei zwischen Web-Service- und Desktop-App-Modus (pywebview) wechseln.

Ich weiß nicht, wie weit sich dieses Projekt noch ausbauen lässt, aber wenn es gut ausgearbeitet wird, könnte man damit vielleicht MVP-artige Services, die man sonst mit Django oder RoR entwickelt hätte, deutlich schneller und ausschließlich mit Python erstellen. Um diese Möglichkeit konkret zu zeigen, habe ich auch Beispielcode für den Aufbau eines Blogs mit Violit beigefügt.

Es ist noch eine sehr frühe Phase, v0.0.4 (PoC), aber auf Reddit und anderswo gab es schon ziemlich positive Reaktionen, und nur zwei Wochen nach der Veröffentlichung wurden bereits über 200 Stars erreicht – deshalb habe ich mir ein Herz gefasst und es auch hier geteilt. Ich habe Softwareentwicklung fast immer nur im Rahmen meiner Arbeit gemacht … und dies ist mein erstes vollständig öffentliches Open-Source-Projekt. Für mich persönlich macht mir die reine Softwareentwicklung gerade enorm viel Spaß.

Falls ihr einmal mit Python Web-UIs oder Ähnliches bauen wollt, würde ich mich freuen, wenn ihr es euch einmal anschaut.. :)

16 Kommentare

 
realg 2026-02-04

Ich unterstütze das nachdrücklich.

 
dopeflamingo 2026-02-05

Vielen Dank für die große Unterstützung. :) Ich werde mit viel Einsatz und Freude weiter Updates veröffentlichen. Es macht mir großen Spaß.

 
rainystar 2026-02-02

Ich habe vor Kurzem versucht, die Arbeitsautomatisierung mit PyWebView umzusetzen. Da es sich um eine Desktop-Umgebung handelt, habe ich überlegt, wie sich das im Web lösen lässt ... Wenn man damit das hier nutzt, könnte man es dann auch im Web einfach verwenden?

 
rainystar 2026-02-02

Lässt sich etwas, das mit PyWebView entwickelt wurde, mithilfe von Violit einfach zu einer Website migrieren?

 
rainystar 2026-02-02

Ich frage noch einmal nach, weil meine Frage offenbar nicht konkret genug war.

Derzeit entwickle und nutze ich eine Desktop-App mit pywebview.
Da Violit Web/Desktop (pywebview) als Multiplattform unterstützt, bin ich neugierig.

  1. Ist es in der Praxis relativ einfach, eine bestehende auf pywebview basierende App auf die Violit-Struktur zu migrieren?
  2. In der Dokumentation steht, dass ein unveränderter Wechsel zwischen Web und Desktop möglich ist.
    Mich würde interessieren, ob die Architektur auch im tatsächlichen Service-Maßstab so ausgelegt ist, dass sich bei einer Erweiterung zum Web-Service strukturell dieselbe Codebasis beibehalten lässt. (Aus der Perspektive von pywebview → Web-Deployment-Struktur)
 
dopeflamingo 2026-02-05

Hallo. Der Schwierigkeitsgrad einer Migration hängt stark von der Struktur Ihrer bestehenden App ab.

Wenn die bestehende App ohne einen separaten Webserver (wie FastAPI) implementiert wurde und nur die JS-API von pywebview oder das Laden lokaler HTML-Dateien verwendet, muss für ein Web-Deployment die Kommunikationsschicht von Grund auf neu aufgebaut werden. Daher könnte es schwierig sein, den mit pywebview geschriebenen Code einfach direkt ins Web zu überführen.

Das können Sie als einen Punkt betrachten, der nichts mit violit zu tun hat. Es geht bei violit nicht darum, eine bestehende mit pywebview erstellte App umzubauen, sondern eher darum, dass eine mit violit entwickelte App von vornherein so konzipiert ist, dass sie Web und pywebview (Desktop) gleichzeitig unterstützt.

 
rainystar 2026-02-06

Vielen Dank.

 
dopeflamingo 2026-02-08

Unten haben wir eine Demo-Webseite sowie eine Dokumentation vorbereitet, die Sie direkt ausprobieren können.
Es wäre schön, wenn Sie einmal einen Blick darauf werfen. :)

Zur Info: Beide Websites wurden mit Violit erstellt.

 
rainystar 2026-02-08

Vielen Dank. Ich überlege gerade, ob ich das für die Arbeit im Unternehmen einsetzen soll.!!

 
dopeflamingo 2026-02-09

Ja, danke. Probieren Sie es gern aus, und wenn Ihnen etwas Unbequemes oder Verbessungswürdiges auffällt, sagen Sie bitte Bescheid.

 
darjeeling 2026-01-31

Es scheint, dass der Testcode und die Dokumentation noch etwas ausgebaut werden müssten.

 
dopeflamingo 2026-02-08

Ich habe unten eine Demo-Webseite sowie eine Dokumentation vorbereitet, die Sie direkt ausprobieren können.
Es wäre schön, wenn Sie einen Blick darauf werfen. :)

Zur Information: Beide Websites wurden mit Violit erstellt.

 
dopeflamingo 2026-02-02

Ja, vielen Dank für das gute Feedback. Die aktuelle Implementierung ist auf POC-Niveau, und da es bei Public Interface und Design noch viele Breaking Changes gibt, ist der aktuelle Plan, ab Version 0.5 Testcode hinzuzufügen.

Wie Sie gesagt haben, arbeiten wir derzeit vorrangig an der Öffnung der Homepage und an der Dokumentation, daher scheint es, als würde sie bald veröffentlicht. Da die erste Zielgruppe ohnehin bestehende Streamlit-Nutzer sind und die Syntax fast identisch ist, hatten wir etwas weniger das Gefühl, dass eine Dokumentation notwendig ist.

Bitte warten Sie noch ein kleines bisschen~

 
jayhanx 2026-01-31

Es wäre schön, wenn es eine Demo-Webseite gäbe, damit man es sofort ausprobieren kann.

 
dopeflamingo 2026-02-08

Ich habe bereits eine Demo-Webseite sowie eine Dokumentation vorbereitet, die Sie direkt ausprobieren können.
Es wäre schön, wenn Sie einen Blick darauf werfen. :)

Übrigens wurden beide Websites mit Violit erstellt.

 
dopeflamingo 2026-01-31

Ja, danke für die gute Anregung. Da es noch eine frühe Version ist, gibt es bisher noch keine Website, aber wenn wir eine erstellen, werden Sie im Web vermutlich verschiedene Widgets ausprobieren können. Vor allem ändern wir das Design derzeit schrittweise, um zu betonen, dass man damit etwas Schöneres gestalten kann als mit anderen Alternativen. :)