2 puntos por dopeflamingo 2026-01-31 | 16 comentarios | Compartir por WhatsApp

Hola.
Actualmente trabajo como desarrollador y, últimamente, después del trabajo y los fines de semana desarrollo open source como hobby.

En lo personal me gusta mucho la sintaxis intuitiva de Streamlit, y sé que varios amigos investigadores de AI/Data a mi alrededor también lo usan bastante. Pero a menudo veía que, a medida que sus proyectos crecían, sufrían por problemas de rendimiento. Como alternativa, yo les recomendaba NiceGUI, pero a la gente le costaba un poco adaptarse a su sintaxis. (Parece que NiceGUI al principio fue hecho por cierta empresa alemana para usarlo internamente... aun así, me parece un framework realmente muy bien hecho).

Además, creo que la estética también es muy importante al mostrar datos. Sin embargo, me di cuenta de que con los frameworks GUI basados en Python que ya existían, decorar algo de forma bonita era más difícil de lo que parece. En particular, una gran desventaja de NiceGUI es que no es fácil salirse del Material Design de Quasar.

Por eso terminé creando yo mismo Violit, con el objetivo de ofrecer una herramienta “tan fácil como Streamlit, pero rápida en rendimiento y sencilla de estilizar”. La base de su arquitectura está sostenida por FastAPI y shoelace(Lit). Sus características principales son las siguientes.

💜 Características principales de Violit

  1. Intuición 90% similar a Streamlit
  • Diseñé la API de forma intuitiva para que, si ya tienes experiencia usando Streamlit, puedas empezar a usarla casi sin curva de aprendizaje.
  1. O(1) Reactivity & Clean Syntax
  • Como en Streamlit, no pasa que por presionar un botón vuelva a ejecutarse todo el script completo (No Re-run).
  • Incluso sin decoradores de optimización como @st.cache, es posible manejar el estado de forma rápida y concisa solo declarando variables (state). (Tomé como referencia el concepto de signal de solid.js).
  1. Easy Theming System
  • Actualmente soporta alrededor de 30 temas predefinidos para aplicar una UI atractiva al instante.
  • Pronto también planeo actualizarlo con una función para que los usuarios puedan personalizar directamente sus propios temas.
  1. Hybrid Engine & Multi-Platform
  • Incorpora un motor flexible que soporta tanto modo Lite usando HTMX como modo WebSocket, según lo que elija el usuario. Al principio está bien, pero pensé que cuando más adelante lleguen muchos usuarios, quizá WebSocket podría volverse un cuello de botella y ralentizarlo.
  • Puedes alternar libremente entre modo servicio Web y app de escritorio (pywebview) sin modificar el código.

No sé hasta dónde podrá expandirse este proyecto, pero tengo la ligera expectativa de que, si se pule bien, podría permitir construir mucho más rápido y solo con Python servicios a nivel MVP que antes se hacían con Django o RoR. Para mostrar su potencial real, también incluí código de ejemplo para montar un blog hecho con Violit.

Aún está en una etapa completamente inicial, v0.0.4 (PoC), pero ha recibido una respuesta bastante positiva en Reddit y otros lugares, y superó las 200 estrellas apenas dos semanas después de su publicación, así que me animé a compartirlo también aquí. Casi siempre había hecho desarrollo de software solo como parte de mi trabajo en la empresa... y este es en realidad mi primer proyecto open source totalmente público. En lo personal, estoy disfrutando muchísimo la diversión pura de desarrollar software.

Si alguna vez necesitan crear algo como una Web UI en Python, les agradecería que le echaran un vistazo.. :)

16 comentarios

 
realg 2026-02-04

Lo apoyo con entusiasmo.

 
dopeflamingo 2026-02-05

Muchísimas gracias por el apoyo. :) Voy a seguir actualizando con ganas y disfrutándolo. Me da mucha alegría.

 
rainystar 2026-02-02

