Anyone creating business-facing apps with Streamlit?

Streamlit is an absolute joy to work with! Elegant and simple. Lots of great apps out there, mostly MVPs or targeting tech users (data scientists etc.). LLMs and bots aside, does it make sense to create Streamlit apps for non-tech business execs/users? I’m talking live solid apps not MVPs. Would love to hear your views.

6 Likes

Hi! Yes, we have built some apps that target non-technical users and help them with rutinary/repetitive tasks involving excels and csv files. Essentially, they are data processing scripts that are thinly wrapped with streamlit so users can use them without installing python locally.

3 Likes

Thanks for the reply. Your apps sound super useful. I guess Streamlit works for simple apps.

1 Like

I think you can build pretty complex applications, especially suited for the enterprise. However, don’t expect to build apps with rich user experiences (hence why I say they’re more suited to the enterprise). “Rich user experiences” is a very subjective comment. Streamlit has great charting components, for example, but no native cross-widget communications, and limited layout responsiveness, so your milage may vary (folks in this forum have built some very interesting Streamlit components/frameworks that are changing this situation).

As apps get larger they will benefit from partitioning and modularization, such as: multiple pages, database offload, separating front end vs back end concerns, and perhaps even wrapping back end code with APIs (especially if you’re integrating with other systems or running async workloads). In most cases big apps will need to be deployed in other public clouds, not the free Streamlit Cloud, which has limited resources.

3 Likes

Hi, here I am :wave:

I’ve build (in the last year) a business app (EcoApp) with Streamlit only.
It has been deployed on Linode because I’m running 3 different platforms with Streamlit in the same domain (+ some extra utils tools).

  1. Admin platform (login: test@ecoapp.page, pwd: test)
  2. Client platform (no test login available, sorry)
  3. Video platform (login as guest)

I also deployed the core framework I’m using in Streamlit Cloud!
Here’s the application: Magiclit.
With the open source code on GitHub.

This is my example for a complete and final business app with this beautiful framework ONLY, hope it can be useful for you :balloon:

11 Likes

I forgot to mention that I wrote about this about a year ago on Streamlit’s blog.
https://blog.streamlit.io/uplanner-fosters-data-processing-innovation-with-streamlit/

But as far as I know, “regular business” is not a direction that streamlit is pursuing. If you develop something for a company, make sure you host it yourself to save some headaches!

I’m available if you want to talk more about this :smiley:

4 Likes

I always wished if we could use Streamlit to create an enterprise grade application. Since I had built several enterprise grade application on a similar platform called zoho creator I could compare the capabilities of both these platforms. Streamlit is nowhere in this area, there is no direction visible by the developers in Streamlit. This makes it more like a hobbyist playfield or people creating applications for a very specific solution. Another big issue with streamlit is that it runs like a bulky solution and if you develop an enterprise solution on it , I am not sure how it would perform. The basic building blocks to create an enterprise grade application does not exists, it needs to be created from ground up. I have gone to various responses where people have created enterprise grade application, it may be case of sheer genius, you need great effort to create a simple module for example user registration, user change/modification/deletion etc. An enterprise grade application needs to have a elaborate authorization module which controls user access across the application. With streamlit is it possible ? In theory Yes but in practice no. We can discuss at length.

2 Likes

Hello,
It will depend on the degree you want to implement, it is clear that it should not be an easy task to make an ERP with streamlit, but in my case in developing the management of a purchasing and procurement department with Streamlit, this offers me what conventional tools focused on this activity do not offer, a higher degree in data analysis applying machine learning and to adapt quickly and efficiently any changes or new ideas.



3 Likes

I’ve built a few business apps too. ERP system and a booking system. ERP was quite complex - authentication + authorization (SSO), translations, tables, database, quite complex imports from excel/csv, graphs, dynamic highlights, tree navigation menu.

All in all, Streamlit is quite capable, but it lacks a lot in terms of data entering with validation and in terms of interactivity (simple table row selection and a popup would really untie my hands).

2 Likes

How did you choose to host the app on the web?

2 Likes

I think hosting is not very complicated. If you have a server with a static public IP such as Google cloud, all you need to do is allow the port that streamlit app is running on in the server firewall. Then you will be able to access it using the public IP and the port.
If your server is behind a router with static public IP, just enable port forwarding on the router and point it to the server, then allow incoming connections on the server firewall for this port.
If your server is behind a router with dynamic public IP, again just forward the port on the router and point it to the server, allow incoming connections on the server firewall for this port, then install a dynamic dns application on the server such a dyndns by Oracle in order to point the dynamic public IP with a domain name. You will then be able to access the app using the domain name and the port.

