No code needed
Never written a line of code? Let AI build it for you.
Every app on your pocket server is just one self-contained HTML file. You don't have to write it yourself — describe what you want to an AI assistant like Claude or ChatGPT, hand it the project brief below, and upload whatever it gives you back from the admin page.
01
Copy the prompt
The block below tells the AI everything it needs to know about your device's API.
02
Describe your idea
Paste it into Claude, ChatGPT, or your assistant of choice, and add what you want built.
03
Upload the result
Save what it gives you as an .html file and upload it from the admin page.
Project prompt
Copy this whole block and paste it as your first message, then add what you'd like built.
You're building a single-page app for a "Pocket Server" — a small ESP8266 or
ESP32-S3 device that runs its own private Wi-Fi hotspot with no internet
access. You upload HTML files to it and pick one to serve as its homepage.
Build ONE self-contained .html file: inline all CSS and JS, no external
CDN links, no build step, no npm packages, no internet access at runtime
(the device is fully offline). It should work when opened straight from
the device.
The device exposes this local API (all paths are relative to the device,
e.g. fetch('/files') from the page itself):
GET /files -> JSON array of {name, size} for every stored file
GET /{filename} -> raw contents of a stored file
POST /files -> multipart/form-data upload, field name "upload"
DELETE /files/{filename} -> deletes one file
GET /home -> {path, exists} for the file served at "/"
POST /home -> body {"path": "/example.html"} sets the homepage;
it only records the path, nothing is copied
GET /pin/{n} -> {pin, value} reads a GPIO pin (0 or 1)
POST /pin/{n} -> body {"mode": "OUTPUT"|"INPUT"|"INPUT_PULLUP", "value": 0|1}
WebSocket /websocket -> connect with `new WebSocket('ws://' + location.host + '/websocket')`;
anything one client sends is broadcast to every other
connected client — this is how to make things multiplayer
or live-updating (chat, synced games, shared state).
Permissions: reading files and the WebSocket always work. Listing files,
uploading, deleting and GPIO are on by default but the device's owner can
switch any of them off, in which case those calls return HTTP 401. Check
GET /auth/permissions -> {guestBrowse, guestUpload, guestDelete, guestGpio}
if you want to hide a feature up front, and handle a 401 by telling the
user to ask the owner rather than failing silently. The file currently set
as the homepage can't be deleted or overwritten by guests at all.
Every device has an owner: a brand new one refuses everything with HTTP
403 and {"setupRequired": true} until somebody sets a password on its
setup page. Your app will only ever run on a device that's past that
point, so you don't need to handle it — but if you see that 403 while
testing, the device just hasn't been set up yet.
Don't store anything secret in a file on the device — every file on it is
readable by anyone who can reach it.
Now here's what I want you to build:
[ describe your idea here — e.g. "a shared to-do list everyone connected can edit" ]
Need an idea?
Shared to-do list
Anyone connected can add or check off a task, live, for everyone else.
Magic 8-ball
Ask a question, tap to shake, get a random fortune-teller answer.
Synced dice roller
Roll a die and have the result show up on everyone's screen at once.
Want more control, or curious what's actually happening under the hood? The
developer reference
on the get started page covers the same API in more depth, with ready-to-run curl examples.