Vlož akce na svůj web

Co dostaneš

Akce si můžeš ukázat na vlastním webu, ve svém vzhledu. Tricho.app k tomu dává veřejnou adresu, ze které si web načte vypsané termíny, a kalendář, který si kdokoli přidá do telefonu.

Funguje v plánu Max, stejně jako zveřejnění akcí.

Adresy najdeš v aplikaci v seznamu akcí pod řádkem Na tvém webu. Začnou fungovat, až zveřejníš první akci.

Co je veřejné

Z adresy si web přečte jen to, co je vidět na stránce akce:

Kdo se přihlásila, kolik zaplatila ani kolik je nezaplacených míst, se z adresy nedozví nikdo. Nejsou tam ani tvoje telefon, e-mail, účet pro platby a celková kapacita.

Volná místa se obnovují nejpozději po minutě. Přesný počet ověří až přihláška.

Přihlášení zůstává u nás

Tlačítko Přihlásit se na tvém webu vede na stránku akce v Tricho.app. Údaje účastnice se tam zašifrují tvým klíčem už v jejím prohlížeči. Ve vloženém rámečku na cizím webu by to bezpečně nešlo, proto ho nenabízíme.

Kalendář k odběru

Termíny si může přidat do telefonu kdokoli, i bez tvého webu. Adresu kalendáře zkopíruješ v aplikaci u řádku Kalendář k odběru.

Kalendář se obnovuje zhruba jednou za hodinu. Zrušené termíny v něm zůstanou ještě měsíc označené jako zrušené.

Bez webu

Nemáš vlastní web? Všechny vypsané akce najdeš na jedné stránce, booking.tricho.app/tvoje-adresa/akce. Adresu a QR kód k vytištění nebo sdílení najdeš ve stejném okně v aplikaci.

Pro toho, kdo ti dělá web

Adresa se seznamem akcí (tu svou najdeš v aplikaci):

GET sync.tricho.app/auth/public/events/<adresa>

Odpověď je JSON ve verzi v: 1, tvar se v ní nemění. Je otevřená pro čtení z jakékoli stránky (Access-Control-Allow-Origin: *), jen metodou GET, bez přihlášení a bez cookies.

{
  "v": 1,
  "organizer": { "name": "…", "eventsUrl": "booking.tricho.app/<adresa>/akce" },
  "feedUrl": "webcal://sync.tricho.app/auth/public/events/<adresa>/feed.ics",
  "events": [
    {
      "eventId": "…", "occId": "…",
      "title": "…", "summary": "…", "description": "…",
      "place": { "name": "…", "address": "…" },
      "days": [{ "startAt": "2027-03-12T09:00:00+01:00", "endAt": "2027-03-12T17:00:00+01:00", "label": "…" }],
      "price": { "amountMinor": 490000, "currency": "CZK", "perSeat": true },
      "seatsLeft": 4,
      "availability": "open",
      "status": "scheduled",
      "url": "booking.tricho.app/<adresa>/akce/<occId>",
      "pageUrl": "https://tvuj-web.cz/workshopy/kurz",
      "jsonld": { "@type": "Event" }
    }
  ]
}

Každá položka má dále startAt, endAt, language, audience, priceTiers, maxSeatsPerRegistration, salesFrom, salesUntil, previousStartAt a termsUrl. Částky jsou v haléřích, časy v ISO 8601 s pražským posunem.

availability je jedna z hodnot: open (volno), few (poslední místa), soldout (plno), waitlist (plno, ale otevřená čekací listina), upcoming (přihlášky ještě nezačaly), closed (online přihlášky skončily), cancelled (zrušeno).

eventId a occId jsou stálé klíče. Termín si podle nich ukotvíš, a najdeš je v aplikaci u každého termínu jako ID pro web.

Když akce nejsou, odpověď je 404 s tělem {"error":"unavailable"}. Znamená „není co ukázat”, ať je důvod jakýkoli. Vykresli prázdný stav, třeba „Teď tu nejsou žádné vypsané akce.”, a nikdy ne chybovou hlášku.

Mezipaměť a omezení: odpověď se drží 60 sekund. Načítej nejvýš jednou za minutu a nech web pracovat s hlavičkami ETag a If-None-Match. Adresa, která dostane příliš mnoho dotazů, odpoví 429.

Minimální příklad, který texty vykreslí přes textContent:

<ul id="akce"></ul>
<script>
  fetch('https://' + 'sync.tricho.app' + '/auth/public/events/tvoje-adresa')
    .then((r) => (r.ok ? r.json() : { events: [] }))
    .then((data) => {
      const list = document.getElementById('akce');
      for (const e of data.events) {
        const li = document.createElement('li');
        li.textContent = e.title + ' · volná místa: ' + e.seatsLeft;
        list.append(li);
      }
      if (data.events.length === 0) list.textContent = 'Teď tu nejsou žádné vypsané akce.';
    })
    .catch(() => {});
</script>

Texty z odpovědi vždy vkládej jako text, ne jako HTML. Pro vyhledávače přidej každé akci blok jsonld:

<script type="application/ld+json">{ …obsah pole jsonld… }</script>

Nejlépe ho vlož na serveru nebo při sestavení stránek, vyhledávače spolehlivěji čtou to, co je ve stránce už při načtení. Když v akci vyplníš Stránku akce na tvém webu, vrací se jako pageUrl a v bloku jsonld jako url. Tlačítko Přihlásit se pak vede na url.

Soukromí návštěvnic tvého webu

Když web data načítá až v prohlížeči návštěvnice, server Tricho.app uvidí její IP adresu, jako u každé načtené stránky. Zůstane jen v krátkém provozním záznamu.

Pokud tomu chceš předejít, ať web data načítá u sebe na serveru nebo při sestavení stránek. Jinak uveď v zásadách svého webu, že akce načítá z aplikace Tricho.app.

← Všechna témata