Thank you for your interest in contributing to Fluux Messenger!
- Node.js 18+
- Rust (for Tauri desktop builds)
- npm
# Clone the repository
git clone https://github.com/processone/fluux-messenger.git
cd fluux-messenger
# Install dependencies
npm install
# Build the SDK (required before running the app)
npm run build:sdk
# Start development server (web)
npm run dev
# Start development server (desktop)
npm run tauri:devfluux-messenger/
├── apps/fluux/ # Desktop/web application
│ ├── src/ # React components and hooks
│ ├── src-tauri/ # Rust backend for Tauri
│ └── scripts/ # App build scripts
├── packages/fluux-sdk/ # Reusable XMPP SDK
└── scripts/ # Release scripts
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix- Follow existing code style
- Add tests for new functionality
- Update documentation if needed
# Run all tests
npm test
# Run type checking
npm run typecheck
# Build to verify no errors
npm run buildWrite clear commit messages:
git commit -m "feat: add new feature description"
git commit -m "fix: resolve bug description"
git commit -m "docs: update documentation"
git commit -m "test: add tests for feature"
git commit -m "chore: update dependencies"- Push your branch to GitHub
- Open a Pull Request against
main - Fill in the PR template
- Wait for CI checks to pass
- PRs are squash-merged to keep history clean
- Each PR becomes a single commit on main
- Use functional components with hooks
- Prefer named exports
- Use TypeScript strict mode
- Follow existing patterns in the codebase
The SDK (packages/fluux-sdk) should:
- Be framework-agnostic where possible
- Expose a clean public API via
index.ts - Handle all XMPP protocol details internally
- Apps should never import from
@xmpp/clientdirectly
- Write unit tests for new functionality
- Use Vitest for testing
- Mock external dependencies
- Test files go next to source files (
*.test.ts)
-
Create a feature or fix branch from
main:git checkout -b feature/your-feature git checkout -b fix/your-bugfix
-
Open a Pull Request against
main -
After review, merge to
main(squash merge)
- When ready to release, tag directly on
main:git tag -a v0.9.0 -m "Release v0.9.0" git push origin v0.9.0
If a critical fix is needed for a released version:
-
Create a hotfix branch from the release tag:
git checkout -b hotfix/0.9.1 v0.9.0
-
Apply the fix and tag:
git commit -m "fix: critical bug description" git tag -a v0.9.1 -m "Release v0.9.1" git push origin v0.9.1
-
Merge the fix back to
main:git checkout main git merge hotfix/0.9.1
- Open an issue for bugs or feature requests
- Check existing issues before creating new ones
Before we can accept your contribution, you must sign our Contributor License Agreement (CLA). This is a one-time process that takes only a few minutes.
The CLA ensures that:
- You have the right to contribute the code
- ProcessOne can distribute your contribution under the project license
- Your contribution can be relicensed by ProcessOne in its Business offering.
By contributing, you agree that your contributions will be licensed under the AGPL-3.0 license.