Lila Games

🎮 Lila Games

Deployed Game: https://games.aetoskia.com


🚀 Projects

🔷 1. tic-tac-toe (Backend)

Nakama 3 + Go Plugin • Authoritative Multiplayer Server

  • Device authentication
  • Matchmaking queues
  • Authoritative match handler
  • Win/loss/draw validation
  • Disconnect → forfeit
  • Leaderboards
  • ARM-optimized Docker build
  • Automated CI/CD with Drone
  • Traefik WebSocket routing (/ws)

🔗 Repo: https://git.aetoskia.com/lila-games/tic-tac-toe


🔶 2. tic-tac-toe-ui (Frontend)

React + TypeScript + Vite Production-grade multiplayer game client.

  • Device auth
  • Matchmaking
  • Real-time WebSocket gameplay
  • Authoritative board sync
  • Leaderboards
  • BusyBox-powered production Docker build

🔗 Repo: https://git.aetoskia.com/lila-games/tic-tac-toe-ui


🛠 Infrastructure

Traefik Routing

  • https://games.aetoskia.com – UI
  • https://nakama.aetoskia.com – Nakama (HTTP + WS)
  • Full CORS configuration
  • WebSocket upgrade headers
  • Automatic Let's Encrypt TLS

PostgreSQL Stack

Lila Games uses a production-ready PostgreSQL 16 setup with:

  • pg_stat_statements enabled for performance insights
  • Persistent storage volumes
  • .env-driven secure configuration
  • Optional pgAdmin 4 UI for database administration

This stack powers the authoritative match state, player accounts, and leaderboards.


🤖 CI/CD Pipeline

Powered by Drone CI, our automated pipeline handles:

  • Auto-detecting the latest Git tags
  • Skipping builds if an image already exists
  • Building Nakama + Go plugin (CGO-enabled)
  • Pushing production images to the private registry
  • Stopping old containers and deploying new ones
  • Supporting ARM/x86 builds

Deployment Flowchart

flowchart TD
    DevPush[Developer pushes Git tag] --> Drone[Drone CI Pipeline]
    Drone --> FetchTags[Fetch latest Git tags]
    FetchTags --> CheckImage[Check if Docker image exists]
    CheckImage -->|Image missing| Build[Build Docker Image]
    CheckImage -->|Image exists| Skip[Skip Build]
    Build --> Push[Push Image to Private Registry]
    Skip --> Deploy[Deploy Step]
    Push --> Deploy[Deploy Step]
    Deploy --> StopOld[Stop Old Nakama Container]
    StopOld --> RunNew[Run New Nakama Container]
    RunNew --> Live[Production Server Updated]

Powered by Drone CI:

  • Auto-detect latest Git tags
  • Skip builds if image exists
  • Build Nakama Go plugin (CGO-enabled)
  • Push to private registry
  • Stop old containers + deploy new
  • ARM-compatible builds for Raspberry Pi clusters

🐳 Docker & Deployment

Our entire stack runs via Docker:

  • Backend image (heroiclabs/nakama:arm)
  • Go plugin layer
  • Frontend: Node → Vite → BusyBox
  • Traefik reverse proxy
  • PostgreSQL + pgAdmin

Cloud-ready for:

  • Google Cloud (Compute Engine + Cloud SQL)
  • AWS EC2
  • Bare metal
  • Raspberry Pi homelabs

📫 Contact

Want to collaborate or review the backend architecture?

Website: https://games.aetoskia.com

GitHub: https://git.aetoskia.com/lila-games

Tech Stack: Go, Nakama, PostgreSQL, React, Vite, Docker, Traefik, Drone CI


Updated 2025-12-04 14:35:27 +00:00