Skip to content

spj2401Dev/GeoBingo_IRL

Repository files navigation

Geobingo IRL

Geobingo is an open-source game where you and your friends are assigned prompts to find and photograph objects in the real world.

Tip

This project is not related to GeoBingo.io, but check them out on Github. It is very similar to this repo, but in Google Street View, if going outside is not your thing.

GeoBingoLogo Brushes from Brusheezy!

Hosting for Production

This will be using Docker via docker-compose.

First you might want to edit the docker-compose.yml. In there you can configure the enviorment variabels, to define on which Ports the Server and Websocket run on.

After that it's as easy as running

docker-compose up --build

Selfhosting

Download the Repo and open in up in your favorite IDE. Then install all the required packages.

npm i

After that make sure you edit the .env file. There is a .env.template. In this file you can configure on which ports the Server and Websocket run on.

Like this its configured to run on your localhost. The client derives the WebSocket host from the current page and scopes each connection to the game id in the URL. After that just run the project using

npm start

or use nodemon, to automatically restart the server once you saved a file. (Often not recommended, because all the game data is stored in the runtime. Meaning restarting the server resets the game)

npm run dev

Setting Default words

In GeoBingo you can set default words, which will be randomly choosen if you dont fill out all the words. You can find those in /src/utility/wordsList.mjs. In there just put the Words you want to use.

Features

  • 🤝 Teams are supported. Play with multiple people together
  • 📝 Voting. Give extra points to the best photos.
  • 🔎 As Admin remove pictures that do not follow the prompt.
  • 🎮 Multiple gamemodes (individual, shared_locked, bounty_hunt).
  • 🔗 Compression Build in. Save Data when on the run
  • 💻 Good looking UI

Gamemodes

When creating or updating a game (POST /game or POST /word/:gameId/set), you can pass gameMode:

  • individual (default): each player gets their own random prompt set.
  • shared_locked: all players get the same prompts, and once any player completes a prompt, nobody can upload that prompt again. Completed prompts also cannot be replaced/reuploaded.
  • bounty_hunt: only one active prompt is live at a time. First valid upload claims it for +1 point and triggers a 3-choice race to pick the next prompt (10s timeout with random fallback). Voting is disabled in this mode.

bounty_hunt optional setting:

  • allowSkip (boolean): allows a player to skip the active bounty by paying 1 point. In team games, this uses a shared team score pool.

Frontend behavior:

  • On the create page, gamemode is selected via tabs. In shared_locked (VS mode), prompt count is shown as Total Prompts and defaults to 12.
  • In bounty_hunt, voting setup is hidden and an optional skip toggle is shown.
  • On the camera page, progress is shown as Words left for classic modes, while bounty mode shows active bounty state, next-prompt selection, and skip controls.

Game URLs

Opening / lets the game creator set prompts and create a new game. After creation the app redirects to /g/<game-id>. Share that URL or the QR code on the lobby screen with other players.

Contributing

Contributions are always welcome!

There are still a lot of issues in terms of security, since the was programmed in about two Weeks and is only meant for Friends.

If you have any ideas for improvements, just create a Pull Request :)

License

MIT

About

Geobingo IRL is an open-source game where you and your friends are assigned prompts to find and photograph in the real world.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors