Monorepo for clickplanet.lol, a real-time multiplayer game where countries compete to own tiles on a 3D globe.
apps/
├── frontend/ # React + Three.js client — see apps/frontend/README.md
└── backend/ # Go API — see apps/backend/README.md
proto/ # Shared protobuf contract (single source of truth for both apps)
deploy/ # Local full-stack docker-compose (frontend + backend)
Previously three separate repos (clickplanet.lol-frontend, clickplanet.lol-backend, clickplanet.lol-proxy); merged here to stop hand-syncing the protobuf contract between frontend and backend, which had drifted apart before. Full history of both apps is preserved under apps/.
Each app is self-contained and built independently — see its own README for day-to-day commands:
proto/planet/v1/planet.proto is the single source of truth for the API contract. After editing it, regenerate both sides:
cd apps/backend && make proto
cd apps/frontend && npm run protodeploy/docker-compose.yaml runs frontend + backend together using locally built Docker images (clickplanet-back:local, registry.digitalocean.com/clickplanet-frontend/frontend:latest — build them first via each app's dBuild script/target):
cd deploy && docker compose upThe stack includes a postgres: the backend holds the tile map in process and writes what changed to it every second.