I have been building
https://github.com/claceio/clace, an app server for web apps. Clace allows easy hosting of multiple web apps, in any language/framework, on a single machine. Clace is cross-platform (Linux/Windows/OSX), unlike most similar tools which are Linux only. Clace combines the functionality of a reverse proxy and a container orchestrator (using Docker or Podman) in a single lightweight binary.
Clace can read from a source repo, build an image and start the container, proxying API calls to the container. The image is built from a Containerfile/Dockerfile. Clace can work without any change in the app repo. A gitops type deployment model is used for app updates, with staged deployment and preview environments. For example, an app at example.com:/myapp will have a staging env at example.com:/myapp_cl_stage. This allows any code and config changes to be verified in staging before being made live.
The reverse proxy can be programmed in Starlark (python-like language). No need to use a custom DSL for API config. Clace can proxy the app response or it can be used to build a hypermedia based UI using go HTML templates with HTMX and Tailwind support. Some of the auth related features are internal tools specific, but otherwise Clace can be used for any kind of webapp.
To install and try it out, run
curl -L https://clace.io/install.sh | sh
source $HOME/clhome/bin/clace.env
clace server start &
clace app create --auth=none --approve github.com/claceio/clace/examples/disk_usage /disk_usage # This installs a du like webapp
clace app create --auth=none --approve github.com/claceio/apps/utils/bookmarks /book # This installs a bookmark manager which uses sqlite for persistence
clace app create --auth=none --approve --spec python-streamlit --branch master github.com/streamlit/streamlit-example /streamlit # This uses streamlit framework, requires either Podman or Docker
See screen recording of a sample session and docs at
https://clace.io