Files
.profile/README.md
2025-12-01 08:43:29 +00:00

136 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🎮 Lila Games
**Deployed Game:** [https://games.aetoskia.com](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](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](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
```mermaid
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](https://games.aetoskia.com)
**GitHub:** [https://git.aetoskia.com/lila-games](https://git.aetoskia.com/lila-games)
**Tech Stack:** Go, Nakama, PostgreSQL, React, Vite, Docker, Traefik, Drone CI
---