The fun-to-play family game is now modernized. https://alias.party
  • TypeScript 47.7%
  • CSS 21.6%
  • Go 17.7%
  • HTML 7.8%
  • JavaScript 4.3%
  • Other 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-13 00:59:36 -06:00
.railway fix railway repo name 2026-10-03 02:00:45 -06:00
convex update dependencies 2026-10-03 02:25:01 -06:00
public add seo metadata, og image and app icons 2026-10-03 02:00:11 -06:00
scripts/og add seo metadata, og image and app icons 2026-10-03 02:00:11 -06:00
server fix auth proxy forwarding cloudflare headers to convex 2026-10-03 02:25:01 -06:00
src update dependencies 2026-10-03 02:25:01 -06:00
.cursorignore setup convex 2026-03-10 13:51:31 -06:00
.dockerignore add go server and dockerfile 2026-10-03 02:00:10 -06:00
.gitignore migrate from next.js to vite+ 2026-10-03 02:00:10 -06:00
bun.lock update dependencies 2026-10-03 02:25:01 -06:00
Dockerfile fix: support build secrets for frontend variables 2026-10-13 00:59:36 -06:00
index.html migrate from next.js to vite+ 2026-10-03 02:00:10 -06:00
package.json update dependencies 2026-10-03 02:25:01 -06:00
README.md update readme 2026-10-03 02:00:11 -06:00
tsconfig.app.json migrate from next.js to vite+ 2026-10-03 02:00:10 -06:00
tsconfig.json migrate from next.js to vite+ 2026-10-03 02:00:10 -06:00
tsconfig.node.json migrate from next.js to vite+ 2026-10-03 02:00:10 -06:00
vite.config.ts migrate from next.js to vite+ 2026-10-03 02:00:10 -06:00

Alias

A party game about fake names and wrong guesses. Live at alias.party.

Stack

  • Frontend: React SPA built with Vite+ (src/)
  • Backend: Convex for game state, Better Auth (Google) running inside Convex (convex/)
  • Server: a small Go binary (server/) that embeds the built SPA and reverse-proxies /api/auth/* to the Convex site URL, so auth cookies stay first-party

Development

Requires Bun, Node 22+, and Go 1.25+.

bun install
bun run dev   # Vite on :3000 + convex dev

.env.local:

CONVEX_DEPLOYMENT=...
VITE_CONVEX_URL=https://<deployment>.convex.cloud
CONVEX_SITE_URL=https://<deployment>.convex.site   # used by the Vite dev proxy and the Go server
VITE_VISITORS_TOKEN=...

In dev, Vite proxies /api/auth to CONVEX_SITE_URL, same as the Go server does in production.

Other scripts: bun run check (format + lint + type-check), bun run format, bun run build.

Production

bun run build                 # builds the SPA into server/dist
cd server && go build -o alias .
CONVEX_SITE_URL=https://<deployment>.convex.site ./alias

Or with Docker:

docker build \
  --build-arg VITE_CONVEX_URL=https://<deployment>.convex.cloud \
  --build-arg VITE_VISITORS_TOKEN=... \
  -t alias .
docker run -p 8080:8080 -e CONVEX_SITE_URL=https://<deployment>.convex.site alias

Server env: CONVEX_SITE_URL (required), SITE_URL (public origin used in game-link previews, default https://alias.party), PORT (default 8080), LOG_LEVEL (default info).

SEO

  • Page copy (tagline, description, how-to-play, FAQ) lives in src/content.ts. The Vite build turns it into the meta description, JSON-LD structured data, and crawler-readable HTML in index.html.
  • The Go server swaps the <!-- seo:start --> block for per-game metadata on /game/{code}, so shared links preview as "Join my Alias game · CODE" (and aren't indexed).
  • public/og.png and the PNG icons are rendered from scripts/og/og.html: npx playwright install chromium && node scripts/og/render.mjs.

The Convex deployment needs SITE_URL set to the public origin (e.g. https://alias.party), plus GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET.