EN /HU | Belépés

Nyilvános oldal

A Teletype Games nyilvános platformja: egyetlen monorepó (services/teletypegames) a katalógus-backenddel (Catalog API) és a retró stílusú frontenddel, Docker Compose-zal futtatva.

A monorepó felépítése

TXT
apps/
  frontend/   # Vue 3 + Vite + TypeScript + Tailwind
  api/        # Rails 8 API + ActiveAdmin

A docker compose up -d elindítja a fejlesztői környezetet. Mindkét alkalmazás egy domain alatt van:

Útvonal Mit szolgál ki
/ frontend
/api Catalog API
/admin ActiveAdmin
/api/swagger API-dokumentáció

Lintelés: RuboCop (rubocop-rails-omakase) a backendhez, ESLint 9 (flat config, Vue + TypeScript) a frontendhez.

Catalog API

Rails 8 + MySQL. ActiveAdmin felület (blaze téma, Devise-hitelesítés), Blueprinter-szerializálók, apipie-rails dokumentáció böngészhető Swagger UI-jal. Ez az egyetlen igazságforrás a szoftver-metaadatokhoz, kiadásokhoz, tagokhoz, eseményekhez és letöltési naplókhoz, és ez szolgálja ki a képeket és binárisokat.

Domainmodell

A Software (name, title, author, desc, story, license, platform, status, highlighted; soft delete) sok Release és ExternalLink elemhez tartozik, valamint képekhez a SoftwareImage táblán keresztül (alapértelmezett jelző + sorrend). Egy Release tárolja a verziót, valamint a kazetta / forrás / HTML-mappa / dokumentációs mappa útvonalait. Minden letöltés egy Download sor (IP, user agent, referer, kiadás), ami downloadCount / totalDownloads néven jelenik meg az API-válaszokban.

Végpontok

Végpont Mire való
GET /api/software Katalóguslista: szoftver + rendezett kiadások + latestRelease (a dev- kihagyásával) + webPlayableRelease + totalDownloads
GET /api/software/highlighted Kiemelt szoftverek
GET /api/events Közösségi események
GET /api/members Csapattagok
GET /api/stores Áruház-nyilvántartás (lásd lentebb)
GET /api/image/:id Képkiszolgálás
GET /api/wiki/pages?tag=blog\|howto[&limit][&body=1][&lang=en\|hu] Wiki-proxy: a Grav custom/pages.json végpontját kéri le a WIKI_GRAV_URL alapján, így a frontend soha nem beszél közvetlenül a wikivel
GET /api/rss/blog RSS a blog címkéjű wikioldalakról
GET /api/rss/releases RSS a legfrissebb kiadásokról
GET /api/download?path=… Naplózott letöltés (rögzíti az IP / UA / referer adatokat, majd kiszolgál)
GET /api/swagger apipie-dokumentáció
GET /file/*path Közvetlen fájlletöltés; az API-válaszok kiadásútvonalai ide mutatnak
POST /build/upload Artifact-feltöltés, kérésenként egy fájl; alkalmazástoken upload jogosultsággal
POST /build/publish Kiadás publikálása; alkalmazástoken update jogosultsággal, a CI hívja feltöltés után

A tokeneket a WarpEngine cikk írja le.

Az áruház-nyilvántartás (GET /api/stores) megmondja, mely katalógusokból telepíthet egy kliens, és hol van az egyes áruházak konfigurációja. Nyilvános, mert az asztali kliens első indításkor olvassa, és nincs kinek belépnie. Egy sor három mező (name, catalog_url, store_repository_url), az ActiveAdmin ▸ 🛒 Stores alatt szerkeszthető. A hosztalkalmazásban él, nem a WarpEngine-ben: a motor egyetlen katalógust szolgál ki, és nem tudja, ki szállít hozzá áruházakat.

Publikálási pipeline

A /build/publish platform szerint továbbít egy Platforms szolgáltatásnak (tic80, love, ebitengine, c64, godot, bevy, phaser). Mindegyik felveszi a feltöltött artifactokat (C64 esetén <név>-<verzió>.prg + <név>-<verzió>.metadata.json), a metaadatból upserteli a Software rekordot, a site mezőből hozzáad egy Source Code külső linket, és létrehozza a Release rekordot. A Gitea + Woodpecker oldal az Üzembe helyezés cikkben van.

Frontend

Vue 3 SPA, Vitével építve, TypeScriptben: vue-router (oldalanként egy modul), Pinia-store-ok domainenként (software, events, members, git, blog, howtos, youtube, ui), vue-i18n, valamint Tailwind CSS + TuiCSS a retró terminál-kinézethez. A Traefik ugyanazon az alapdomainen proxyzza, mint az API-t.

Oldalak: home, catalog (lista + részletek), blog, code, howtos, team, contact. A katalógus részletoldalán képnagyító, kiadáslista, letöltésszámlálók és böngészőben játszható kiadások vannak.

Forrásonként egy kliensmodul a src/api/ alatt:

Modul Forrás
software.api.ts, event.api.ts, member.api.ts Catalog API
wiki.api.ts A Catalog API wiki-proxyja (blog / howto címkék), a felület nyelvét lang paraméterként átadva. A VITE_WIKI_BASE csak a Gravra mutató külső linkek felépítéséhez kell
git.api.ts Gitea REST API v1 (WEBAPP_GITEA_TOKEN token) a Code oldalhoz
youtube.api.ts YouTube Data API: a csatorna legutóbbi videója és megtekintésszáma