Hope this was helpful.

2 Likes

I think Streamlit is great for making apps for non-technical users; it’s one of the fastest ways to go from script (that only someone with coding knowledge can interpret / use) to web app (which almost anyone can use). I’ve personally built a few apps for non-technical people myself (e.g., AutoAR). It’s quite straightforward to self-host rather than using the community cloud (as @awaisalimir mentioned), so it should be feasible to have internal-only Streamlit apps.

I think a lot of applications perform simple CRUD operations and Streamlit would work great for those; in fact, there are quite a few other companies that try to cater to this (e.g., Retool, Windmill). That being said, there’s still a pretty big gap between a one-page web app and fully fledged applications suitable for use across massive enterprise systems (i.e., with account provisioning, integrations with other systems, etc) and I’m not sure whether Streamlit intends to tackle those topics in the near future

4 Likes

I’d imagine this is going to feed into Snowflake’s distribution of Streamlit as Snowflake has much of this covered already.

I doubt we’ll get a fully scaleable ERP on Snowflake / Streamlit but for small to medium scale data inserts and updates, on top of Snowflake uni store, this could be quite interesting solution.

1 Like

Streamlit is great for building prototypes and functional apps for internal use cases. Especially data-centric apps. The apps can be solid. But if want to step outside the the ST design system to build a different design and UX it get hacky/hairy. Anything that you would normally tap in with middleware is also a world of hacks e.g. auth. ST is lacking in these two aspects which can be pretty painful if you need changes at this level. There are GH issues and threads in here for all these gaps that are up to 3yrs old. So if you want to make sure you have options to deal with unknowns in the future without a rewrite then I’d be very careful.

4 Likes

I’m building an internal enterprise app, and the network is all Windows servers. The integration between Streamlit and Windows IIS is not at all straightforward and full of incompatibilities that can be worked around in hacky fashion. I’ve already discovered a couple of issues that might merit a Github issue submission if they haven’t already been discovered.

Make Streamlit work on IIS and you can create a low-cost, near-substitute for Tableau or other data viz platform if you have someone to create/maintain it.

3 Likes

@MattGuitarMurphy can you expand on the IIS issues pls. I’m curious and might help others avoid some pain.

1 Like

The issues I had to hack around were simple and related to the user profile of the IIS Application Pool Identity and how Streamlit tries to find *.toml files. I think the main error was something like
Email: ${TIMESTAMP} input(): lost sys.stdin

Then there was an annoying warning about finding duplicate secrets.toml files. I had to go into the Streamlit webserver python files and poke at things. These were not really errors that anyone else had complained about online.

The real issue that I had to sidestep for now is that Streamlit’s internal webserver (hi Tornado) and IIS don’t play well with each other. Even when using HttpPlatformHandler to its full extent, I have a suspicion that IIS was not passing websocket communication properly from the IIS binding port to Streamlit. Using Application Routing Request and URL Rewrite, I was sort of able to get Streamlit to show up on the IIS binding port, but only temporarily/intermittently and indeterministically. When it worked, it was nice, but that was only for a few minutes, and then it would crash out with the usual 502.3 server error (connection unable to be established). Nothing changed in the meantime between when everything worked and when it’d stop working. Perhaps the changes were lagging their implementation, but I had gotten pretty particular with starting/stopping/starting IIS and the sites to get each change to stick. Maybe I wasn’t careful enough? Not sure. I’m pretty sure if I could get some websockets help, the HttpPlatformHandler would be sufficient to make it all work. Streamlit shows up with pulsing gray boxes and no kebab menu or “Running” text in the upper right. It just hangs there, but at least the output is being served on the right binding port.

Upon further review, it looks like ARR doesn’t handle HTTP_SEC_WEBSOCKET_EXTENSIONS properly. But even nerfing that server variable doesn’t provide functionality.

3 Likes

How did you solve the multipage + auth properly? I am having this issue: [How to hide the sidebar in multipages using streamlit_authentication package. Critical - #2 by mkhorasani](https://Sidebar, Multipages and Authentication)

1 Like

@SERGIO_AYALA_MINANO, I store user information in session state, but I’m not using the official multipage by Streamlit.

You can see how I implemented it on Github :technologist:

2 Likes

Yes, I am building several apps targetting the business users/ B2C users and IT2IT users. An absolute joy to work with, streamlit app.
What is your business case?

1 Like