The goal of this project is to gain experience working with websockets (socket.io), React components, and Turborepo in a single project.
To do this I merged concepts/logic from two previous projects:
- NestJS based basic chat app (websockets)
- NextJS based single player tic-tac-toe (React)
into a multiplayer tic-tac-toe game (Turborepo)
Screen.Recording.2026-02-16.at.4.06.16.PM.mov
This Turborepo includes the following packages/apps:
api: a NestJS appweb: another Next.js app@repo/ui: a stub React component library shared bywebapplication@repo/eslint-config:eslintconfigurations (includeseslint-config-nextandeslint-config-prettier)@repo/typescript-config:tsconfig.jsons used throughout the monorepo
Each package/app is 100% TypeScript.
To build all apps and packages, run the following command:
cd local-multiplayer-tic-tac-toe
# With [global `turbo`](https://turborepo.dev/docs/getting-started/installation#global-installation) installed (recommended)
turbo build
# Without [global `turbo`](https://turborepo.dev/docs/getting-started/installation#global-installation), use your package manager
npx turbo build
yarn dlx turbo build
pnpm exec turbo build
To develop all apps and packages, run the following command:
cd local-multiplayer-tic-tac-toe
# With [global `turbo`](https://turborepo.dev/docs/getting-started/installation#global-installation) installed (recommended)
turbo dev
# Without [global `turbo`](https://turborepo.dev/docs/getting-started/installation#global-installation), use your package manager
npx turbo dev
yarn exec turbo dev
pnpm exec turbo dev