system design - 540376482yzb/cloud_mu_player GitHub Wiki
Data
MusicItem {
_id:int,
title:str,
src:{
key:str,
bucket:str
}
}
Music_PLaylist_Item {
_id: int,
musicItemId:int,
playlistId:int
}
PlaylistEntry {
_id:int,
title:str,
music: MusicItem
}
Playlist {
_id:int,
title:str,
list:[PlaylistEntry],
status:'draft' | 'published'
}
Services
MusicService {
uploadToS3(file) {
return {key,bucket}
}
add({key,bucket})
modify({title})
searchMusic(filter)
}
PlaylistService {
create({title, list})
modifyById(_id,{title,list})
getPlaylistById(_id)
searchPlaylist(filter)
}
Tech choice for back-end service
- GCP could function for web services and file storage
- Postgres for the database
Platform
- mobible app
- web client
- GCP serverless back-end