Write the marketing page
The marketing page is the game's public page at /game/<slug>. Anyone can open it, even for a private game: it shows the published commit, else the public playtest commit, else the newest commit. Follow these steps in order.
1. Upload the images
- Images on the page: upload each with
upload_artunder a key such asCover: a capital letter first, then letters and digits. - The game's cover and logo: upload them with
upload_marketing_image, slotcoverorlogo. Boardweaver shows them on game cards, in the lobby and in the sidebar. A page cannot show these slots: to show the cover on the page too, also upload it withupload_art.
Images are JPEG or PNG, at most 5 MB.
Done when the cover and logo slots are filled and every image the page shows has an art key.
2. Write the page
Write /src/marketing/index.bwss. The page is a JSON document with the same nodes and styles as a rules page (Write the rules pages), plus three marketing nodes:
| Node | Props | Renders as |
|---|---|---|
PlayButton |
id?, style?, children? |
a link that starts a match of the version the page shows |
RulesButton |
id?, style?, children? |
a link that opens the rules pages in a drawer |
ThemeToggle |
id?, style?, children? |
a button that switches the page between light and dark |
{
"type": "Box",
"style": { "display": "flex", "flexDirection": "column", "alignItems": "center", "gap": 24 },
"children": [
{ "type": "Image", "src": "Cover", "alt": "Box art", "style": { "width": "100%", "borderRadius": 12 } },
{ "type": "Box", "style": { "fontSize": 40, "fontWeight": "800" }, "children": ["Tic Tac Toe"] },
{ "type": "Box", "children": ["Three in a row wins. Two minutes a match."] },
{
"type": "Box",
"style": { "display": "flex", "gap": 12 },
"children": [
{ "type": "PlayButton", "style": { "paddingX": 20, "paddingY": 10, "borderRadius": 8 }, "children": ["Play now"] },
{ "type": "RulesButton", "style": { "paddingX": 20, "paddingY": 10 }, "children": ["Read the rules"] },
{ "type": "ThemeToggle", "children": ["Light / dark"] }
]
}
]
}
- Write what the game is, who it is for and how long a match takes, before any rule. Link to the rules with
RulesButton: a marketingAnchorcannot reach a rules page. - More pages are
/src/marketing/<slug>.bwss, reached byAnchorlinks. A slug that starts with the wordrulesis never served.
Done when index shows the game's name, the cover, a PlayButton and a RulesButton.
3. Check and commit
Run validate_code, which compiles the page, then commit. A failed page compile at commit answers MARKETING_COMPILE_FAILED with the errors.
Done when validate_code answers no page errors and commit succeeds.