The uPod Service

Written by sven. Posted in preview

Though the first release of the uPod app is still far away, I want­ed to use the oppor­tu­ni­ty to let you know about the progress I am mak­ing. As I’ve already have a quite com­plete idea of how the user inter­face will look and work like I’ve decid­ed to devel­op the app bot­tom up — mean­ing I start with the stor­age and syn­chro­niza­tion stuff, so that I can use real data when work­ing on the user inter­face. This also implies, that it will take some time until I can pro­vide you the first screen­shots of the app.

Today I want to tell you a lit­tle bit about the uPod ser­vice. Though you will nev­er see it when using the app, it is a very impor­tant part of uPod. As a for­mer user of Google read­er and an own­er of an Android phone and tablet I want to have full syn­chro­niza­tion across all my devices right from the begin­ning. For exam­ple at home in the evening I want to use the big screen of my Nexus 10 to scan through new pod­cast episodes and add them to my library and playlist and when I am on my way in the morn­ing I want to lis­ten to this playlist on my Galaxy Nexus.

To make this pos­si­ble my sub­scrip­tions, episode library and playlist need to be stored in the cloud and my devices need to syn­chro­nize with this stored infor­ma­tion. And this is where the uPod ser­vice comes on to the scene — it will be run­ning in the cloud and store all the infor­ma­tion required by my devices includ­ing my sub­scrip­tions, my library, playlist (includ­ing episode order­ing) play­back posi­tions and gen­er­al lis­ten pref­er­ences. The ser­vice is also respon­si­ble for check­ing the sub­scrip­tions of all users for new episodes and push­ing them to our uPod inbox­es. Keep­ing this log­ic on the serv­er helps to reduce the syn­chro­niza­tion log­ic and the amount of data to be trans­ferred dur­ing a sync on the mobile device. Final­ly the uPod ser­vice pro­vides a web ser­vice API which is used by the uPod app to access all the required infor­ma­tion and push back changes.

Now you may ask how the authen­ti­ca­tion against the uPod ser­vice works? That’s sim­ple: When start­ing the uPod app for the first time you will get an account pick­er pro­vid­ing you all your google accounts. Sim­ply select one of them and all your uPod infor­ma­tion will be linked to your google account — no need to cre­ate anoth­er account and select anoth­er user­name and pass­word.

The good news is that the imple­men­ta­tion of the ser­vice is near­ly fin­ished and it is work­ing well. For the devel­op­ers among you who are inter­est­ed in the tech­ni­cal details: The uPod ser­vice pro­vides a REST like web ser­vice API and is imple­ment­ed using the pro­gram­ming lan­guage Scala and the Play 2.1 frame­work. Mon­goDB serves as the stor­age back­end for the ser­vice.

Next I will start work­ing on the uPod app, start­ing with it’s stor­age and syn­chro­niza­tion lay­er. I guess it will require a com­pa­ra­ble effort like imple­ment­ing the uPod ser­vice. Stay tuned!