Skip to content

Repository files navigation

🎭 Five Things

An improv warm-up tool for mime-and-guess practice — activities, items, locations, and people, all randomized and session-aware.

VersionNodeDockerLicense

Live:fivethings.techietable.com


What is Five Things?

One player mimes an activity — without actually doing it. The other mimes guesses until they perform it.

Five Things generates the prompts: a random activity, two substitutions (items, a location, or a person to weave in), and a difficulty level to keep things fresh. It tracks what's been shown in the session so nothing repeats.


Features

  • Three difficulty levels — Easy, Medium, Hard, and Random (pulls across all pools)
  • Smart substitutions — activities come paired with items, locations, or persons to mime alongside
  • Session-aware — no activity, location, or person repeats until you reload
  • Flag for review — mark anything that needs fixing; logged to a flat file for later
  • Theater curtain — animated SVG curtain opens on load, pauses on interaction
  • Light / dark mode — follows your OS preference
  • Mobile-friendly — works on phones at the table
  • Keyboard accessible — full keyboard navigation

Screenshots

Five Things


Getting Started

Docker (recommended)

# Set version and nameexport IMAGE_VERSION=0.0.11
export IMAGE_NAME=fivethings
docker compose up --build

The app will be available at http://localhost.

Data (CSV files and logs) is mounted from ./data — edit the CSVs there to customize your activity pool.

Local development

cd app
npm install
NODE_ENV=development npm run dev

Runs on http://localhost:3000 with live reload.


Data Files

All data lives in ./data/ and is mounted into the container:

FileContents
easy.csvEasy activities
medium.csvMedium activities
hard.csvHard activities
replacements.csvItem substitutions by difficulty
locations.csvLocation substitutions by difficulty
persons.csvPerson substitutions by difficulty
flagged.logFlagged entries (appended, plain text)

Activity file format

Name,With,Against,Item1,Item2,Item3,Item4,Item5,Item6
Juggling,false,false,ball,club,ring,hat,torch,unicycle

Replacements / Locations / Persons format

Replacement,Difficulty,Category
frying pan,EASY,Kitchen & Cooking

Configuration

Key defaults (set in the server and front end):

SettingDefault
Suggestions shown5
Default difficultyEasy
Location substitution rate20%
Person substitution rate20%
Curtain open time5s
Log fileflagged.log

Flag Log Format

Each flagged row appends one line:

# Activity name
[timestamp] difficulty=easy activity[12]=Juggling flagged=name
# Item / replacement
[timestamp] difficulty=easy activity[12]=Juggling item=ball replacement[44]=frying pan
# Location
[timestamp] difficulty=easy activity[12]=Juggling location[18]=Eiffel Tower
# Person
[timestamp] difficulty=easy activity[12]=Juggling person[7]=Mick Jagger

Built With

  • Node.js + Express
  • Vanilla JS, CSS custom properties, SVG
  • Docker + Docker Compose

Credits

Created by Calvin Moser
© Sea Moss — all rights reserved

About

A suggestion generator for the Five Things improv game.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages