BUILD GUIDE
Ask any AI. Get an app that works first time.
Say what you want, copy the prompt, and paste it into Claude, ChatGPT or Gemini. It tells your AI exactly how to build for Sanduq.
2. Copy the prompt
starter-prompt.md
Build me a phone app: [describe what you want, for example "a habit tracker for 5 daily habits with a weekly streak view"]. It will run in Sanduq, an app that turns a single HTML file into an app on my phone. Follow the Sanduq app guide at https://getsanduq.com/build.md if you can read it. If not, follow these rules: - Deliver one complete .html file with all HTML, CSS and JavaScript inside it. No build step and no separate files. - Put a short, clear app name in the <title> tag. - Save my data with localStorage, wrapped in try/catch. Do not use a server, accounts or a database. - Design for a phone held upright. Use viewport-fit=cover and pad for env(safe-area-inset-*). A bottom tab bar is fine. - It must work offline. Fonts and libraries from Google Fonts, jsDelivr, unpkg or cdnjs are fine, because Sanduq saves them on import. Do not call any other website. - Support light and dark mode with prefers-color-scheme. - Keep the file under 5 MB. Use inline SVG for icons, not large images. Give me the file so I can save it and open it in Sanduq.
3. Paste it into your AIClaude, ChatGPT, Gemini or any other. It works whether or not the model can browse.
4. Share the file to SanduqSave the .html file it gives you, then share it to Sanduq. That's your app.
WHAT THE GUIDE TELLS YOUR AI
The rules, in full.
Each one matches something Sanduq does today. When Sanduq changes, the guide changes in the same release.
Deliver
One self-contained .html file. All HTML, CSS and JavaScript inline. No build step, no imports of local files, no service worker.
Under 5 MB. Prefer inline SVG to images. Embed small images as data: URLs.
A short app name in <title>. Sanduq uses it as the app's name.
Layout
Phone first, portrait, roughly 360 to 430 px wide.
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">.
Pad for the notch and home bar with env(safe-area-inset-top/right/bottom/left). Sanduq passes the real values in.
Fixed headers and bottom tab bars are fine. Sanduq's own control sits in the status bar strip and never covers your content.
Support light and dark with prefers-color-scheme.
Saving data
Use localStorage or sessionStorage. Sanduq keeps each app's data separate and persistent, and survives the user replacing the file with a new version.
Wrap storage calls in try/catch and keep the app usable if storage is unavailable.
Store data under one or a few keys with a version field, so a newer version of the app can migrate old data.
Do not depend on a server, login, cookies or a cloud database.
Network
The app must work offline.
Stylesheets, fonts and scripts from fonts.googleapis.com, fonts.gstatic.com, cdn.jsdelivr.net, unpkg.com and cdnjs.cloudflare.com are allowed. Sanduq downloads them once on import.
Any other request is blocked until the user approves that website. If the app needs live data, say so in the UI and handle a blocked or failed request gracefully.
Not available
No popups, new windows or navigation away from the app. Keep everything on one page and use in-page views.
No camera, microphone, location or notifications.
No iframes inside the app.
No platform-specific objects such as window.claude. Check for them and fall back to localStorage.
Good to have
A clear empty state on first run.
An export button that copies or downloads the user's data as JSON, and an import that reads it back.
Large tap targets, at least 44 px.
For AI models
The same guide as plain markdown, published at getsanduq.com/build.md.
build.md