BirdBot is an automated player for BombParty on the Croco.games platform, designed to help players improve their skills through practice and analysis.
- Practice: Train against a consistent, high-performance opponent
- Progress Tracking: Keep track of your records
- Research Tools: Access word research tools for specific categories
- Custom Game Modes: Experience unique game modes beyond classic BombParty
-
Clone the repository
git clone <repository_url> birdbot cd birdbot
-
Configure Environment
cp .env.example .env # Edit .env with your configuration -
Launch with Docker
./prod.sh
| Component | Technology |
|---|---|
| Database | PostgreSQL |
| API | Fastify (TypeScript) + Prisma |
| Website | Next.js (TypeScript) |
| Bot | TypeScript + WebSocket + Rust |
| Runtime | Docker + Node.js 23.7 (Alpine) |
For development:
- Docker
- Node.js v23.7+
- Rust 1.86+
For production:
- Docker
- Start Development Database (Required)
./launch-open-db.sh- Run Individual Modules
To run the API module:
# Go to the API directory
cd api
# Create environment file (Configure as you wish)
cp .env.example .env
# Install dependencies locally
npm install
# Start the API with nodemon in watch mode
npm run devTo run the Website module:
# Go to the website directory
cd website
# Create environment file (Configure as you wish)
cp .env.example .env
# Install dependencies locally
npm install
# Start the Next.js website in development mode
npm run devTo run the Bot module:
# Go to the bot directory
cd bot
# Create environment file (Configure as you wish)
cp .env.example .env
# Build the BirdBot powerhouse for dictionary metadata generation
./build_birdbot_powerhouse.sh
# Create the bot starting script
# index.unstable.ts is gitignored to prevent versioning unstable bot starting scripts in development
cp src/index.ts src/index.unstable.ts
# Run the unstable bot starting script
npm run uNote that, contrary to the API and website modules, you must fully restart the script everytime you make a change to the code.
The functional NetworkAdapter class implementation is intentionally gitignored to comply with the Croco.games platform policy. Developers must implement this class by reverse-engineering the croco.games protocol themselves.
Open-sourcing Croco.games network interaction code would make cheating significantly easier, which we are trying to prevent.