From page to product
Four steps.
Write the page. HTML, CSS and JavaScript, with the shared platform script for the screen, the buttons and touch.
Describe it in the manifest. Name, icon, entry point, window, state, file types, place on the launcher.
Add a service if it needs a backend. When it starts, its priority, its memory budget, whether it works in sleep, whether it may take the screen.
Give Caroline tools and agents. She drives the app by voice from day one.
{
"format": 1,
"id": "calendar",
"name": "Calendar",
"frontend": { "entry": "index.html", "window": "shared" },
"state": true, // comes back exactly where it was left
"services": [{
"id": "calendard", "host": "process",
"cmd": ["python3", "{app}/calendard.py", "{port}"],
"start": "system", // at boot, on first open, or by hand
"priority": 70, "memory_mb": 20, // stopped last, kept within budget
"sleep": true // keeps working while the device sleeps
}],
"endpoints": [{ "path": "events", "methods": ["GET", "POST"], "service": "calendard" }],
"caroline": {
"description": "Calendar with events and a task list",
"tools": [{ "name": "show_date", "input": {"date": "string"} }]
}
}
A real Beroun manifest: a page in the shared window, its state, a background service with a budget, an endpoint, and tools for Caroline.