SatSigner is an open-source Bitcoin wallet application built for users who demand complete control over their Bitcoin. We welcome contributions from developers who want to help build powerful Bitcoin tools and improve Bitcoin UX.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/satsigner/satsigner/llms.txt
Use this file to discover all available pages before exploring further.
Why Contribute?
- Build powerful Bitcoin tools: Help create a comprehensive native mobile Bitcoin signer management application
- Advance Bitcoin UX: Contribute towards the integration, development, and enhancement of Bitcoin user experience design
- Privacy and sovereignty: Build privacy-first tools that give users complete control over their keys, data, and privacy
- Visual Bitcoin tools: Unlock coin insights via integrated onchain analyses and data visualization to inform better Bitcoin usage practices
- Educational impact: Advance Bitcoin understanding through visual tools and Bitcoin-native terminology
- Open source ethos: Propagate FOSS principles and support Bitcoin and related projects
- Participate in Bitcoin history: Be part of building the future of Bitcoin technology
Project Philosophy
Before contributing, familiarize yourself with SatSigner’s core principles:- Bitcoin On Chain First: Full vertical support of all things sats with on chain as the safe layer of last resort
- Sat denomination supremacy: Sats as the primary unit
- Complete UTXO control: Full control over coin selection and spending
- Privacy first: Emphasis on privacy-enhancing features and no tracking
- Visual-native UI: Comprehensive visualization tools for all Bitcoin data
- Bitcoin-native terminology: Using Bitcoin’s true language (UTXOs, transactions, signers)
- Security focused: PIN-protected encryption, seed dropping, multi-signature support
- Open source: Fully auditable codebase with open-source dependencies only
- User sovereignty: Complete control over keys, data, and privacy
- Educational: Learn Bitcoin while using it with visual tools and explanations
Getting Started
The best way to get involved is to:-
Join the community:
- Follow @satsigner on Twitter
- Join the Telegram Group
- Check the GitHub repository
-
Set up your development environment:
- See the Development Setup guide
- Read through the Architecture documentation
-
Find issues to work on:
- Browse open issues
- Look for issues tagged with
good first issuefor beginner-friendly tasks - Check the roadmap for upcoming features
Contribution Workflow
1. Fork and Clone
2. Create a Branch
3. Make Your Changes
- Write clean, maintainable code following the project’s style
- Add tests for new functionality
- Update documentation as needed
- Ensure all tests pass
4. Test Your Changes
5. Commit Your Changes
Write clear, descriptive commit messages:feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
6. Push and Create Pull Request
Code Guidelines
TypeScript
- Use TypeScript for all code
- Enable strict type checking
- Avoid
anytypes - use proper type definitions - Define types in the
types/directory
Code Style
- Follow the existing code style
- Use Prettier for formatting (run
yarn format:fix) - Use ESLint for linting (run
yarn lint:fix) - Keep functions small and focused
- Write descriptive variable and function names
React Native Best Practices
- Use functional components with hooks
- Optimize performance with
useMemoanduseCallback - Follow React Native’s platform-specific conventions
- Test on both iOS and Android
State Management
- Use Zustand stores for global state (see
store/directory) - Use React Query for server state
- Keep state as local as possible
- Use Immer for immutable updates
Testing
Unit Tests
Write unit tests for utility functions and isolated components:Integration Tests
Write integration tests for complex workflows:Areas for Contribution
High Priority
- BDK integration improvements: Enhance Bitcoin Development Kit integration
- Privacy features: Implement additional privacy-enhancing features
- UTXO management: Improve coin control and selection UI/UX
- Multi-signature workflows: Enhance collaborative signing experiences
- Performance optimizations: Improve app performance and responsiveness
Features
- Visualizations: New chart types and data visualizations
- Layer 2 integrations: Lightning Network, eCash improvements
- Nostr integration: Enhanced label synchronization
- Transaction building: Advanced transaction construction tools
- Accessibility: Improve accessibility for all users
Documentation
- User guides: Step-by-step tutorials
- API documentation: Document internal APIs
- Architecture docs: Explain system design decisions
- Examples: Code examples and use cases
Bug Fixes
- Check the issue tracker for bugs
- Verify the bug exists and document reproduction steps
- Fix the bug and add regression tests
Security
Security is paramount in Bitcoin applications:- Never commit sensitive data: No private keys, mnemonics, or credentials
- Review crypto code carefully: Encryption, key derivation, signing
- Report security issues privately: Contact the team directly for vulnerabilities
- Follow Bitcoin best practices: Use established libraries and patterns
- Test security features thoroughly: Especially authentication and encryption
Code Review Process
All contributions go through code review:- Automated checks: CI runs tests, linting, and type checking
- Peer review: Maintainers review code for quality and correctness
- Testing: Changes are tested on multiple devices and platforms
- Documentation: Ensure documentation is updated
- Merge: Once approved, changes are merged to main
Communication
- Be respectful: Treat all contributors with respect
- Be clear: Write clear issue descriptions and pull request explanations
- Be responsive: Respond to feedback and questions promptly
- Ask questions: Don’t hesitate to ask for help or clarification
- Share knowledge: Help other contributors learn and grow
Recognition
We value all contributions:- Contributors are listed in the project
- Significant contributions are highlighted in release notes
- Active contributors may be invited to become maintainers
License
By contributing to SatSigner, you agree that your contributions will be licensed under the MIT License.Questions?
If you have questions about contributing:- Join the Telegram Group
- Reach out on Twitter @satsigner
- Open a discussion on GitHub