Welcome to the Realm of Darkness monorepo! This is a comprehensive platform designed for World of Darkness tabletop roleplaying enthusiasts, providing web-based character sheets, Discord bot integration, and real-time collaboration tools for storytellers and players.
The Realm of Darkness combines a modern web application with Discord bots to create an integrated experience for managing characters, chronicles, and gameplay across multiple World of Darkness game systems including Vampire: The Masquerade V5, V20 edition, and Chronicles of Darkness.
- π Web Application: Modern React frontend with Django REST API backend
- π€ Discord Integration: Suite of Discord bots for dice rolling and character management
- π Character Sheets: Full character sheet support for multiple World of Darkness systems
- β‘ Real-time Collaboration: Live character sheet updates via WebSockets
- π² Dice Rolling: Game-specific dice mechanics with Discord slash commands
- π° Chronicle Management: Organize characters into shared storytelling environments
- π Discord OAuth: Seamless login and server synchronization
- π± Responsive Design: Works on desktop, tablet, and mobile devices
This monorepo contains three main components:
realm-of-darkness/
βββ backend/ # Django REST API backend
β βββ rod/ # Core Django project settings
β βββ api/ # RESTful API endpoints
β βββ haven/ # Character sheet models and logic
β βββ chronicle/ # Chronicle/campaign management
β βββ discordauth/ # Discord OAuth integration
β βββ gateway/ # WebSocket services
β βββ scripts/ # Development and deployment scripts
βββ frontend/ # React SPA frontend
β βββ src/
β β βββ components/ # UI components
β β βββ routes/ # Page routing
β β βββ gateway/ # WebSocket client
β βββ public/
βββ discord_bots/ # Discord bot suite
β βββ src/
β β βββ commands/ # Slash commands
β β βββ events/ # Discord event handlers
β β βββ modules/ # Dice rolling and utilities
β βββ scripts/
βββ dev.bat/.sh # Full-stack development scripts
- Python 3.12+ for the Django backend
- Node.js 18+ and npm for frontend and Discord bots
- Redis for WebSocket and caching (WSL required for Windows)
- Git for version control
-
Clone the repository
git clone https://github.com/Mirai-Miki/realm-of-darkness-site.git cd realm-of-darkness-site
-
Run the setup script (creates .env files and installs dependencies)
# Windows backend\scripts\setup.bat # Linux/macOS chmod +x backend/scripts/*.sh backend/scripts/setup.sh
-
Start the full development environment
# Windows dev.bat # Linux/macOS ./dev.sh
This will start:
- Backend API: http://localhost:8080
- Frontend: http://localhost:3000
- Redis server: Running in background
- Database migrations: Applied automatically
You can also run components separately:
# Backend only
cd backend/scripts && ./dev.bat
# Frontend only
cd frontend && ./dev.bat
# Discord bots only
cd discord_bots && npm run dev
- Visit https://realmofdarkness.app
- Login with your Discord account
- Create character sheets for your campaigns
- Join Discord servers with the bots installed
- Use slash commands to roll dice and manage characters
- Set up chronicles on the website
- Invite the Discord bots to your server
- Manage player characters and track campaign progress
- Use real-time features for collaborative storytelling
- Each component has its own README with detailed development information
- Use the monorepo dev scripts for full-stack development
- See individual component READMEs for specific development guidelines
- Django 5.2 - Web framework
- Django REST Framework - API development
- Django Channels - WebSocket support
- Redis - Caching and WebSocket backend
- SQLite/MySQL - Database (SQLite for dev, MySQL for production)
- React 19 - UI framework
- Material-UI - Component library
- React Router - Client-side routing
- WebSocket - Real-time updates
- Discord.js 14 - Discord API wrapper
- Node.js - JavaScript runtime
- TypeScript - Type safety (transitioning)
Each component has its own .env
file for environment variables:
Component | Env File Location | Key Variables (examples) |
---|---|---|
Backend | backend/.env |
DEBUG , SECRET_KEY , API_KEY , REDIS_DB_INDEX , etc. |
Discord Bots | discord_bots/.env |
DISCORD_BOT_TOKEN , API_KEY , etc. |
Frontend | frontend/.env (rarely) |
(Usually only for frontend-specific overrides) |
The setup scripts will help you configure these values for each component.
Note:
- The backend and Discord bots each require their own
.env
file with the appropriate variables for their service.
We welcome contributions to improve the Realm of Darkness platform! Here's how:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes following our coding standards
- Test your changes thoroughly
- Submit a pull request with a clear description
feature/description
- New functionality or enhancementsbugfix/issue-description
- Bug fixesrefactor/component-name
- Code improvements or restructuringdocs/description
- Documentation updatestest/description
- Test additions or updateschore/description
- Maintenance tasks (e.g. cleanup, scripts)deps/description
- Dependency updatesconfig/description
- Configuration or static value changesci/description
- Continuous integration or workflow changesstyle/description
- Formatting or stylistic changesperf/description
- Performance improvementsrevert/description
- Reverting previous changes
Backend won't start
- Check Python version (requires 3.12)
- Ensure Redis is running
- Verify .env file exists in backend/
Frontend build errors
- Clear npm cache:
npm cache clean --force
- Delete node_modules and reinstall:
rm -rf node_modules && npm install
Discord bots not responding
- Verify bot tokens are correct
- Check API_KEY matches between backend and bots
- Ensure backend server is running and accessible
- Check component-specific READMEs for detailed troubleshooting
- Join our Discord community for support
- Report bugs via GitHub issues
- π Website: Realm of Darkness
- π¬ Discord: Join our community
- π Issues: Report bugs
This project is licensed under the AGPL License. See the LICENSE file for details.
Made with β€οΈ for the World of Darkness community