- Streamlit UI: Build interactive interfaces with Python-only code.
- Orbitra Environment Integration: Use
get_lake_client()to create anOrbitraLakeClientwith Orbitra Commons-managed authentication, and connect your app to Orbitra Flows scheduled pipelines. - Dev Container: Reproducible environment with
uvpackage manager and tooling. - CI/CD Pipeline: Automated builds and deployments to Azure Container Apps pre-configured.
Getting Started
Step 1: Set Up Your Development Environment
- Using Dev Container (Recommended)
- Manual Setup
- In VS Code, press
Ctrl+Shift+P→ “Reopen in Container”. - The container auto-runs
uv syncto install dependencies.
Step 2: Run the App Locally
- VS Code Debug (Recommended)
- Command Line
- Open the Run and Debug panel in VS Code
- Select “Python: Streamlit” configuration
- Press F5 to launch
Understanding the App
Minimal Example
A minimal example usage of the streamlit framework is shown below:@st.cache_data: Cache expensive operations like data fetchesst.cache_data.clear(): Invalidate cached results when users need a fresh read from Orbitra Lakeget_lake_client(): Access Orbitra Lake without manual authentication- Sidebar: Navigation and controls
Extended Streamlit Patterns
When you are ready to add interactivity beyond the minimal app, you can use the following patterns:st.button("Refresh"): Trigger manual reloads for user-driven interactionsst.cache_data.clear(): Clear memorized Streamlit data before rerunning so the UI fetches the latest valuesst.selectbox("Namespace", namespaces): Let users choose a value from loaded datast.text_input("Search"): Capture user text filters before querying or renderingst.metric("Table count", len(filtered_tables)): Highlight key KPIs at a glancest.dataframe(data): Render tabular results with built-in sorting and scrollingst.spinner("Loading data..."): Show progress feedback during slower operationsconcurrent.futures.ThreadPoolExecutor: Execute independent data reads in parallel for better responsiveness
Development Workflow
Common Tasks
- Edit
main.pyor create new modules - Use Orbitra Lake for data access (see Lake Tutorial)
- Run locally: Use VS Code “Python: Streamlit” debug config or
streamlit run main.py - Clear cache: Use the sidebar button or call
st.cache_data.clear() - Format/lint: Ruff is pre-configured in the dev container. Run
uvx ruff formatto fix formatting issues
Deployment
CI/CD Pipeline
The preconfigured pipeline (.pipelines/pipeline.yaml) automatically:
- Builds a Docker image from
.pipelines/Dockerfile - Pushes the image to your Azure Container Registry (ACR)
- Deploys to Azure Container Apps with the new image tag
- Commit and push to the main branch
- The pipeline triggers automatically
- Monitor progress in Azure DevOps
- View logs and status in Azure Portal
Configuration uses Azure DevOps service connections and variable groups managed by your platform team. Never hardcode secrets or resource names in your repository.
Next Steps
- Build your app: Add pages and components to
main.pyor organize into modules - Connect to data: Use Orbitra Lake for data access
- Deploy: Commit and push to your default branch to trigger the pipeline