A minimal Flask-based todo list with a focused UI and a small JSON API. Tasks persist to app/data/todos.json while the server is running so you can add, complete, and remove items without extra tooling.
- Install: run
install.jsto create theenvvirtual environment and install dependencies withuv. - Start: run
start.jsto launch the server on the next open port (bound to127.0.0.1). The captured URL is exposed in the sidebar as “Open Todo.” - Update: run
update.jsto pull the latest repo changes (if any) and refresh Python packages. - Reset: run
reset.jsto remove the virtual environment and any saved todos.
cd app
uv pip install -r requirements.txt
PORT=5000 python app.pyBase URL defaults to http://127.0.0.1:<port> (the port Pinokio assigns is shown in the UI).
GET /api/todos→{ "todos": [{ id, title, done }] }POST /api/todoswith JSON{ "title": "Buy milk" }→ returns the created todoPATCH /api/todos/<id>with JSON{ "title": "New text", "done": true }→ returns the updated todoDELETE /api/todos/<id>→ returns204 No Contenton success
const base = "http://127.0.0.1:5000";
fetch(`${base}/api/todos`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ title: "Ship launcher" })
}).then((res) => res.json()).then(console.log);import requests
base = "http://127.0.0.1:5000"
resp = requests.patch(f"{base}/api/todos/<todo_id>", json={"done": True})
print(resp.json())curl -X DELETE http://127.0.0.1:5000/api/todos/<todo_id>