Welcome Contributors
Commune is source available and we welcome contributions from the community. Whether you’re fixing bugs, adding features, improving documentation, or helping other users, your contributions make Commune better for everyone.License Information
Commune backend is licensed under Business Source License 1.1 (BSL), which allows: ✅ Non-production use - Development, testing, and experimentation✅ Internal use - Use within your own organization
✅ Embedded use - As part of a larger application that isn’t competitive
✅ Educational use - Study and learn from the code
✅ Contributions - Submit pull requests and help improve the platform ❌ Competitive hosting - Cannot offer as a hosted email API service competing with Commune’s paid services After 4 years, each version converts to Apache 2.0 license. For full details, see backend/LICENSE.md.
Ways to Contribute
Report Issues
Found a bug or have a feature request? Open an issue on GitHub. When reporting bugs, include:- Clear description of the issue
- Steps to reproduce
- Expected vs actual behavior
- Environment details (Node.js version, OS, etc.)
- Relevant logs or error messages
Submit Pull Requests
Ready to contribute code? We’d love to review your PR! Before submitting:- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Write or update tests
- Ensure all tests pass
- Commit with clear messages
- Push to your fork
- Open a Pull Request
Improve Documentation
Documentation improvements are always welcome! Fix typos, clarify explanations, or add examples.Help Other Users
Answer questions in GitHub Discussions or help triage issues.Development Setup
Prerequisites
- Node.js 18+ and npm
- MongoDB (local or cloud)
- Redis (optional, for caching)
- Git
Clone and Install
Environment Setup
Create.env files in the backend directory:
Run Locally
Project Structure
Coding Standards
TypeScript/JavaScript
- Use TypeScript for type safety
- Follow existing code style
- Run
npm run lintbefore committing - Add JSDoc comments for public APIs
Python
- Follow PEP 8 style guide
- Use type hints
- Run
blackfor formatting - Add docstrings for public functions
Commit Messages
Use clear, descriptive commit messages:Testing
Backend Tests
SDK Tests
Python SDK Tests
Code Review Process
- Automated checks run on every PR (tests, linting, type checking)
- Maintainer review — we’ll review your code and provide feedback
- Iterate — address feedback and push updates
- Merge — once approved, we’ll merge your PR
Architecture Overview
Backend
- Express.js REST API
- MongoDB for data storage
- Redis for caching and rate limiting
- Resend for email delivery
Key Services
emailService.ts— Core email sending/receiving logicmessageStore.ts— Message and thread persistencewebhookDeliveryService.ts— Reliable webhook delivery
Security Layers
- Rate limiting (Redis-backed)
- Email validation (MX lookup, disposable detection)
- Content scanning (spam, prompt injection)
- Encryption at rest (AES-256-GCM)
Good First Issues
Look for issues tagged withgood first issue on GitHub. These are beginner-friendly tasks that help you get familiar with the codebase.
Community Guidelines
- Be respectful — treat everyone with kindness
- Be constructive — provide helpful feedback
- Be patient — maintainers review PRs as time allows
- Ask questions — we’re here to help!
License
Commune backend is licensed under Business Source License 1.1 (BSL). By contributing, you agree that your contributions will be licensed under the same BSL terms. After 4 years, contributions become available under Apache 2.0 license.Connect with us
GitHub
Source code, issues, and pull requests.
Twitter / X
Follow for updates, launches, and product announcements.
GitHub Discussions
Ask questions and share ideas with the community.
Email Support
support@commune.email — for bugs, questions, or partnership inquiries.

