Show HN: Web Apps for Python Devs with Auto-Generated UI

36 ruben-davia 14 5/24/2025, 1:26:23 AM davia.ai ↗
Hi 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.

Comments (14)

djaychela · 33d ago
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.
afnan_davia · 32d ago
Hey, thanks for the heads-up! Following @Rohitcss's suggestion, we’ve replaced the autoplay video with a GIF.
vladdoster · 32d ago
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?

ruben-davia · 32d ago
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.
ashishb · 33d ago
I would have loved more details on what you can accomplish with Devia that you can't do with Gradio or streamlit.
ruben-davia · 32d ago
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.
jerpint · 32d ago
> 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

ruben-davia · 32d ago
Thanks for the suggestion. We’ve noted it and will explore this idea!
Rohitcss · 32d ago
Please don't auto-start videos. Instead, use a GIF.
franga2000 · 32d ago
Please no?!? Gifs are super inefficient and they look exceptionally bad at any usable compression level. Just use a muted video!
afnan_davia · 32d ago
Thanks so much for the feedback! We’ve updated the site with your suggestion.
iamsaitam · 32d ago
Because of bandwidth consumption?
qwertox · 32d ago
Just looking at the "Use Case Examples" requires signup?
ruben-davia · 32d ago
Yes, for now signup is required to see the examples. But we’re working on displaying the use cases directly on the site soon.