Thank you for your interest in contributing to the Internet Radio application.
This project is built with Python and focuses on providing a simple, functional, and extendable internet radio player.
Contributions of all kinds are welcome — bug fixes, new features, UI improvements, documentation, refactoring, and architectural enhancements.
The Internet Radio project aims to:
- Provide a lightweight Python-based radio player
- Stream online radio stations
- Offer a simple and clean user interface
- Allow easy extension for playlists, favourites, metadata, and more
Understanding the structure will help you contribute effectively.
Although the structure may evolve, the typical layout includes:
main.py— Application entry pointradio_player/— Core playback logicui/— User interface components (if applicable)stations/— Station lists, presets, or configuration filesutils/— Helper functions and shared utilities
If your contribution affects multiple layers, keep responsibilities separated and avoid mixing UI, logic, and configuration.
git clone https://github.com/<your-username>/Internet_radio_python.git
cd Internet_radio_pythongit checkout -b feature/add-new-station-list- Keep functions small and focused
- Use clear naming
- Avoid unnecessary complexity
- Keep UI and playback logic separate
- Document new functions or modules
python main.py- Use type hints where appropriate
- Add inline comments when logic is non-obvious
- Follow existing formatting and style
- Avoid introducing global state
If you add new logic, consider adding tests to ensure stability.
git commit -m "Add support for station metadata parsing"git push origin feature/add-new-station-listThen open a PR on GitHub with:
- A clear description of your changes
- Screenshots (if UI changes)
- Notes on design decisions
- Use type hints where possible
- Keep functions pure unless side effects are required
- Prefer modular design
- Avoid duplicating logic
- Ensure streams are handled cleanly
- Avoid blocking the UI (if applicable)
- Handle connection errors gracefully
- Keep UI code simple
- Avoid mixing playback logic into UI components
- Keep layout readable and maintainable
When adding a new feature:
- Keep it modular
- Place new logic in the appropriate folder
- Avoid breaking existing functionality
- Document how the feature works
- Update README if needed
Before submitting a PR, ensure:
- Code runs without errors
- No obvious linter warnings
- Type hints are correct
- No unnecessary complexity
- New files follow naming conventions
- PR description explains the change clearly
Be respectful, constructive, and collaborative.
I welcome contributors of all experience levels.
If you're unsure where to start, feel free to open an Issue or Discussion.
I'd be happy to guide you through your first contribution.