The website of Four Games — an indie studio making games in Godot, sharing free tutorials and open-sourcing our tools. Vue 3 + Vite + Tailwind CSS v4, prerendered to static HTML and hosted on GitHub Pages.
Requires Node 22.12+ (see .nvmrc).
npm install
npm run dev # dev server on http://localhost:5173
npm run data # fetch fresh Steam / YouTube / GitHub / Discord data
npm run build # build + prerender every page into dist/
npm run preview # serve dist/ like GitHub Pages does, on http://localhost:4173dev and build work offline and without API keys — sections just show their empty states until you run npm run data.
Most edits are data, not components: everything in src/data/ (games, membership, nav, footer, links), plus page titles and meta descriptions in src/router/routes.js. Steam, YouTube, GitHub and Discord data is fetched at build time into src/data/generated/.
The site ships in English, 日本語, 한국어, 中文(简体) and 中文(繁體), with godotengine.org's URL scheme: English at /, the others under /ja/, /ko/, /zh-cn/ and /zh-tw/. Every page is prerendered once per language, with hreflang alternates and a multilingual sitemap.
- Text lives in
src/i18n/messages/<lang>.js— every visible string, page titles and meta descriptions included. Add a key toen.jsfirst, then to the other four;npm run buildwarns about any key a language is missing (it falls back to English). The translations are written by hand, not machine-translated, and follow godotengine.org's own terms in each language. - Games: Steam's store translations (blurb, genres, release date) are fetched per language at build time;
taglineinsrc/data/games.jscovers languages the Steam page isn't translated into. - Auto-detect: an English page sends a first-time visitor whose browser prefers one of the other languages there (
src/i18n/detect.js). Picking a language in the navbar menu is remembered and always wins, English included. - Adding a language: add it to
src/i18n/locales.js, addsrc/i18n/messages/<code>.js, its Steam name inSTEAM_LANGUAGES(scripts/fetch-data.mjs) and, for a new script, a font stack insrc/style.css.
.github/workflows/static.yml deploys to GitHub Pages on every push to main, on demand, and once a day.
MIT — see LICENSE.md. Montserrat is licensed under the SIL Open Font License (public/fonts/LICENSE-Montserrat.txt). The clover icon is "Clover" by Lorc, CC BY 3.0. Interface icons follow Lucide; platform icons are from godotengine.org.