Run your own large-scale IRL hide and seek game
Imagine an epic hide-and-seek game with your friends, that takes place across a whole day in your village or town. This is your companion app that lets you make it happen.
Currently a work in progress.
It's recommended to deploy Hide and Squeak using Docker (with Docker Compose). We'll be using the mmk21/hide-and-squeak-server image, which supports x86_64 and ARM64 on Linux.
- Create a folder for the Docker Compose and config files, e.g.
mkdir hide-and-squeak && cd hide-and-squeak - Download the production
compose.yamlfile:wget https://raw.githubusercontent.com/MMK21Hub/hide-and-squeak/main/deployment/downloads/compose.yaml - Download the
example.envfile:wget https://raw.githubusercontent.com/MMK21Hub/hide-and-squeak/main/deployment/downloads/example.env - Rename the
example.envfile to.env:mv example.env .env - Edit the
.envfile, replacing the default database password with a randomly-generated one (without special characters) - Run
docker compose up -dto start the containers - Optional: Watch the logs with
docker compose logs -f(the database will perform some initial migrations and then the server should start up after a few seconds)
By default, the app will be served on port 3010 (accessible at http://localhost:3010) and the database will stored in a database folder next to the docker-compose.yaml file. Both of those details can be changed by editing the compose.yaml file.
- Clone the repository and change into the repository's directory
- Run
yarn install - Run
yarn run db:generate
Any PostgreSQL database will do. I'd recommend spinning one up with Docker:
docker run --name has-dev-db \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_DB=hide-and-squeak \
-p 5432:5432 \
-v pgdata:/var/lib/postgresql/data \
-d postgis/postgis:17-3.5Enable the PostGIS extension for the database by opening a psql shell:
docker exec -it has-dev-db psql -U postgres -d hide-and-squeakThen run the following SQL command to enable PostGIS:
CREATE EXTENSION IF NOT EXISTS postgis;Exit the shell.
Adjust the backend/.env file to match the database in your development environment. If you used the exact command above, you can keep the default.
# Adjust if you're using a different database setup to the one above
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/hide-and-squeak"Start the backend server with yarn workspace hide-and-squeak-server start
- Leave this running in the background
- Restart the command if you make changes to the backend code
- Test it by going to http://localhost:3010/ping
Also start the frontend development server with yarn workspace hide-and-squeak dev
- Live reload will be available
Edit backend/prisma/schema.prisma. Then:
- Run
yarn run db:pushto update the database - Run
yarn run db:studioto examine the database contents using Prisma Studio (web UI)
- Create a
.envfile in the root of the repo, usingdeployment/downloads/env.exampleas a template. - In the root of the repo:
docker compose up --build - Hopefully it builds without errors and the app will work on port 3010
- Set up a Docker BuildKit builder:
docker buildx create --use - Install required emulators:
docker run --privileged --rm tonistiigi/binfmt --install arm64(if your local machine is x86_64)- If you're on an ARM64 machine, you should install the
amd64emulator instead - If you're on another architecture, install both (
arm64,amd64)
- If you're on an ARM64 machine, you should install the
- Build it!
docker buildx build --platform linux/amd64,linux/arm64 --load .
- Check the tags already available on Docker Hub
- Use the
upload-new-docker-image.shscript! E.g../upload-new-docker-image.sh v0.1.9- This will automatically perform the preparatory steps for multi-platform builds (as above), build the image, tag it, and upload it to Docker Hub
This process is no longer recommended, because you can now use the upload-new-docker-image.sh script to upload multi-platform images.
- Pick a version number:
export VERSION=v0.1.0 - Build the image:
docker build -t mmk21/hide-and-squeak-server . - Tag it with the version tag:
docker tag mmk21/hide-and-squeak-server mmk21/hide-and-squeak-server:$VERSION - Upload the version tag:
docker push mmk21/hide-and-squeak-server:$VERSION - Upload the
latesttag:docker push mmk21/hide-and-squeak-server
The following kinds of AI assistance have been used to for this project:
- GitHub Copilot's tab-completion and edit predictions
- Asking ChatGPT to compare different available framework/library/other technology choices
- Asking ChatGPT for help with debugging Docker issues
- ChatGPT scaffolded a basic
schema.prismafile which was then modified
None of the prose in the app, or documentation, has been written or rewritten by AI.

