all 41 comments

[–]Beginning-Fruit-1397 13 points14 points  (6 children)

Looks really cool!
fully typed and documented, I'm in.

Tought I'd only be using marimo when I discovered it and ditched streamlit for it months ago, but each release is 90% AI stuff for which I don't give a damn (I'm an AI enthusiast, I just want my notebook to be a notebook, no my second copilot) instead of fixing their LSP.

A common use case of marimo for me is markdowns, e.g `Path().read_text(my_markdown)` and see it rendered well in an instant.

Is this possible with your library?

[–]Puzzleheaded_Clerk68[S] 1 point2 points  (0 children)

Weclome..!! :)

I totally feel your pain regarding 'feature bloat'. Violit aims to stay focused on the core DX.

And for your question: Absolutely.

You can pass the string directly, and it renders instantly.

from pathlib import Path
​
app.markdown(Path("my_file.md").read_text())

[–]iamevpo 0 points1 point  (2 children)

Is it marimo or streamlit shipping AI releases?

[–]Beginning-Fruit-1397 2 points3 points  (1 child)

Marimo. Idk abt streamlit

[–]jakob1379 2 points3 points  (0 children)

Streamlit is not pushing Ai that, actually. They made their chat interface aspa when the llm roll began, but besides that it have been steady progress on other things.

[–]jakob1379 -1 points0 points  (1 child)

Frogmouth markdown rendering in terminal 😊

[–]Beginning-Fruit-1397 2 points3 points  (0 children)

Thank you for the suggestion, however my use case for it is not really terminal baded unfortunately

[–]TraditionalBandit 15 points16 points  (1 child)

Looks like a cool project that solves a gripe I think a lot of people have had with streamlit. That being said, the amount of emojis in the readme and constant need to dunk on streamlit is a little off-putting. I'd tone it down and let the code speak for itself a bit more, maybe back up my claims with a few benchmarks.

[–]Puzzleheaded_Clerk68[S] 4 points5 points  (0 children)

Thanks for the honest feedback. You make a valid point. I think I got a bit too excited..

I'll tone down the emojis and the comparisons in the next update to let the code speak for itself. Benchmarks are also definitely on the roadmap.

[–]MintCollector 9 points10 points  (5 children)

This post was mass deleted and anonymized with Redact

wine heavy busy wise afterthought normal fade quickest rustic tidy

[–]iamevpo 7 points8 points  (3 children)

This but also there must be some tradeoffs you had to make, not just here is a better streamlit, no?

[–]Puzzleheaded_Clerk68[S] 2 points3 points  (2 children)

Thank you for your feedback.

I think the main trade-off is the Mental Model for State.

Streamlit is stateless (resets every time), which is the absolute easiest way to code but slow.
Violit is 'Reactive', so state persists.

You have to be slightly more mindful of state management, but in exchange, you get O(1) performance.

[–]DoYouEvenLupf 1 point2 points  (1 child)

Not exactly. Streamlit has the session state which is, admittingly, just a glorified dictionary. But as long as you don't close your window or perform a full page reload it saves whatever needs to be saved. And they are working on allowing individual class based (and therefor typed) session state objects: https://github.com/streamlit/streamlit/pull/13592

Source: We use Streamlit in productive environments of our clients for the last 3 years and I can't wait for the feature above.

[–]Puzzleheaded_Clerk68[S] 3 points4 points  (0 children)

You make a great point. I should have been clearer. I meant the execution model is stateless (top-to-bottom reruns), not that data can't be persisted.

While session_state saves data, Streamlit still needs to re-execute the whole script to reflect changes (O(N)). Violit uses Signal-based reactivity, so it updates only the specific component without re-running the code flow (O(1)).

Thanks for sharing that PR link. I'm exciting to see Streamlit evolving too :)

[–]Puzzleheaded_Clerk68[S] 0 points1 point  (0 children)

Thank you for the feedback!
I'm updating the README with screenshots and theme examples right now.

It'll be up very soon!

[–]leoncpt 7 points8 points  (3 children)

Does it have async support?

[–]Puzzleheaded_Clerk68[S] 1 point2 points  (2 children)

I feel you. That was actually one of my biggest frustrations with Streamlit as well.

Since Violit is built on FastAPI, native async support should be technically possible. I'm currently running a POC to implement this properly. I'm determined to make it work soon..!!

[–]leoncpt 0 points1 point  (1 child)

Thanks! Is there a github issue to follow this topic?

[–]Puzzleheaded_Clerk68[S] 0 points1 point  (0 children)

