This article describes Teletype Games ecosystem, consisting of a catalog management backend and a high-performance frontend application, all orchestrated via Docker.
The Catalog is the core backend service responsible for managing software metadata, releases, and automated updates for various gaming platforms and engines.
- Functionality: Manages a database of software entries, handles file downloads, and provides specific update services for platforms like TIC-80, LÖVE, and Ebitengine. It serves as the single source of truth for the software library.
- Tech Stack: Built with Go, utilizing a clean architecture with domain-driven design principles. It uses MySQL for persistent storage and integrates with a file system for binary distribution.
- External Communication:
- Exposes a REST API for the frontend and external clients.
- Provides dedicated endpoints for file serving and software update checks.
- Integrates with Gitea and Woodpecker CI for automated software ingestion and deployment pipelines.
The Frontend is the primary user-facing interface for the Teletype Games platform, designed for speed and a seamless browsing experience.
- Functionality: Displays the software catalog, blog posts, and informational pages (How-tos, Contact). It dynamically pulls content from the Catalog API and potentially other external documentation sources.
- Tech Stack: Built with the Astro web framework, styled with Tailwind CSS, and written in TypeScript. It leverages Astro's static site generation and island architecture for optimal performance.
- External Communication:
- Communicates with the Catalog API to fetch real-time software data.
- Blog: Fetches latest updates and articles using GraphQL filtered by the
blog tag to keep the community informed.
- Code: Synchronizes with Gitea to display repository activity and allows browsing specific software versions through tag-based fetching.
- Howtos: Pulls technical guides and community documentation from Wiki.js using GraphQL filtered by the
howto tag to provide up-to-date tutorials.
- Routed through Traefik as a reverse proxy, sharing the same base domain as the backend services.