← Domino Data LabCONTENT HISTORY
WHAT CHANGED
Update to Domino Data Lab
Snapshot Oct 24, 2026 · 13:54 UTC · version 2026.603.4
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Domino Data Lab and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Scaffold a new Domino-ready web application (Vite + React, Streamlit, Dash, Flask, or Gradio) with proxy-compatible settings, port 8888 binding, and an app.sh entry point. Use when the user wants to start, initialize, or scaffold a new app to publish on Domino, or asks for a starter app.sh for a web framework.",
"included_files": [
{
"relative_path": "assets/dash/app.py.template",
"size_in_bytes": 1975
},
{
"relative_path": "assets/dash/app.sh",
"size_in_bytes": 508
},
{
"relative_path": "assets/streamlit/app.sh",
"size_in_bytes": 829
},
{
"relative_path": "assets/vite-react/.env.example",
"size_in_bytes": 455
},
{
"relative_path": "assets/vite-react/app.sh",
"size_in_bytes": 830
},
{
"relative_path": "assets/vite-react/vite.config.js",
"size_in_bytes": 826
}
],
"name": "domino-app-init",
"skill_md_contents": "---\nname: domino-app-init\ndescription: Scaffold a new Domino-ready web application (Vite + React, Streamlit, Dash, Flask, or Gradio) with proxy-compatible settings, port 8888 binding, and an app.sh entry point. Use when the user wants to start, initialize, or scaffold a new app to publish on Domino, or asks for a starter app.sh for a web framework.\n---\n\n# Initialize a Domino App\n\nCreate a web application that works behind Domino's reverse proxy on the first publish.\n\n## Inputs\n\nCollect these before writing files. Skip any the user has already given.\n\n1. **Framework**: `vite-react` (default), `streamlit`, `dash`, `flask`, or `gradio`.\n2. **Project name**: name for the app folder and `package.json` (React only).\n3. **Model API integration**: whether the app calls a Domino model endpoint, and if so its URL.\n\nIf the target directory already contains an app, stop and ask before overwriting anything.\n\n## Steps\n\n1. Copy the matching template from this skill's `assets/` folder into the project:\n\n | Framework | Files to copy |\n |---|---|\n | `vite-react` | `assets/vite-react/vite.config.js`, `assets/vite-react/app.sh`, `assets/vite-react/.env.example` |\n | `streamlit` | `assets/streamlit/app.sh` |\n | `dash` | `assets/dash/app.sh`, and `assets/dash/app.py.template` saved as `app.py` |\n | `flask`, `gradio` | No template; write the files from the snippets below |\n\n2. Make `app.sh` executable (`chmod +x app.sh`).\n3. Keep these invariants in every generated file:\n - Bind to `0.0.0.0`, never `localhost` or `127.0.0.1`.\n - Listen on port `8888` unless the user asks for another port.\n - For Vite, set `base: './'` so assets resolve under the proxy prefix.\n4. If the user wants Model API integration, add the endpoint URL and token as environment\n variables (see `.env.example`) and never hardcode credentials.\n5. Finish with the post-initialization checklist below.\n\n## Reference snippets\n\n### React / Vite: `vite.config.js`\n\n```javascript\nimport { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\n\nexport default defineConfig({\n plugins: [react()],\n base: './',\n server: { host: '0.0.0.0', port: 8888, strictPort: true },\n preview: { host: '0.0.0.0', port: 8888, strictPort: true },\n build: { outDir: 'dist', assetsDir: 'assets' }\n})\n```\n\n### React / Vite: `app.sh`\n\n```bash\n#!/bin/bash\nset -e\ncd /mnt/code\nnpm ci\nnpm run build\nnpx serve -s dist -l 8888 --no-clipboard\n```\n\n### Streamlit: `app.sh`\n\n```bash\n#!/bin/bash\nset -e\nstreamlit run app.py \\\n --server.port 8888 \\\n --server.address 0.0.0.0 \\\n --server.headless true\n```\n\n### Dash: `app.py`\n\n```python\nimport os\nfrom dash import Dash, html\n\napp = Dash(__name__)\napp.layout = html.Div([html.H1(\"Domino Dash App\")])\n\nif __name__ == '__main__':\n app.run_server(host='0.0.0.0', port=8888, debug=False)\n```\n\n### Flask: `app.py` and `app.sh`\n\n```python\nimport os\nfrom flask import Flask\n\napp = Flask(__name__)\n\n@app.route('/')\ndef index():\n return \"Domino Flask App\"\n\nif __name__ == '__main__':\n app.run(host='0.0.0.0', port=8888, debug=False)\n```\n\n```bash\n#!/bin/bash\nset -e\npython app.py\n```\n\n### Gradio: `app.py` (use the Flask `app.sh` above)\n\n```python\nimport gradio as gr\n\ndemo = gr.Interface(fn=lambda text: text, inputs=\"text\", outputs=\"text\")\n\nif __name__ == '__main__':\n demo.launch(server_name='0.0.0.0', server_port=8888)\n```\n\n## Post-initialization checklist\n\nTell the user to:\n\n1. Configure environment variables in the Domino project settings.\n2. Set `app.sh` as the app entry point when publishing the app.\n3. Test locally with `./app.sh` before deploying.\n4. Confirm the app listens on port 8888.\n\nFor deployment details, CI/CD, and proxy troubleshooting, use the `domino-apps` skill. If the app\nshows 404s or blank pages after publishing, use the `domino-debug-proxy` skill.\n"
}SHA-256 of public snapshot: afdc312d38cd02f186c89cb3cd635e11e147377d4717e81abb35f564a0e4a3d0