Show HN: Web Apps for Python Devs with Auto-Generated UI
davia.aiHi HN,
We’re Afnan, Theo and Ruben. We’re all ML engineers or data scientists, and we kept running into the same thing: we’d write useful Python functions, either for ourselves or internal tools, and then hit a wall when we wanted to share them as actual apps.
We tried Streamlit and Gradio. They’re great to get something up quickly. But as soon as we needed more flexibility or something more polished, there wasn’t really a path forward. Rebuilding the frontend properly in React isn’t where we bring the most value.
So we started building Davia. You keep your code in Python, decorate the functions you want to expose, and Davia starts a FastAPI server on your localhost. It opens a window connected to your localhost where you describe the interface with a prompt. It then builds the interface, and you can deploy everything in one step. Think of it as Lovable, but for Python developers.
It works especially well for building AI tools. We built it to integrate tightly with LangGraph, so if you’re writing agents or workflows, you can turn them into real apps without leaving Python.
Docs and examples here: https://docs.davia.ai GitHub: https://github.com/davia-ai/davia
We’re still in early stages and would love feedback from others building internal tools or AI apps in Python.
> You keep your code in Python, decorate the functions you want to expose, and Davia starts a FastAPI server on your localhost
Honestly it would be super useful to have this as a standalone feature , that can run native in cloud, kind of like an edge function service
Website bugbear - the video auto played for me on mobile, and I hate that. Just let me read the site and play the video as and when I want. Thanks.
Hey, thanks for the heads-up! Following @Rohitcss's suggestion, we’ve replaced the autoplay video with a GIF.
The application in the demo video left me with a few questions
1. Why does it use two requests with OPTIONS and POST methods instead of a single GET? Is this to reduce the amount/complexity of error handling logic in the generated application?
2. Why use a POST http request to get the sales data. I would have expected the route to use GET in this situation?
The use of a single POST request (the underlying logic behind the @app.task decorator) is meant to simplify things, especially for users who aren’t familiar with FastAPI. It abstracts away routing and request handling so you can focus on writing business logic without worrying about HTTP methods, URL paths, or response formatting. That said, since Davia is built on top of FastAPI, you can absolutely define and use your own endpoints if you prefer.
I would have loved more details on what you can accomplish with Devia that you can't do with Gradio or streamlit.
With Davia, you build on FastAPI and React best practices. Streamlit and Gradio rely on fixed components, which makes it hard to adapt the UI to your specific use case. Davia lets you define any interface you need. Streamlit also has production limitations like authentication, layout control, and API integration. And for AI use cases, it reruns the whole script on every input, making state management difficult. Davia supports real-time streaming and proper stateful interactions.
Please don't auto-start videos. Instead, use a GIF.
Please no?!? Gifs are super inefficient and they look exceptionally bad at any usable compression level. Just use a muted video!
Thanks so much for the feedback! We’ve updated the site with your suggestion.
Because of bandwidth consumption?
Just looking at the "Use Case Examples" requires signup?
Yes, for now signup is required to see the examples. But we’re working on displaying the use cases directly on the site soon.