An educational turn-based strategy board game teaching children (11+) about gut bacteria, healthy behaviors, and antibiotic resistance through engaging gameplay.
Two teams battle for control of the digestive tract:
- Good Bacteria (Blue): Promote healthy gut flora
- Bad Bacteria (Red): Try to take over and cause illness
Players use behavior cards representing real health choices, with antibiotics as powerful but risky tools that increase antibiotic resistance.
- Turn-based strategy gameplay for 2-6 players
- Educational content about gut health and AMR
- Local multiplayer and AI opponents
- Interactive tutorial
- Steam achievements and statistics
- Cross-platform (Windows, macOS, Linux)
- Node.js 18+
- npm or pnpm
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Run Electron app (development)
npm run electron:dev
# Build Electron app for distribution
npm run electron:buildThe game is built with:
- React 18 - UI framework
- TypeScript - Type safety
- Zustand - State management
- Tailwind CSS - Styling
- Framer Motion - Animations
- Vite - Build tool
- Electron - Desktop app wrapper
Good Bacteria Win:
- Control 5+ zones, OR
- Eliminate all bad bacteria
Bad Bacteria Win:
- Control 5+ zones, OR
- Push AMR barometer to level 10
- Roll the 20-sided die
- If roll >= 15, a Global Event occurs
- Play one card from your hand
- Apply card effects to a target zone
- Draw a replacement card
- Pass turn to next player
The Antibiotic Resistance (AMR) barometer tracks how resistant bacteria are becoming. Using antibiotics increases this level. If it reaches 10, bad bacteria become unstoppable!
This game teaches:
- How gut bacteria affect health
- Impact of lifestyle choices on microbiome
- How antibiotics work and their risks
- Why antibiotic resistance is a global concern
- Importance of completing antibiotic courses
The game uses a modular, JSON-based card system that makes it easy to modify game rules without touching code.
All card definitions are stored in src/data/cards/ as JSON files:
good-behavior.json- Cards for Good Bacteria teambad-behavior.json- Cards for Bad Bacteria teamglobal-events.json- Random global events
Simply open the JSON files and modify:
- Card names and descriptions
- Effect types and values
- AMR costs
- Educational facts
See src/data/cards/README.md for detailed documentation on card structure and available effects.
{
"id": "my_custom_card",
"name": "Healthy Snack",
"type": "behavior",
"deckType": "good_behavior",
"description": "Add 2 good bacteria to a zone.",
"educationalFact": "Healthy snacks support beneficial gut bacteria.",
"effects": [{ "type": "add_good", "value": 2 }],
"amrCost": 0
}Changes take effect immediately during development (hot reload) or after rebuild for production.
src/
├── components/
│ ├── Board/ # Game board and zones
│ ├── Cards/ # Card components
│ ├── Game/ # Main game component
│ └── UI/ # Menu, settings, etc.
├── data/
│ ├── cards/ # Modular JSON card definitions (EDIT THESE!)
│ │ ├── good-behavior.json
│ │ ├── bad-behavior.json
│ │ ├── global-events.json
│ │ └── README.md
│ └── cards.ts # Card loading system
├── hooks/ # Custom React hooks
├── store/ # Zustand state management
├── types/ # TypeScript type definitions
└── utils/ # Helper functions (AI, audio, storage)
For Steam distribution:
- Set up Steamworks developer account
- Create
steam_appid.txtwith your App ID - Configure achievements in Steamworks
- Build with
npm run electron:build - Upload via SteamCMD