WS WONS Sites
Docs

How the pieces fit

Your website stays where it is. One file on your host asks us for your content, and we answer with JSON. That is the whole system.

The file on your host

Download it from your dashboard once. It carries your title, description and share image so a link posted in a chat looks right without JavaScript, then loads everything else from us.

index.html
<div id="wons-site"
     data-api="https://sites.wons.bt/sites/your-domain.bt"
     data-theme="https://sites.wons.bt/themes/aster"
     data-domain="your-domain.bt"></div>
<script src="https://sites.wons.bt/boot.js" defer></script>

On PHP hosting, use the index.php version instead: it fetches the payload on the server and embeds it, so the page arrives complete.

Reference

Four endpoints, all public

GET /sites/<your-domain>

Your whole site as JSON โ€” pages, sections, lists, contact details, colours, and every image resolved to a signed link.

Cached for 60 seconds. An expired subscription returns a maintenance payload instead of content.

GET /themes/<theme>/theme.css

The theme stylesheet. Also theme.html (the shell) and theme.js (the renderer).

Cached for a day. Checked against your plan for the domain that asks.

GET /share/<your-domain>

Your share image at a permanent address, for link previews.

Redirects to a freshly signed image URL on every request.

GET /boot.js

The loader referenced by your index file. Fetches the payload and the theme, then renders.

Reads its configuration from data attributes, so it works under a strict Content-Security-Policy.

Building your own theme

Three files, no build step

01

theme.html

The shell. Mark the regions you want filled with data-region โ€” header, nav, main, footer.

02

theme.css

Read colours and fonts from CSS variables so one stylesheet serves every customer's branding.

03

theme.js

Receives the payload as window.WONS_SITE.payload and writes DOM. Escape everything you print.

Try it against the demo site.

https://sites.wons.bt/sites/demo.wons.bt

Start your site