Skip to content

Prerequisites

Install these before you attempt Local Setup.

Required for every developer

ToolVersionWhyInstall
Node.js>= 18 (22 LTS recommended)Every app and packagenodejs.org or nvm install 22
pnpm9.0.0 exactlyWorkspace resolution; the lockfile is pnpm-specificcorepack enable && corepack prepare pnpm@9.0.0 --activate
Docker DesktopcurrentPostgreSQL, Redis, and LiveKit run locally in containersdocker.com
Gitcurrent

Use corepack, not npm i -g pnpm

The repo pins "packageManager": "pnpm@9.0.0" in the root package.json. Corepack reads that field and uses the exact version. A globally installed pnpm 10 will produce lockfile churn that other developers have to clean up.

Required for mobile work

ToolNotes
Xcode (latest)iOS Simulator. macOS only. Install the command line tools: xcode-select --install
Android StudioAndroid emulator. Optional if you are only working on iOS.
PlayPalz development clientThe app uses native modules (LiveKit / WebRTC, Bugsnag, notifications), so Expo Go will not work. You need a development build — see Builds & Releases.
EAS CLIpnpm add -g eas-cli, only needed if you will produce builds.

Required for infrastructure work

ToolNotes
doctlDigitalOcean CLI, authenticated against the PlayPalz account
kubectlCluster access
terraform>= 1.5, for infra/terraform
kubesealEncrypting secrets for infra/k8s/sealed-secrets
helmUsed for the Loki logging stack
jqUsed by the Terraform validation script

On macOS:

bash
brew install doctl kubectl terraform kubeseal helm jq

Access you will need to request

Local development works without any of these — the app runs against local Postgres and Redis with stubbed third-party integrations. You only need them for full-fidelity work or production access.

SystemNeeded for
GitHub repo cryptixcoder/playpalsEverything
DigitalOcean teamKubernetes, database, Spaces, container registry
MuxVideo transcoding, livestream ingest
RevenueCatSubscription and IAP webhooks
Stripe (Connect platform account)Creator payouts
LiveKitVoice rooms (self-hosted on a dedicated droplet)
BugsnagMobile crash reporting
Expo / EASMobile builds and submissions

Credentials do not belong in the repository

dev-notes/info.md currently contains a plaintext account password. Do not follow that pattern. Secrets live in 1Password / the DigitalOcean secret store and reach the cluster as sealed secrets.

Verify your setup

bash
node --version      # v18+ (v22 recommended)
pnpm --version      # 9.0.0
docker --version
docker compose version

Internal documentation — PlayPalz platform