Thank you for your interest in contributing to Dalmatian! This guide will help you get started.
- Fork the repository or create a new branch if you have write access
- Create a new branch from
mainwith a descriptive name:git checkout -b your-feature-name # or git checkout -b bug-description - Make your changes following the code style and conventions
- Test your changes locally by running the bot
- Commit using conventional commits (see below)
- Push to your fork or branch
- Open a Pull Request with a clear description of your changes
This project follows Conventional Commits.
Examples:
feat: add course search by instructorfix: resolve dining hall location formatting issuedocs: update README installation stepsrefactor: simplify embed pagination logicchore: update dependencies to latest versionsstyle: format code with biome
We recommend using VSCode, and the following setup guide will assume you are using VSCode.
Recommended VSCode extensions:
- VSCode has builtin TypeScript language support
- Dependi
- Biome
- Oxc
- Typescript (Native Preview)
You will also need git installed.
Rename or copy .env.example into .env.
Create a new Discord bot or use one of your current ones.
In your application, under the Bot tab, reset your token and copy the token for DISCORD_TOKEN
Under the OAuth2 tab, grab the client ID for DISCORD_CLIENT_ID
The bot will work fine with only the DISCORD_TOKEN and DISCORD_CLIENT_ID keys. Optionally, you can set up GOOGLE_MAPS_API_KEY to debug formatLocation in dining.ts.
- Head to Google Cloud Console and create a new project.
- In
APIs & Services, enable theMaps Javascript APIandMaps Static APIproducts. - Get a key from
Keys & Credentialsto input intoGOOGLE_MAPS_API_KEY.
The bot uses PostgreSQL for storing polls and reaction redirect configurations. The database runs in Docker for local development.
-
Start the PostgreSQL database using Docker:
docker-compose up -d postgres
-
Run database migrations to create the tables:
bun run db:migrate
-
(Optional) Open Drizzle Studio to inspect the database:
bun run db:studio
The database will persist data in a Docker volume. To completely reset the database, run:
docker-compose down -v
docker-compose up -d postgres
bun run db:migrateBefore you commit and open a pull request, make sure to:
- Run
bun lintand fix any errors/warnings - Run
bun formatto format your code - Test the bot locally with your changes
- Ensure your commits follow conventional commit format
- Update documentation if you added/changed features
- Keep PRs focused - One feature or fix per pull request
- Write clear descriptions - Explain what changed and why
- Reference related issues - Use "Fixes #123" or "Closes #456" if applicable
- Be responsive - Address review feedback promptly
To understand current priorities, roadmap, and ongoing work:
- Visit the Dalmatian Development project
- If you cannot access the board, ask a maintainer to add you to the ScottyLabs organization.
If you have questions or need help:
- Open an issue on GitHub
- Check existing issues and pull requests for similar questions
Remember to follow conventional committing guidelines while contributing!