Domino can run apps built in a variety of popular frameworks, as long as they launch a web server on localhost:8888
. Below are minimal examples that demonstrate how to start each supported type of app. These are intended to help you get a working stub up and running quickly.
Framework | Typical Usage | Strengths/Limitations |
---|---|---|
Dash (Python) | Building interactive data visualizations and dashboards using Plotly. | Strong for polished, complex visualizations; requires more setup and coding than Streamlit. |
Streamlit LLM | Quickly prototyping AI/LLM-driven apps, chat interfaces, and data workflows. | Very fast to build and deploy; limited customization compared to Flask/Dash. |
HTML | Hosting static web pages or lightweight custom interfaces with CSS/JS. | Simple and flexible; lacks built-in interactivity without JavaScript. |
Flask (Python) | Creating custom web apps or APIs with more control over routes and logic. | Highly flexible and lightweight; more development effort required for UI/UX. |
Shiny (R) | Developing interactive R-based dashboards and statistical analysis apps. | Excellent for R users; less suited for Python ecosystems and larger-scale web apps. |
Dash lets you build analytic apps with interactive Plotly visualizations. It is well suited for polished dashboards, multi-page apps, and custom data exploration tools.
import dash
app = dash.Dash(__name__, routes_pathname_prefix='/')
if __name__ == '__main__':
app.run_server(port=8888, host='0.0.0.0', debug=True)
-
Make sure
dash
is installed in your environment. -
Use
routes_pathname_prefix='/'
for proper routing inside Domino.
Streamlit turns Python scripts into shareable apps with just a few lines of code. It is popular for quick prototypes, internal tools, and simple workflows.
import streamlit as st
st.title("Minimal Streamlit App")
st.write("Hello from Domino!")
In your .sh
file, launch with:
streamlit run app.py --server.port=8888 --server.address=0.0.0.0
-
Streamlit apps require a separate
.sh
such asapp.sh
startup script. -
You can configure the route prefix using
DOMINO_RUN_HOST_PATH
.
Flask provides fine-grained control for building custom web apps or APIs. It is a good choice for when you need to define your own routes and application logic.
from flask import Flask
import os
app = Flask(__name__)
@app.route("/")
def index():
return "Hello from Flask in Domino!"
if __name__ == '__main__':
app.run(port=8888, host='0.0.0.0')
-
Works out of the box with Domino’s routing and identity headers.
Shiny is the standard framework for interactive R applications. It enables reactive dashboards and analysis tools directly from R code.
Option 2: Shell script to launch Shiny
In your .sh
file:
R -e 'shiny::runApp("./", port=8888, host="0.0.0.0")'
-
Shiny must run on
localhost:8888
to work in Domino. -
User-level identity headers are only supported by Shiny Server Pro.
These minimal examples are designed to help you quickly stand up a working app in Domino using your preferred framework. Each framework has specific requirements for launch behavior and routing, but all follow the same basic pattern.
-
How Apps Run in Domino: Learn how apps run and use permissions.
-
Publish and Share Apps: Publish apps, customize URLs, and share with authorized users.