Ways to Contribute
Report Bugs
Found a bug? Let us know
Suggest Features
Have an idea? Share it
Improve Docs
Help make our docs better
Write Code
Submit a pull request
Code of Conduct
We are committed to providing a welcoming and inclusive environment. By participating in this project, you agree to:- Be respectful and considerate
- Use welcoming and inclusive language
- Accept constructive criticism gracefully
- Focus on what’s best for the community
- Show empathy towards other community members
Getting Started
Prerequisites
- Python 3.12+ for backend development
- Node.js 22.x for TypeScript/frontend development
- pnpm 10.x for package management
- Git for version control
- uv for Python dependency management
Fork and Clone
Development Setup
Python Development
TypeScript Development
Smart Contract Development
Development Workflow
1. Create a Branch
Create a feature branch frommain:
feature/- New featuresfix/- Bug fixesdocs/- Documentation changesrefactor/- Code refactoringtest/- Test additions or fixes
feature/add-solana-supportfix/wallet-balance-syncdocs/improve-quickstart
2. Make Changes
Write your code following our style guidelines. Tips:- Keep changes focused and atomic
- Write tests for new features
- Update documentation as needed
- Add comments for complex logic
3. Write Tests
All new features and bug fixes must include tests. Python tests:4. Run Tests
5. Commit 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 Changes
7. Create Pull Request
Fill out PR template
Describe your changes, reference related issues, and add screenshots if applicable
Pull Request Guidelines
PR Template
Review Process
- Automated checks - CI/CD runs tests, linting, and type checking
- Code review - Maintainers review your code
- Feedback - Address any requested changes
- Approval - Once approved, your PR will be merged
- Keep PRs small and focused
- Write clear descriptions
- Respond to feedback promptly
- Keep your branch up to date with
main
Code Style Guidelines
Python
General Style
General Style
- Use Black for formatting (line length: 100)
- Use ruff for linting
- Type hints required for all functions
- Docstrings for all public functions (Google style)
Async Code
Async Code
- Use
async/awaitfor all I/O operations - Use
asyncio.gather()for concurrent operations - Handle exceptions properly
Error Handling
Error Handling
- Create custom exception classes
- Provide helpful error messages
- Use specific exception types
TypeScript
General Style
General Style
- Use Prettier for formatting
- Use ESLint for linting
- Strict TypeScript - no
any - Use Zod for runtime validation
Error Handling
Error Handling
- Create custom error classes
- Use discriminated unions for results
- Provide detailed error information
Solidity
General Style
General Style
- Solidity 0.8.x
- Use OpenZeppelin contracts
- NatSpec documentation required
- Gas optimization important
Running Tests Locally
Python Tests
TypeScript Tests
Smart Contract Tests
Documentation
We use Mintlify for documentation. Docs are in the/docs directory.
Building Docs Locally
Writing Docs
- Use MDX format
- Include code examples
- Add screenshots where helpful
- Link to related pages
Community
Discord
Join our community
GitHub Discussions
Ask questions and share ideas
Follow for updates
Connect with the team
License
By contributing to Sardis, you agree that your contributions will be licensed under:- MIT License - For SDKs, MCP Server, integrations, examples, and documentation
- Proprietary - For core infrastructure (if contributing to non-open-source components)
Questions?
If you have questions about contributing:- Ask in
#contributorson Discord - Open a GitHub Discussion
- Email [email protected]