Skip to content

system design

Zhoubing Yang edited this page Jan 22, 2020 · 5 revisions

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

Clone this wiki locally