← Domino Data LabCONTENT HISTORY

Update to Domino Data Lab

Snapshot Oct 24, 2026 · 13:54 UTC · version 2026.603.4

Collection source: downloaded plugin package.

WHAT CHANGED

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 JSON
Full 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