Thank you for considering contributing to StreamLine! We're building something that will help millions of families stay connected across borders, and we'd love your help.
- Code of Conduct
- How Can I Contribute?
- Getting Started
- Development Workflow
- Coding Standards
- Commit Guidelines
- Pull Request Process
- Issue Labels
- Community
We are committed to providing a welcoming and inspiring community for all. We expect everyone to:
β
Be respectful - Treat everyone with respect and kindness
β
Be inclusive - Welcome diverse perspectives and backgrounds
β
Be collaborative - Work together toward common goals
β
Be constructive - Offer and accept constructive criticism gracefully
β
Focus on impact - Remember we're building to help real families
β Zero tolerance for:
- Harassment, discrimination, or offensive behavior
- Trolling, insulting comments, or personal attacks
- Publishing others' private information
- Any conduct that would be inappropriate in a professional setting
If you experience or witness unacceptable behavior, please report it to conduct@streamline.finance
- Build smart contracts for escrow, savings pools, multi-sig
- Optimize gas costs and contract efficiency
- Write comprehensive tests for contract security
- Issues: Look for
soroban,smart-contract,rust
- Build React Native mobile app
- Create Progressive Web App (PWA)
- Design responsive, accessible UI components
- Implement offline-first capabilities
- Issues: Look for
frontend,mobile,react-native,ui-ux
- Build REST/GraphQL APIs
- Integrate Stellar Horizon API
- Implement transaction monitoring
- Set up background job processing
- Issues: Look for
backend,api,node.js,database
- Integrate Stellar SDK
- Work with Anchors for fiat on/off-ramps
- Implement multi-sig wallets
- Optimize path payments
- Issues: Look for
stellar,blockchain,web3
- Create UI/UX designs for mobile and web
- Design app icons, logos, marketing materials
- Conduct user research and usability testing
- Issues: Look for
design,ui-ux,user-research
- Translate app interface and documentation
- Localize for specific markets (Philippines, Venezuela, India, etc.)
- Review translations for cultural appropriateness
- Issues: Look for
translation,localization,i18n
- Write documentation and tutorials
- Create API documentation
- Improve README and contribution guides
- Write blog posts about features
- Issues: Look for
documentation,content,tutorial
- Analyze transaction patterns
- Create dashboards for insights
- Help with fraud detection algorithms
- Issues: Look for
analytics,data,metrics
- Test new features on various devices
- Report bugs with detailed reproduction steps
- Perform security testing
- Issues: Look for
testing,qa,bug
Browse our issue tracker and look for:
good-first-issue- Perfect if you're new to the projecthelp-wanted- We need help on thesebeginner-friendly- Great learning opportunities- Your expertise area - Filter by
frontend,backend,soroban, etc.
Not sure where to start? Comment on issues asking for guidance - we're here to help!
Comment on the issue saying "I'd like to work on this!" and:
- Ask any clarifying questions
- Share your proposed approach (for complex issues)
- Mention estimated timeline
A maintainer will assign it to you and provide guidance.
Follow the Quick Start guide in the README.
Need help? Join our Discord and ask in #dev-help
# Fork the repo on GitHub, then:
git clone https://github.com/YOUR-USERNAME/streamline.git
cd streamline
git remote add upstream https://github.com/ORIGINAL-OWNER/streamline.gitgit checkout -b feature/your-feature-name
# or
git checkout -b fix/bug-descriptionBranch naming:
feature/- New featuresfix/- Bug fixesdocs/- Documentation updatesrefactor/- Code refactoringtest/- Test additions/fixes
- Write clean, documented code
- Follow our coding standards
- Add tests for new functionality
- Update documentation as needed
# Run all tests
npm test
# Run specific test suite
npm test -- transaction.test.js
# Test smart contracts
cd contracts && cargo test
# Lint your code
npm run lintFollow our commit guidelines:
git add .
git commit -m "feat: add SMS notification for transaction confirmation"git push origin feature/your-feature-nameThen create a Pull Request on GitHub!
β
Write clean, readable code - Others will maintain it
β
Comment complex logic - Explain the "why", not the "what"
β
Keep functions small - Single responsibility principle
β
Handle errors gracefully - Always assume things can fail
β
Write tests - Aim for 80%+ coverage on new code
// β
Good
async function sendRemittance(senderId, recipientId, amount) {
// Validate inputs
if (!amount || amount <= 0) {
throw new Error('Amount must be positive');
}
try {
const transaction = await stellar.sendPayment({
from: senderId,
to: recipientId,
amount: amount
});
return transaction;
} catch (error) {
logger.error('Failed to send remittance', { error, senderId, recipientId });
throw error;
}
}
// β Bad
function send(s, r, a) {
return stellar.sendPayment({ from: s, to: r, amount: a });
}Standards:
- Use async/await over callbacks
- Use const/let, never var
- Use meaningful variable names
- 2-space indentation
- ESLint compliant
// β
Good
#[contract]
pub struct EscrowContract;
#[contractimpl]
impl EscrowContract {
/// Creates a new escrow with specified conditions
///
/// # Arguments
/// * `env` - Contract environment
/// * `sender` - Address initiating escrow
/// * `recipient` - Address receiving funds
/// * `amount` - Amount to escrow
pub fn create_escrow(
env: Env,
sender: Address,
recipient: Address,
amount: i128,
) -> Result<EscrowId, EscrowError> {
// Implementation
}
}
// β Bad
pub fn create(e: Env, s: Address, r: Address, a: i128) -> EscrowId {
// No docs, unclear parameters
}Standards:
- Document all public functions
- Use Result types for error handling
- Write comprehensive tests
- Follow Rust naming conventions
// β
Good - Parameterized queries
const user = await db.query(
'SELECT * FROM users WHERE id = $1',
[userId]
);
// β Bad - SQL injection risk
const user = await db.query(
`SELECT * FROM users WHERE id = ${userId}`
);We follow Conventional Commits for clear, semantic commit history.
<type>(<scope>): <subject>
<body>
<footer>
- feat: New feature
- fix: Bug fix
- docs: Documentation changes
- style: Code style/formatting (no logic change)
- refactor: Code refactoring
- test: Adding/updating tests
- chore: Maintenance tasks, dependencies
feat(wallet): add multi-signature wallet support
Implements multi-sig wallets allowing 2-of-3 approval for transactions
over $1000. Includes Soroban contract and UI components.
Closes #123
---
fix(sms): resolve Twilio API rate limiting
Implements exponential backoff and queuing for SMS notifications
to handle rate limits gracefully.
Fixes #456
---
docs(api): add OpenAPI documentation for transaction endpoints
Closes #789β
Use imperative mood - "add feature" not "added feature"
β
First line < 72 characters - Keep it concise
β
Reference issues - Use "Closes #123" or "Fixes #456"
β
Explain why - In body, explain motivation for changes
- Code follows our style guidelines
- All tests pass locally
- Added tests for new functionality
- Updated relevant documentation
- Commit messages follow guidelines
- No merge conflicts with main branch
When creating a PR, include:
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
How did you test this?
## Screenshots (if applicable)
Add screenshots for UI changes
## Checklist
- [ ] Tests pass
- [ ] Documentation updated
- [ ] No breaking changes (or documented)
## Related Issues
Closes #123- Automated checks - CI/CD must pass (tests, linting, build)
- Code review - At least 1 maintainer approval required
- Testing - Reviewer tests functionality
- Merge - Maintainer merges when approved
Typical timeline: 2-5 days for review
- Be patient - reviewers are volunteers
- Respond to feedback constructively
- Ask questions if feedback is unclear
- Make requested changes promptly
P0-critical- Security issues, app-breaking bugsP1-high- Important features, significant bugsP2-medium- Normal priorityP3-low- Nice-to-have improvements
good-first-issue- Perfect for newcomersbeginner-friendly- Learning opportunityintermediate- Some project knowledge neededadvanced- Requires deep expertise
bug- Something isn't workingfeature- New functionalityenhancement- Improve existing featuredocumentation- Docs need improvement
frontend- UI/UX, web appbackend- API, server, databasesoroban- Smart contractsmobile- React Native appdevops- Infrastructure, CI/CD
help-wanted- We need contributorsin-progress- Someone is working on thisblocked- Waiting on dependencywontfix- Not planned to fix
-
Discord - Join here
#general- General discussion#dev-help- Ask for development help#feature-ideas- Discuss new features#showcase- Share your work
-
GitHub Discussions - Long-form technical discussions
-
Twitter - @StreamLineApp
-
Monthly Community Calls - First Tuesday of each month
Stuck on something?
- Check documentation and wiki
- Search existing issues
- Ask in Discord
#dev-help - Create a new issue with
questionlabel
We're here to help - no question is too basic!
We value all contributions! Contributors get:
- π° Drips funding - Earn based on contributions
- β Listed in README - Public recognition
- π Learning opportunities - Mentorship from experienced devs
- π Portfolio project - Build something that matters
- π€ Community - Connect with developers worldwide
Never contributed to open source before? We're excited to have you!
- Browse
good-first-issuelabel - Comment "I'd like to try this!"
- Ask for guidance - We'll help you through it
- Submit your PR - No matter how small!
Every expert was once a beginner. We all start somewhere!
Every contribution, no matter how small, makes a difference. You're helping:
- Families stay connected across borders
- Workers keep more of their hard-earned money
- Communities thrive despite distance
Together, we're building something beautiful. Welcome to StreamLine! π