Hey HN, I’m Jimmy, co-founder of Dropbase (<a href="https://www.dropbase.io">https://www.dropbase.io</a>). We are an internal tools builder for Python developers. All you have to do is import any Python scripts/libraries, declare UI components, and layer app permissions so you can share them with others.<p>We’re a middle ground between Airplane and Retool—simpler UI creation than Airplane, more code-centered than Retool. UI building is declarative and you can bind Python scripts/functions to UI components. You can write Python scripts/functions using our App Studio with support from a Python Language Server Protocol (LSP) for linting. Since the self-hosted worker directly references .py or .sql files in the filesystem, you can even write them on VSCode directly or import any other Python script or library.<p>Our app layout is highly opinionated to speed up app building. Instead of an open canvas for UI building, we just give you a main table view and a widget sidebar. This approach significantly reduces app-building time while still covering what most tools need: see some data and take actions based on it. It’s not flexible enough to do absolutely anything, but that’s the point—there’s a tradeoff between flexibility and speed. Dropbase gives you most of what you need, plus speed!<p>A neat feature we are experimenting with to build admin panels fast is “Smart Tables”. We convert any SQL SELECT statement (even across multiple joins and filters) into an inline editable table, like spreadsheets, without any additional code.<p>We have a hybrid hosting model that combines a self-hosted client and a worker server, with a backend API for app/component definitions hosted by us to simplify pushing feature updates. The worker server sits in your machines so your sensitive data doesn’t leave your infra.<p>We’re Python-centric for now, but plan to add support for Rust, Go, and others later.<p>We made a few demo videos building common tools:
- Customer approval tool: <a href="https://youtu.be/A1MIIRNkv3Q" rel="nofollow noreferrer">https://youtu.be/A1MIIRNkv3Q</a>
- Data editing tool (with Smart Table): <a href="https://youtu.be/R1cHO9lMRXo" rel="nofollow noreferrer">https://youtu.be/R1cHO9lMRXo</a><p>To try Dropbase, create an account at <a href="https://app.dropbase.io">https://app.dropbase.io</a> and generate a token, then follow these instructions for local setup: <a href="https://docs.dropbase.io/setup/developer">https://docs.dropbase.io/setup/developer</a>.<p>We are very early so we're really excited to get your feedback, especially on our approach to tools building with Python! My co-founder Ayazhan and some of our teammates will be around to answer questions.
Hell yeah. I build internal web apps with Django. I'll definitely try this out in my upcoming project. Some major pain points are going past tables of data to (1) graphs (2) create/update modals (3) cron jobs. I've used and contributed to some plotting library I don't remember. For modals I usually use Vue+Primevue and for cron jobs I use celery+redis. Login is a pain, but it's mostly a solved problem on my end.
Looks cool! I think there is a huge need for tools like this, especially as AI turns more subject matter experts into programmers who can code a bit of python.<p>At my company we have recently started using NiceGUI which is a python wrapper for quasars+tailwind and seems like a very similar product. I’ve found it has a great level of abstraction that enables you to do Python only web App development without too much magic, but also lets you sprinkle in some CSS and javascript if needed.
FastUI (<a href="https://github.com/samuelcolvin/FastUI">https://github.com/samuelcolvin/FastUI</a>), a fully OSS Python-to-React library was just launched recently too
You've chosen a really bizarre way to package your software. I'm looking through your repo and can't see any code for your libraries. It seems like its somehow part of the docker image? So then this is just a shim for a docker environment that contains the code? Normally people would use Github for a hosted repo and make their software available on Pypi. But deploying with a docker file is kind of opaque and sketchy.<p>I would give better feedback but still no easy way to see the code? Unless you're trying to do it like this to have something like a closed-source version of your libraries... which would again be kind of a bizarre model to use with Python.
Very cool, thank you for sharing!<p>Do you consider your customer path someone coming from e.g. Airtable and converting? Or are you looking to find someone who would be choosing Django for their next project?<p>(This looks like something I would use Django for, although the additional building blocks are nice sugar on top too)
Congrats on launching!<p>> a backend API for app/component definitions hosted by us to simplify pushing feature updates<p>Any plans to open-source that part as well?
That looks fantastic! I own a startup where we used to relay he-vea-ly on retool (until we could automate most of the Retool work with ChatGpt haha).<p>I would have tried out your approach if it was out back then, I am much more well-versed in Python than JS. Having some way to write code in files, and then link it to the table structure makes a lot of sense (having lots of spaghetti code all over the place was one of the core issues of Retool, also it became slooooow at some point). Simplifying to a table + sidebar view is a very good idea (that's all we ever did).
Chainlit is my new favorite Python webapp framework, it’s especially geared toward UI for LLM chat apps. (It has nothing to do with LangChain fortunately, though it does support it and the name probably is inspired by it).<p>There are unique challenges in making a decent looking chat app. State management is one such. Streamlit’s approach is to rerun the script on every action, which means your code needs to be aware of this, and this usually results in headaches and spaghetti code. Chainlit has a clean approach — I don’t know what they do under the hood but at least from a dev POV it’s far simpler.<p>I’d be interested to see how a basic chat app is built with Dropbase so I can compare.
Looks nice, but I'll pass and stick to streamlit.io as they don't require an account and a connection between MY app and YOUR server for some misterious reason which is not clear anywhere.
What makes a web app "internal"? Does it mean it's just made to be run on localhost? Does it mean it would not run on a server? How so?<p>Also, why using this vs creating a desktop app? (There are ways to create GUI desktop apps in Python)
Interesting. How does this compare to <a href="https://flask-appbuilder.readthedocs.io/en/latest/" rel="nofollow noreferrer">https://flask-appbuilder.readthedocs.io/en/latest/</a>?
Did you guys pivoted Dropbase from CSV analytics to internal app builder? Interesting move. Internal.io just sunsetted. Maybe Dropbase has what it takes and finding its P/M fit.
Thanks HN! Really appreciate your input! Gotta sign off now though, it's getting late for me. I might answer some more questions in the morning if this is still on!
It would be great if this could generate a desktop app rather than another webapp that I need to host somewhere. We need to focus on desktop apps again.
There are plenty tools like this, plolty dash, justpy, nicegui, lona, reflex, streamlit, just to name a few.
If your app does not involve complicated interactions, streamlit is really easy to pick up.
We also had a great experience with plotly dash for a more complicated application.
nicegui also seems very promising.
So it's an agent that phones home and exfiltrates all your sensitive corporate data to the public cloud?<p>Lol.<p>I understand that SaaS is the only way to monetize software projects in 2023, but this whole setup is not defensible.
I am surprised that lack of control and customizability over the frontend is being billed as a feature.<p>I've built multiple internal tools like those in the example section, and even with a solid framework like react-admin, one of the first requests you're going to get from internal stakeholders is tweaks to the UI.<p>It's a myth that internal users aren't as demanding as external stakeholders. If anything, they can be more pushy.<p>I would not want to launch an internal tool, except as an engineering-only POC, unless customizing the frontend were at least as easy as customizing the backend.
I've done plenty of internal web apps with Python's old cgi module and it's really about the simplest approach. Too bad the cgi module has recently been removed from Python due to some weird neurosis about underused modules. It's still possible to side-load it from someplace though.
The license kinda sucks though:
```
3. USE RESTRICTIONS<p>Licensee is expressly forbidden from:<p>(a) Incorporating, modifying, or using the Software as part of any other product or service;
```