Thank you for your interest in contributing to vLottoIDX! This document provides guidelines and instructions for contributing to the project.
Be respectful and constructive in all interactions. We're building something together.
Before creating a bug report, please check existing issues to avoid duplicates.
To report a bug:
- Use the GitHub Issues page
- Include a clear title and description
- Provide:
- Your OS and version
- Verus daemon version
- Steps to reproduce the issue
- Expected vs actual behavior
- Error messages or screenshots if applicable
- screenshots are very helpful
- Check if the feature has already been suggested
- Open a new issue with the "enhancement" label
- Clearly describe the feature and its use case
- Explain how it benefits vLottoIDX users
- Include screenshot if applicable
# Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/vlottoidx-tauri.git
cd vlottoidx-tauri
# Install dependencies
npm install
# Start development
npm run tauri:dev- Fork the repository and create your branch from
main - Follow the architecture:
- ALL RPC logic must be in the Rust backend (
src-tauri/) - Frontend (
src/) should never handle RPC credentials - Use the existing modular structure for new features
- ALL RPC logic must be in the Rust backend (
- Before submitting:
# Run all quality checks npm run lint npm run type-check npm run format:check npm run rust:check npm run rust:clippy - Commit messages should be clear and descriptive
- Update documentation if you change functionality
- Test thoroughly with a running Verus daemon
- Use TypeScript for all new code
- Follow the existing Svelte 5 patterns
- Use Tailwind CSS for styling
- Maintain type safety with
verus-typescript-primitives
- Follow standard Rust conventions
- Use
cargo fmtbefore committing - Address all
cargo clippywarnings - Handle errors properly with descriptive messages
-
Security First
- Never log sensitive data (passwords, private keys)
- Use OS keychain for credential storage
- Validate all inputs in Rust before RPC calls
-
Separation of Concerns
- Rust backend: RPC communication, credential management, security
- Svelte frontend: UI, user interaction, display logic
- Clear module boundaries for marketplace, identity, wallet features
-
Async/Await
- Use async patterns throughout for non-blocking operations
- Proper error handling for all async operations
- Test with both VRSC mainnet and VRSCTEST testnet
- Verify offline functionality (app should handle daemon being down)
- Test error scenarios (wrong password, daemon not running, etc.)
Feel free to open an issue for any questions about contributing. We appreciate your help in making vLottoIDX better!
By contributing, you agree that your contributions will be licensed under the MIT License.