Ez a wiki egy Grav CMS oldal, amelynek a tartalma git-repóban él, plusz két kísérőszolgáltatás: egy fetcher, amely git-webhookra szinkronizálja a repót, és egy telnetes BBS felület. A változások megjelennek egy JSON API-n, amelyet az Updater bot lekérdez, hogy bejelentse őket a Discordon.
Minden egyetlen repóban van — services/wiki-pages: tartalom (pages/), Grav-konfiguráció, téma, kísérőszolgáltatások. A Docker Compose három szolgáltatást futtat belőle:
| Szolgáltatás | Mit csinál |
|---|---|
grav |
Grav CMS (PHP 8.1 + Apache). A pages/, config/ és themes/ bind mounttal van becsatolva, így az oldal a munkamásolatot szolgálja ki. |
wiki-fetcher |
Go HTTP-hook (fetcher/). A GET /pull?secret=… commitolja a helyi szerkesztéseket, rebase-zel pullol, majd pushol. |
wiki-bbs |
Telnet felület (bbs/, rubbs alapon), amely a JSON API-n keresztül böngészi a wikit. Lásd: BBS-szerver. |
A Grav mappák szerint útvonalaz: egy oldal a pages/<szekció>/<slug>/default.md, YAML-frontmatterrel. Az oldalsávot kézzel gondozzuk a config/sitenav.yaml-ben. Kétféleképpen lehet szerkeszteni:
default.md-t, commitolj, pushold. Az alábbi webhook-folyamat kiteszi élesbe./admin) — a Grav a becsatolt munkamásolatba ír, a fetcher pedig a következő /pull során visszacommitolja gitbe.A projects/ és team/ alatti oldalakhoz belépés kell. A képek az assets/ könyvtárban vannak, a /wiki-assets/… útvonalon szolgálva ki.
A wiki kétnyelvű: az angol az alapértelmezett, és nincs URL-előtagja, a magyar a /hu alatt él. Az oldal a nyelvét a fájlnevében hordozza — default.en.md vagy default.hu.md —, a nyelvváltó pedig a felső sávban van.
Az angol oldalaknak van magyar fordítása. A csak magyarul létező oldalak (az egyesületi papírmunka, a jegyzőkönyvek, a Neumatronic Universe háttéranyagai) nem kapnak angolt: a config/system.yaml-ben a content_fallback miatt az angol kérés átesik a magyar fájlra, így semmi nem lesz 404-es.
A JSON API ugyanezt a szabályt követi: a /custom/pages.json angol, a /hu/custom/pages.json magyar. Minden válasz visszaadja a kért lang értéket, és minden oldalon ott a locale, amely azt mondja meg, hogy a törzsszöveg valójában milyen nyelven van — a kettő pontosan ott tér el, ahol a visszaesés életbe lépett.
wiki-pages repóba a Giteán, vagy szerkeszt egy oldalt az adminfelületen./pull végpontját. Az előbb commitolja a helyi adminszerkesztéseket, majd git pull --rebase + push./api/updates.json módosítási idő szerint listáz minden oldalt.A végpontok Grav-oldalak (pages/api/), amelyeket a themes/ttgwiki/templates/ alatti twig-sablonok renderelnek:
| Végpont | Mire való |
|---|---|
/api/sitemap.json |
Minden útvonalazható oldal: route, cím, módosítás, címkék, privát jelző (törzsszöveg nélkül). |
/api/page.json?route=<route> |
Egy oldal nyers markdownnal és renderelt HTML-lel. |
/api/updates.json?limit=N |
Módosítási idő szerint rendezett oldalak — ezt figyeli az Updater bot. |
/api/pages.json?tag=<tag> |
Taxonómiacímke szerint szűrt oldalak (a nyilvános oldal Blog és HowTos listái ezt használják). |
Privát oldal csak token=<SUPERVISOR_PASSWORD> mellett adja ki a törzsszövegét. A BBS ugyanezt a tokent használja a supervisor-belépéshez.
https://git.teletypegames.org/services/wiki-pages