A 2D top-down third-person shooter MMO with faction-based territorial control, built with modern web technologies.
PlanetByte is a persistent, rogue-like world where three factions vie for territory control in dynamic, action-packed battles. The game resurrects the arcade spirit of mid-2000s multiplayer Flash games while leveraging modern web technologies for rapid, scalable development.
This project is organized as a monorepo with the following structure:
apps/client
: Frontend application (Phaser 3, React, TypeScript) containerized with Dockerapps/server
: Backend application (Node.js, Colyseus.js) containerized with Dockerapps/supabase
: Supabase configuration for self-hosted authentication, database, and storagepackages/common
: Shared code between client and serverpackages/config
: Shared configuration for ESLint, Prettier, and TypeScripttools
: Development tools and scriptsdocs
: Project documentationmemory-bank
: Project memory bank for persistent documentation
- Node.js (v16+)
- PNPM (v8+)
- Git
- Redis (local instance for development)
- PostgreSQL (local instance or Supabase project)
- Clone the repository:
git clone https://github.com/planetbyte/planetbyte.git
cd planetbyte
- Install dependencies:
pnpm install
- Set up environment variables:
cp apps/client/.env.example apps/client/.env.local
cp apps/server/.env.example apps/server/.env.local
- Start the development servers:
pnpm dev
This will start the client, server, and any other necessary services in development mode.
The client is built with Phaser 3 for the game canvas and React for UI elements outside the game. TypeScript is used for type safety and better developer experience.
cd apps/client
pnpm dev
The server is built with Node.js and Colyseus.js for multiplayer game functionality. TypeScript is used for type safety and better developer experience.
cd apps/server
pnpm dev
Supabase is used for authentication, database, and storage. The apps/supabase
directory contains migrations, edge functions, and seed data.
All components are containerized using Docker and deployed to a Hetzner server using Coolify for orchestration.
# Build all Docker images
pnpm docker:build
# Push images to registry (if using)
pnpm docker:push
The project uses Coolify for container orchestration on a Hetzner server. The deployment configuration is in the .coolify
directory.
# Deploy to Coolify
pnpm deploy
Supabase is self-hosted on the Hetzner server as a Docker container. The apps/supabase
directory contains the configuration.
# Deploy Supabase
cd apps/supabase
pnpm deploy
For more detailed documentation, see the docs
directory:
The memory-bank
directory contains the project memory bank, which provides comprehensive documentation and context for the project. This is the primary source of truth for project requirements, architecture, and technical decisions.
This project is licensed under the MIT License - see the LICENSE file for details.