Recientemente intenté automatizar tareas usando pywebview. Como es para escritorio, estaba pensando en cómo manejar la parte web... ¿si uso esto en pywebview, se podría usar fácilmente también en la web?

 
rainystar 2026-02-02

¿Se puede migrar fácilmente a un sitio web algo desarrollado con PyWebView usando Violit?

 
rainystar 2026-02-02

Como la pregunta no parece ser lo suficientemente específica, vuelvo a consultarlo.

Actualmente estoy creando y usando una app de escritorio con pywebview. Me interesa porque Violit dice que soporta multiplataforma web/desktop (pywebview).

  1. ¿Migrar una app existente basada en pywebview a la estructura de Violit es, en términos realistas, algo relativamente sencillo?
  2. En la documentación dice que se puede cambiar entre web/desktop sin modificar el código, pero me gustaría saber si, a escala de un servicio real, la arquitectura está diseñada para permitir expandirse a un servicio web manteniendo estructuralmente la misma base de código. (Lo pregunto desde la perspectiva de una estructura de despliegue pywebview → web)
 
dopeflamingo 2026-02-05

Hola. La dificultad de la migración varía mucho según la estructura de la app existente que hayan creado.

Si la app existente se implementó sin un servidor web aparte (como FastAPI), y solo con la API JS de pywebview o cargando HTML local, entonces para desplegarla en la web hay que rehacer la capa de comunicación desde cero. Por eso, puede ser difícil convertir directamente a web el código que hicieron de forma sencilla con pywebview.

Pueden considerar que esta parte no tiene relación con violit. Más que violit cambie una app existente hecha con pywebview, la idea es que si la crean con violit, desde el inicio está diseñada para soportar al mismo tiempo web y pywebview (desktop).

 
rainystar 2026-02-06

Gracias.

 
dopeflamingo 2026-02-08

He preparado una página web de demostración y la documentación para que puedan probarlo de inmediato.
Creo que valdría la pena que les den un vistazo. :)

Como referencia, ambos sitios web fueron creados con Violit.

 
rainystar 2026-02-08

Gracias. Estoy considerando probar esto para el trabajo de la empresa.!!

 
dopeflamingo 2026-02-09

Sí, gracias. Pruébenlo y, si hay alguna parte que les resulte incómoda o poco práctica, por favor díganmelo.

 
darjeeling 2026-01-31

Parece que hace falta reforzar un poco el código de pruebas y la documentación.

 
dopeflamingo 2026-02-08

A continuación, dejé preparada una página web de demostración y la documentación para que puedan probarlo de inmediato.
Creo que valdría la pena que les den un vistazo. :)

Como referencia, ambos sitios web fueron creados con Violit.

 
dopeflamingo 2026-02-02

Sí, gracias por el buen feedback. La implementación actual está a nivel de POC, y como hay muchos cambios incompatibles en la interfaz pública y a nivel de diseño, por ahora el plan es agregar código de pruebas a partir de la versión 0.5.

Como mencionaste, estamos priorizando primero la apertura del sitio web y el trabajo de documentación, así que parece que estará disponible muy pronto. Como el primer objetivo son los usuarios existentes de Streamlit, y la sintaxis es casi idéntica, sentíamos un poco menos la necesidad de documentarlo.

Por favor, espéranos un poco más~

 
jayhanx 2026-01-31

Estaría bueno que hubiera una página web de demostración para poder probarlo de inmediato.

 
dopeflamingo 2026-02-08

A continuación dejé preparada una página web de demostración que pueden probar de inmediato, junto con la documentación.
Creo que valdría la pena que le echaran un vistazo. :)

Como referencia, ambos sitios web fueron creados con Violit.

 
dopeflamingo 2026-01-31

Sí, gracias por la buena sugerencia. Como todavía es una versión inicial, aún no tiene sitio web, pero cuando lo hagamos, probablemente podrán probar varios widgets en la web. Sobre todo, por ahora estamos ajustando poco a poco el diseño para enfatizar que se puede crear algo más bonito que con otras alternativas. :)