Bonkverse is the resource hub for everything related to the game Bonk.io --- skins, players, search, stats, tools, and community data.
This repository contains the Django backend that powers Bonkverse.
If you just want Bonkverse running locally:
# Clone repo
git clone https://github.com/Misterurias/bonkverse.git
cd bonkverse
# Virtual env
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Start databases
docker compose up -d
# Set up DB
python manage.py migrate
python manage.py populate_all
# Create admin user (optional but recommended)
python manage.py createsuperuser
# Run server
python manage.py runserver
- Python / Django
- PostgreSQL (Dockerized)
- Redis (Dockerized)
- Django ORM + PostgreSQL extensions
- Railway (production)
- Cloudflare (production edge / protection)
Bonkverse is designed to run fully locally, without touching production.
Make sure you have:
- Python 3.10+
- Docker & Docker Compose
- Homebrew (macOS)
- Git
git clone https://github.com/Misterurias/bonkverse.git
cd bonkversepython -m venv .venv
source .venv/bin/activateInstall dependencies:
pip install -r requirements.txtCreate a local .env file (this is not committed):
ENV=local
DEBUG=true
SECRET_KEY=dev-insecure-secret-key
DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:5433/bonkverse
REDIS_URL=redis://localhost:6379/0
⚠️ Do not include quotes around values. A.env.examplefile is provided for reference.
Bonkverse uses Docker for local databases.
docker compose up -dThis starts:
- PostgreSQL (on port 5433)
- Redis (on port 6379)
python manage.py migrateBonkverse search relies on PostgreSQL extensions (pg_trgm, unaccent).
They are installed automatically when seeding, or manually via:
python manage.py init_pg_extensionsBonkverse includes a full local seeding system.
This will:
- Install Postgres extensions
- Populate fake data for most models
- Populate sample skins for search & UI testing
python manage.py populate_allThis does not use production data and is safe to run multiple times.
python manage.py runserverOpen:
http://localhost:8000
Admin panel:
http://localhost:8000/admin
Recommended daily tool
python manage.py shell_plusExamples:
Skin.objects.count()
Skin.objects.filter(name__icontains="dragon")[:10]
BonkPlayer.objects.all()[:5]
python manage.py dbshellIf psql is missing:
brew install libpq
brew link --force libpqUse Admin for:
- Browsing data
- Editing records
- Sanity checking relationships
http://localhost:8000/admin
Bonkverse search uses:
- PostgreSQL full-text search
pg_trgmsimilarity ranking
If search errors locally:
- Make sure extensions are installed:
python manage.py init_pg_extensions
python manage.py reset_db
python manage.py migrate
python manage.py populate_all
(reset_db is provided by django-extensions)
bonkverse/
├── skins/
│ ├── models.py
│ ├── views.py
│ ├── admin.py
│ └── management/
│ └── commands/
│ ├── populate_all.py
│ ├── populate_skins.py
│ ├── init_pg_extensions.py
│ └── ...
├── docker-compose.yml
├── manage.py
├── requirements.txt
└── .env.example
- Local uses Docker +
.env - Production runs on Railway
- Never point local code at production databases
- Never commit
.envfiles
- Fork the repo
- Create a feature branch
- Follow the local setup steps above
- Make your changes
- Open a PR
If something is unclear or broken locally, please open an issue.
Bonkverse is built by the Bonk.io community, for the Bonk.io community.
Yes this code was made with the help of ChatGPT. What does this mean? It means that most likely the code you're about to see is gonna be shit. The purpose of making this repo public and open source is to step away from AI-generated code into something useful and made by community members.
We hope that you'll bear with us as we undergo this transition of being more community and developer friendly :)