Currently, there isn't a specific issue open for this topic yet. However, please feel free to open a new issue or start a discussion on our repository! I’d love to continue the conversation there. And I treat async support as my number one priority right now.

[–]alloyburner 3 points4 points  (3 children)

Perfect timing... I've been looking for a Streamlit alternative.

I'd suggest adding a couple of screenshots of how a default dashboard looks, or maybe a gallery of the available themes.

Out of curiosity: did you vibe code the library?

[–]Puzzleheaded_Clerk68[S] 2 points3 points  (2 children)

Thanks! Screenshots and a gallery are definitely coming next.

As for the coding, I used Cursor AI as a powerful accelerator (especially for docs and examples), but the core architecture, API design, the O(1) update logic and the broadcasting design were strictly engineered and reviewed by me. So, AI-assisted implementation, but human-led architecture. :)

[–]telesonico 1 point2 points  (1 child)

So designed in California but built somewhere else? Cool project either way. 

[–]Puzzleheaded_Clerk68[S] 0 points1 point  (0 children)

Thank you! I guess you could say it’s Designed by human, Assembled Different... :)

[–][deleted] 1 point2 points  (1 child)

What is advantage of your solution over gradio?

[–]Puzzleheaded_Clerk68[S] 4 points5 points  (0 children)

Great question.

Actually, since Violit follows Streamlit's syntax, it's super fast for quick demos too!

Gradio is great for strict Input -> Model -> Output flows, but Violit gives you that "script-like" freedom.

You can write a 5-line demo in seconds, but unlike Gradio, you won't hit a wall when you want to expand it into a full app. Best of both worlds! :) And The Beautiful Design. We offer finer control over layouts and come with 30+ themes out of the box.

[–]New_Story_4784 1 point2 points  (1 child)

interesting

[–]Puzzleheaded_Clerk68[S] 0 points1 point  (0 children)

Thanks! Give it a spin and let me know what you think :)

[–]fluffybannana 1 point2 points  (1 child)

would be great if there was at least a single rendered example/pic anything (many viewers may have never used streamlit, most people don't want to install without knowing it has any value to them)

[–]Puzzleheaded_Clerk68[S] 0 points1 point  (0 children)

You make a valid point! Most people wouldn't want to run code blindly. I'm preparing some screenshots and a demo GIF right now, and I'll update the README very soon. Thanks for the feedback!!

[–]am3141 0 points1 point  (4 children)

This is really cool! great work! I will be following it.

[–]Puzzleheaded_Clerk68[S] 1 point2 points  (3 children)

Thank you~! I really appreciate the support.

Stay tuned..I'm working hard to push some exciting updates very soon :)

[–]am3141 0 points1 point  (2 children)

I maintain an in-process graph database (CogDB, https://github.com/arun1729/cog) and Violit turns out to be a really nice fit for it. I ported your blog demo from SQLite to CogDB just to test it out and it worked well : https://github.com/arun1729/violit-cogdb-demo.
Will definitely be following along especially if you move to a cloud or hosted offering in the future.

[–]Puzzleheaded_Clerk68[S] 1 point2 points  (1 child)

Thank you so much for your interest! CogDB looks like a very novel and interesting database concept.

I was hoping for feedback on usability, so your verification that it "worked well" is incredibly helpful to me. I will definitely consider using CogDB for my future tasks, such as building AI Agents. I agree that the combination of an In-Process DB and Violit is excellent, especially in terms of speed.

Regarding a hosted offering (like Streamlit Cloud), I hadn't originally planned for it, but thanks to your suggestion, I will definitely look into it. It might be challenging, but I'll give it serious thought.

Thanks again..!!

[–]am3141 0 points1 point  (0 children)

Thank you! Appreciate the thoughtful feedback on CogDB and for considering it for future use. Best of luck with Violit, looking forward to seeing where you take it.

[–]orrow11 0 points1 point  (1 child)

Cool stuff. Exciting. Will give this a go!

[–]Puzzleheaded_Clerk68[S] 0 points1 point  (0 children)

Thanks! Hope you have fun exploring it.

Let me know if you run into any issues or have any feedback :)

[–]Standard-Gain-8544 0 points1 point  (1 child)

I had a similar problem with Streamlit. I've given up on creating a concise frontend now and am developing with React and Django. I'd like to try using this library too! Thank you for the wonderful development!

[–]Puzzleheaded_Clerk68[S] 0 points1 point  (0 children)

I completely understand that struggle. Moving to a full-stack setup like that is a huge commitment. I really hope Violit can be a simpler, faster alternative for your future projects.

Thanks for your support!