This is a project to create a web application that allows users to create songlist based on their music taste.
All the music data is from server side APIs.
- Backend: Rust
- Frontend: React.js
- Database: SqLite
- User can create a songlist based on their music taste.
- User can add songs to their songlist.
- User can remove songs from their songlist.
- User can search for songs and add them to their songlist.
- User can view their songlist.
- User can edit their songlist.
- User can delete their songlist.
Database: more detail see initdb
cargo run -p initdbFrontend:
cd web
pnpm buildBackend:
cargo run -p serverThe application will run on http://127.0.0.1:9090.
cargo build --release -p initdb
cp target/release/initdb ./run_initdb
./run_initdb
cargo build --release -p server
cp target/release/server ./build
cd web
pnpm build
cp -r dist/ ./build/web
cd ../build
./serverYou can also use Docker to build and run the application.
- change the config.jsonfile.
{
"ip": "0.0.0.0",
"port": 9090,
"music_dir": "/home/myapp/music",
"web_dir": "/home/myapp/web/dist",
"db_path": "/home/myapp/data/musicflow.db"
}- Run the following command to build the Docker image:
cd docker
./build_docker.sh
cd ../build
docker-compose up -d- 2024-12-24: Created the project structure, added the basic structure of the backend server.
- 2025-01-02: First version.
- 2025-01-07: Added the db initialization tool.
- 2025-01-11: Fixed genre operate.
- 2026-01-01: Version 2.0.0.
- Support subsonic api.
- Improve ui experience.
- 2026-01-03: Version 2.1.0.
- Web Media Session API(change AudioContext to Audio for support).
- Use Subsonic API for play queue.
- Loacl mode now no use database.
- scrobble feature
- 2026-01-04: Version 2.2.0.
- Home page design, more albums show.
- Local mode support scrobble and albums sort.
- Now change random songs to Daily recommed songs.
- 2026-01-05: Version 2.3.0.
- Start songs.
- Add song to playlist.
- Pwa support and new App Icon.
- Audio play detail page UI improvement.