Every push, newest first
What each host is serving
This page asks each portal for its own version.json. It can only do that where the host allows it — anything it could not read says so, rather than pretending to be red.
Where each portal lives
Each project has its own two addresses, because the next one will not share this one's prefix. A {key} in an address is replaced by the portal's key — the folder it is deployed from. What you type is saved on this device straight away; press Copy the JSON to make it permanent for everyone.
Adding the next project
A project is a heading with its own addresses
One entry in projects. Its portals point at its patterns, never the previous project's — which is exactly the mistake a page like this must not make.
{
"key": "shop",
"name": "Corner Shop",
"blurb": "A till and a stock list.",
"hosts": {
"cloudflare":
"https://shop-{key}.pages.dev",
"netlify":
"https://shop-{key}.netlify.app"
}
}
Adding a portal to one
One entry, nothing else
A new portal is an entry in portals — no code changes here. Name the project it belongs to, give it a key (the folder it is deployed from), a name and a line about it. It appears here the moment the file is deployed.
{
"project": "shop",
"key": "library",
"name": "Library",
"sub": "Books",
"audience": "Staff",
"blurb": "What is on the shelves.",
"icon": "books",
"accent": "#0f6b4f",
"status": "planned"
}
status is live or planned. A planned portal shows with no link, so everyone can see what is coming.