First off — thank you! 🎮 Whether you're fixing a typo or building a whole new feature, every contribution helps make R-Shop better. This project is maintained by a solo developer who is learning as they go, so patience and kindness are appreciated.
- Check existing issues to avoid duplicates
- Open a new issue with:
- A clear title
- Steps to reproduce the bug
- What you expected vs. what happened
- Your device info (Android version, device model)
- Screenshots or screen recordings if possible
Open an issue with the Feature Request label. Describe what you'd like and why it would be useful.
- Fork the repository
- Create a branch from
main(git checkout -b feature/your-feature) - Make your changes — try to keep commits focused and descriptive
- Test on a real device if possible (this app is designed for Android handhelds)
- Open a Pull Request with a clear description of what you changed and why
- Follow standard Dart/Flutter conventions
- Keep widgets focused — one widget, one job
- Use Riverpod for state management (the existing pattern)
- Comment any non-obvious logic
- 🐛 Bug fixes and stability improvements
- 🎨 UI/UX polish and animations
- 🎮 Controller input improvements (D-pad navigation, gamepad support)
- 📱 Testing on different Android devices and handhelds
- 📝 Documentation and guides
- 🌍 Translations / localization
- Install Flutter (SDK ≥ 3.0.0)
- Clone the repo
- Run
flutter pub get - Connect an Android device or emulator
- Run
flutter run
Be kind, be respectful, have fun. We're all here because we love retro gaming. 🕹️
By contributing, you agree that your contributions will be licensed under the MIT License.