A music app which provides personalised recommendations based on a user's listening habits and preferences. It will also offer a social component, allowing users to connect and share music with friends and no ADs.
Our music APIs source base on an open source NeteaseCloudMusicApi.
Our music player base on an open source program react-jinke-music-player.
We are using react-jinke-music-player as our player, it does not support playing audio stream file. Which means we have to accept whole audio stream file and convert to temporary blob file then play this blob file.
- Personalised Song Recommendations
- Great Streaming Quality
- Add Songs to Favorite
- Post comments of songs
- No ADs
- Login
- Login
- Logout
- Register
- Home
- Poster
- Random Recommendation (Base on your play history)
- Random Playlist (Base on public playlist)
- ...
- Playlist
- CURD
- Image upload
- Look public playlist
- Set private
- Favourite list
- History list
- Create/store playlists without logging in (only local)
- Player
- Play without login
- Play list
- Lyric
- Icon
- Order/Single/Random
- Light/Dark mode
- Minimize
- Audio stream player
- Search
- Singers
- Songs
- Albums
- Add to playlist
- comment (comment function is completed on Backend but not in Frontend)
- add a comment
- show comments
- exit a comment
- remove a comment
- like
- reply
- profile
- show my play list
- ...
- Global setting
- Personal style setting
- Language setting
- responsive (partially completed)
- others
- Docker deployment
- Electron cross-platform deployment
- Exmaple
- Home page
- My playlist
- My playlist
- Search a song
- Add a song to my player
- Random Recommendation
- Test Report (generated by mocha)
- React.js (Frontend framework)
- React-Bootstrap (Frontend ui-framework)
- React-paginate (Paginator)
- React-router (Router)
- React-jinke-music-player (Open source music player)
- axios (Http request)
- js-cookie (Sending cookie)
- Javascript (Programming language)
- Express.js (Backend framework)
- nanoid (Generate ids)
- mongoose (ODM)
- morgan (Test tools)
- supertest (Test tools)
- chai (Test tools)
- chai-http (Test tools)
- assert (Test tools)
- mochawesome (Generate report html document)
- nodemon (Hot reload)
- babel (convert commonjs std to es6 std)
# setup NeteaseCloudMusicApi
cd ./NeteaseCloudMusicApi
set PORT=4000 && node.js # Recommend Cmder terminal
# backend
cd ./MusicPlus/server
vi .env
# copy and paste
DB_URL=mongodb://127.0.0.1:27017/MusicPlus # database, required
NeteaseCloudMusicApi=http://127.0.0.1:4000 # Accessing NeteaseCloud APIs, required
BackendApi=http://127.0.0.1:3000 # For test module, Optional
# frontend
cd ./MusicPlus/client
vi .env
# copy and paste
VITE_BACKEND_BASE_URL=http://127.0.0.1:3000 # Backend API, required
# Server
cd ./NeteaseCloudMusicApi
npm install
node app.js
cd ./MusicPlus/server
npm install
npm server # localhost:3000 in default
# Client
cd ./MusicPlus/client
npm install
npm run dev
cd ./MusicPlus/server
npm install
npm run production
cd ./MusicPlus/client
npm build
cd ./MusicPlus/server
npm test # unit test
npm run mochawesome # generate test report in ./MusicPlus/server/mochawesome-report
We use notion to manage teams, assign tasks, and publish useful information. And use wechat, Tencent meeting for discussion every week.During the development process, in order to avoid conflicts, everyone has their own independent branch, which is merged into the dev branch after completing some functions. The dev branch will be merged into the main branch after proper testing. https://www.notion.so/74ceba8f885a4ae3bdfed33fd18562bd?v=e59565eeb2ec45aea246b3d252ea5bb5&pvs=4