Thanks for your interest in contributing to saasmail. Please also read the Code of Conduct — it applies in every project space.
saasmail is licensed under Apache License 2.0. There is no CLA. By opening a pull request you agree that your contribution is licensed under the same Apache 2.0 license as the rest of the project, and that you have the right to license it.
- Fork the repository
- Clone your fork:
git clone https://github.com/<your-username>/saasmail.git - Install dependencies:
yarn install - Follow the Local Development section in the README to set up your environment
- Create a branch from
main:git checkout -b my-feature - Make your changes
- Run tests:
yarn test - Run type checking:
yarn tsc --noEmit - If you changed the schema, generate a migration:
yarn db:generate - Add an entry under
## [Unreleased]inCHANGELOG.mdfor any user-visible change - Commit and push your branch
- Open a pull request against
main
Note: a
CLAUDE.mdat the repo root contains notes the maintainer uses with Claude Code. It's optional context — you don't need Claude Code to contribute.
- Describe what your PR does and why
- Keep PRs focused — one feature or fix per PR
- Include any relevant migration files if you changed the database schema (
yarn db:generate)
- TypeScript strict mode
- Follow existing patterns in the codebase
- Tailwind CSS for styling (light theme using the existing color tokens)
- Hono + Zod OpenAPI for backend routes
- Drizzle ORM for database queries
Open an issue on GitHub with:
- What you expected to happen
- What actually happened
- Steps to reproduce