RustTune is an open-source music streaming application built using Rust, focused on performance, safety, and scalability. This project demonstrates how Rust can be used to build real-world web applications while providing a smooth and interactive music experience.
- ⚡ High-performance backend using Rust + Actix Web 4
- 🏠 Responsive homepage UI (header, now-playing section, song list placeholders)
- 📦 Static asset serving via
actix-files(/static/*) - 🩺 JSON health endpoint at
/api/hello
- 🎵 Interactive music player (play / pause / seek / next / prev) — see open PRs
- 🎶 Songs API (
/api/songs) — see open PRs - 📂 Playlist creation and management
- 🔍 Search functionality
| Method | Path | Description |
|---|---|---|
| GET | / |
Serves the homepage (templates/index.html) |
| GET | /api/hello |
JSON health check |
| GET | /static/* |
Static CSS / JS / asset files |
- Backend: Rust, Actix Web 4
- Frontend: HTML, CSS, vanilla JavaScript
- Static serving:
actix-files - Version Control: Git & GitHub
- Rust (stable, edition 2021) — install via rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Cargo (bundled with Rust)
- Git
Verify your installation:
rustc --version
cargo --versiongit clone https://github.com/KDeekshita/rust-tune.git
cd rust-tunecargo buildcargo runYou should see:
Server running at http://127.0.0.1:8000
Visit http://127.0.0.1:8000
rust-tune/
├── Cargo.toml # Rust dependencies
├── README.md
├── src/
│ └── main.rs # Actix Web server + routes
├── static/
│ ├── css/style.css # UI styling
│ └── js/script.js # Music player logic
└── templates/
└── index.html # Homepage
Contributions are welcome and appreciated! Please follow the steps below.
Fork the repository on GitHub, then clone your fork:
git clone https://github.com/<your-username>/rust-tune.git
cd rust-tune
git remote add upstream https://github.com/KDeekshita/rust-tune.gitUse a descriptive name with a prefix:
feat/<short-description>— new featuresfix/<short-description>— bug fixesdocs/<short-description>— documentationrefactor/<short-description>— code cleanup
git checkout -b feat/your-feature-name- Keep changes focused — one feature/fix per PR.
- Run
cargo fmtandcargo clippybefore committing. - Make sure
cargo buildandcargo runsucceed.
feat: add volume slider to player
fix: prevent crash when audio src is empty
docs: clarify installation steps
git push origin feat/your-feature-nameThen open a PR against main of KDeekshita/rust-tune. In the description:
- Reference the related issue (e.g.
Closes #12). - Summarize what changed and why.
- Add screenshots/GIFs for UI changes.
A maintainer will review your PR. Please respond to feedback and keep the branch up to date with main:
git fetch upstream
git rebase upstream/mainBe respectful, inclusive, and constructive. Harassment of any kind will not be tolerated.
Open a GitHub Issue with:
- A clear title
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- Screenshots / logs if relevant
RustTune is designed to:
- Help developers learn Rust through practical implementation
- Provide a beginner-friendly open-source project
- Demonstrate how to build scalable web applications
- Encourage collaboration in open source
- Beginners who want to learn Rust 🦀
- Developers interested in web development
- Open-source enthusiasts