Have more questions? Join our Discord

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_art under a key such as Cover: a capital letter first, then letters and digits.
  • The game's cover and logo: upload them with upload_marketing_image, slot cover or logo. 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 with upload_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 marketing Anchor cannot reach a rules page.
  • More pages are /src/marketing/<slug>.bwss, reached by Anchor links. A slug that starts with the word rules is 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.