Thank you for your interest in contributing to SeerrTV! This document provides guidelines and instructions for contributing to the project.
If you find a bug, please create an issue with:
- A clear title and description
- Steps to reproduce the issue
- Expected vs. actual behavior
- Screenshots if applicable
- Device information (Android TV model, Android version)
- App version (found in Settings > About)
Feature requests are welcome! Please create an issue with:
- A clear description of the feature
- Use case and motivation
- Potential implementation ideas (optional)
- Fork the repository and create a feature branch
- Make your changes following the code style guidelines
- Test your changes on an Android TV device or emulator
- Update documentation if needed
- Submit a pull request with a clear description of changes
- Follow Kotlin Coding Conventions
- Use 4 spaces for indentation
- Maximum line length: 120 characters
- Prefer explicit types for public APIs
IMPORTANT: This is an Android TV application. Follow these critical rules:
- Do NOT use
onClickmodifiers - Android TV uses D-pad navigation, not touch - Do NOT use
focusable()orclickable()modifiers for navigation - Use the custom navigation component - All navigation must go through the D-pad navigation system
- Test with a TV remote - Always test navigation with D-pad controls, not mouse/touch
- Focus management - Ensure all interactive elements are focusable and properly handle focus state
- Use
@Composablefunctions for UI components - Follow Material Design 3 principles
- Optimize for TV screen sizes and viewing distances
- Ensure proper focus indicators and visual feedback
- Use MVVM pattern with ViewModels
- Dependency injection via Hilt
- State management with StateFlow/Flow
- Navigation via Jetpack Navigation Compose
- Test on physical Android TV device when possible
- Test on Android TV emulator (minimum API level 25)
- Verify D-pad navigation works correctly
- Test with different screen sizes and resolutions
- Verify accessibility features work
- Android Studio Hedgehog or later
- JDK 17 or higher
- Android SDK with API level 25-36
- Android TV emulator or physical device
# Clone the repository
git clone https://github.com/devmesh-git/seerrtv.git
cd seerrtv
# Build debug APK
./gradlew assembleDirectDebug
# Build release APK
./gradlew assembleDirectRelease- Copy
tv/browser-config.properties.templatetotv/browser-config.propertiesand customize if needed - For release builds, configure signing (see
SIGNING_SETUP.md)
Follow Conventional Commits format:
feat: Add new feature description
fix: Fix bug description
docs: Update documentation
style: Code style changes (formatting, etc.)
refactor: Code refactoring
test: Add or update tests
chore: Maintenance tasks
Examples:
feat: Add filter by genre functionalityfix: Resolve D-pad navigation issue in settings menudocs: Update README with setup instructions
- All PRs require at least one review before merging
- Address review comments promptly
- Ensure CI checks pass
- Keep PRs focused - one feature or fix per PR
- Update CHANGELOG.md for user-facing changes
If you have questions about contributing, please:
- Check existing issues and discussions
- Create a new issue with the
questionlabel - Join the Seerr Community Discord for discussions and support
Thank you for contributing to SeerrTV!