The following information is for people looking to contribute to the project.
├── config/ # Bot configuration files
│ ├── config.json # Discord bot credentials
│ ├── extended-config.json # Extended Rhidium config
│ └── click-to-create.yaml # Voice channel triggers
├── locales/ # i18n translation files
│ ├── en-US/ # English translations
│ └── nl/ # Dutch translations
├── prisma/ # Database schema and migrations
│ ├── schemas/ # Prisma schema files
│ └── migrations/ # Database migrations
├── src/ # Application source code
│ ├── index.ts # Entry point
│ ├── config.ts # Config loader
│ ├── registry/ # Event listeners
│ ├── schema/ # Validation & schemas
│ └── voice-state/ # Voice channel logic
├── rhidium/ # Git submodule (framework)
├── docker/ # Docker (compose) configuration
│ ├── compose.yaml # Docker Compose orchestration
│ ├── Dockerfile # Multi-stage build config
│ └── entrypoint.sh # Docker startup script
├── Makefile # Common command shortcuts
- Rhidium - Discord bot framework with built-in features
- Discord.js - Discord API wrapper
- Prisma - Type-safe database ORM
- Zod - TypeScript-first schema validation
- tsdown - TypeScript bundler and build tool
- tsx - TypeScript execution and hot reload
- Follow existing code style and patterns
- Add tests for new features
- Update documentation for any configuration changes
- Test with Docker Compose before submitting
- Ensure
pnpm typecheckpasses
# Start dev server with hot reload
pnpm dev
# Build for production
pnpm build
# Type checking
pnpm typecheck
# Clean build artifacts
pnpm clean
# Clean everything (including node_modules)
pnpm clean:full
# Copy locales from rhidium
pnpm cp:locales
# Generate JSON schema from YAML config
pnpm gen:schema
# Update dependencies (minor)
pnpm up:bump:minor
# Update dependencies (major)
pnpm up:bump:major- Generate a new (default)
tsconfig.jsonfile:npx -p typescript tsc --init - Apply
verbatimModuleSyntaxfixes:pnpm dlx fix-verbatim-module-syntax --dry ./tsconfig.json - Check for circular dependencies: Review build output from
pnpm build
The build process uses tsdown with these features:
- CommonJS output format
- Source maps for debugging
- Circular dependency detection
- External dependencies (no bundling)
- Separate build configs for app and Prisma generated code
This project uses git submodules to manage the Rhidium framework. Submodules allow us to include and track specific versions of external repositories while keeping the main repository clean.
# Clone with submodules
git clone --recurse-submodules https://github.com/rhidium/dynamic-voice-channels.git
# If already cloned without submodules
git submodule update --init --recursive
# Pull latest changes (main repo + submodules)
git pull && git submodule update --remote --merge
# Update submodules to tracked commits
git submodule update --recursive
# Add new submodules
git submodule add -b <branch-name> <repo-url> <directory-name>The rhidium/ directory is a git submodule pointing to the Rhidium framework. When you make changes to the submodule:
- Commit changes in the submodule directory
- Return to the main repo and commit the submodule pointer update
- Push both repositories