Skip to content
Developers · Quickstart

Live on your site in two minutes

Ocheso runs the tournament: entries, pairings, clocks, results and fair play. You paste one snippet where it should appear. Most organisers never need more than this page; a developer helps only to connect your own login, your servers or your app.

Three steps

  1. Make a tournament

    Open Build yours, pick a template (weekly blitz, rapid Swiss, knockout cup or checkers arena), add your logo and colour, and press Go live. Your email comes last: the 6-digit code we send becomes your Studio sign-in. Autopilot is on, so the event starts, pairs and finishes by itself.

  2. Paste the snippet

    Studio's Install page prints it with your tournament filled in. Put the divwhere the widget should appear and the script once per page, anywhere. The link inside is what shows if the widget can't load.

    HTML
    <div data-ocheso-tournament="weekly-blitz" data-view="tournament" data-theme="auto" data-lang="auto">
      <a href="https://www.ocheso.com/o/yoursite/weekly-blitz">Weekly Blitz</a>
    </div>
    <script async src="https://www.ocheso.com/embed/v1.js"></script>
  3. Open the page

    The widget loads as it scrolls near, sizes itself to its content and follows the visitor's light or dark mode. In Studio the install status turns green: Seen on yoursite.com/tournaments · just now.

No code at all

Every tournament has a branded page with your logo, in English and French. Share it on WhatsApp, in a newsletter, or make it your menu's Tournaments link:

Link
https://www.ocheso.com/o/yoursite/weekly-blitz

Other ways to install

The same widget, however your site is built. WordPress takes the snippet in a Custom HTML block. Wix and Squarespace are easiest with the iframe; it works on its own and the loader, when present, makes it size itself. More in Embedding.

<div data-ocheso-tournament="weekly-blitz" data-view="tournament" data-theme="auto" data-lang="auto">
  <a href="https://www.ocheso.com/o/yoursite/weekly-blitz">Weekly Blitz</a>
</div>
<script async src="https://www.ocheso.com/embed/v1.js"></script>

Pin a version

/embed/v1.js is always the latest 1.x, cached for five minutes, so fixes reach your page without you doing anything. The current release is v1.0.0 (6.9 KB gzipped). If your security policy wants a file that never changes, pin it with its Subresource Integrity hash:

HTML · pinned v1.0.0
<div data-ocheso-tournament="weekly-blitz" data-view="tournament" data-theme="auto" data-lang="auto">
  <a href="https://www.ocheso.com/o/yoursite/weekly-blitz">Weekly Blitz</a>
</div>
<script async src="https://www.ocheso.com/embed/v1.0.0.js" integrity="sha384-ZhvJ8YHHboaC4O1uUu30RtRbNiyzHwoPCrqZjkDm6axvdBYvbz/kYLox9dD8tVMQ" crossorigin="anonymous"></script>

A pinned file is never changed or removed, and you get fixes when you move the pin. The current version, file and hash are always at /embed/manifest.json, and the TypeScript types at /embed/v1.d.ts.

Keep it to your domains

By default any site can show your widgets. In Studio, Developers → Allowed domains limits them to yours. Add each address people actually use: https://yoursite.com and https://www.yoursite.com are different sites to a browser, and https://*.yoursite.com covers subdomains like staging, not the bare domain.

Testing on your laptop?

Add http://localhost:3000 (with your port) while you build, and remove it when you're done. What a refused frame looks like.

Where next