[GSoC 2014] Proposal : Android App & GCM plugin
Clone this wiki locally
Personal Info :
ULB (Université Libre de Bruxelles)
Level with Java/Android :
Level of PHP/SQL/js :
Version Control :
git & GitHub.
I offer to work on both an Android Smartphone/Tablet app and a GCM plugin for ThinkUp.
Google Cloud Messaging integration
Google provides instructions to integrate GCM inside ThinkUp's PHP code. I suggest going with an HTTP server since we don't need the app to respond back to ThinkUp. The app will require some permission to access the user's notification key (see developer.android.com) and send it to ThinkUp so we can store it in some database. From there Thinkup just needs to send a request to Google with the key.
Note : going with GCM prevents us from pushing notifications to AOSP & Amazon devices. However GCM has proven itself as an extremely reliable and efficient cloud messaging service. If you prefer to go with Amazon SNS or any other similar service that's of course conceivable.
Android App Design
The app will contain a single activity containing a series of fragments, an action bar and a drawer menu. The menu will include at least 3 rows but can expand if multiple accounts are used. I will take care of the design (layouts, colors, general aspect, etc.) which will be flat and sober, as recommended in the Google design guidelines.
- The main fragment will be the Timeline fragment. Similarly to the web interface, the timeline will display a series of insights. The insights in the ThinkUp app will need to behave exactly like on the website and be built from the same code. The timeline will include a "pull to refresh" feature.
- The second fragment will be the Browse fragment, for when the user wants to look at a friend's timeline.
- The third fragment will be the Settings fragment. Only a few settings will be available, we don't want to overwhelm the user with choice.
- If the user is logged out (or when the app is launched for the first time) the user will see a nice & slick login screen.
- The ThinkUp app will support Multiple Sign-Ins. To sign in with another account, the user will press the "+ Add Account" row inside the drawer menu. Each account will take one row in the menu. On the right, the number of new insights is displayed. This means the size of the menu may vary.
- It will be necessary to create a custom view : InsightView.java. Possibly based off of cardslib.
- Some insights include an iFrame to display contents (e.g. tweets). Those will probably need to be displayed using webviews.
- The web version of ThinkUp uses the Google Graph API to illustrate various insights. This app will need to implement a Java API to properly reproduce those graphs in native code. Such APIs can be found on GitHub. Before that's implemented, the graphs will simply be displayed using using webviews.
Here are some really quick sketches I made with The Gimp :
The app will need to declare the necessary permissions, services & broadcast receivers to be alerted when the device receives a push notification from Google. This shouldn't take too long to implement.
Time per week:
I have exams in June. At that point I'll be able to work about 10 hours a week for the first 3.5 weeks.
However starting June 12th, I'll have a lot more free time and will spend 7 hours a day on average (including on week-ends if necessary) working on ThinkUp.
This brings us to a total of about 400 hours.
I'll take the day off on August 16th. That's it.
Availability for daily discussion:
Anytime from 9am to 3pm EDT.
Being part of a team and collaborating on an open source project is something I haven't experienced yet and I'm very excited to do so. GSOC seems like a great opportunity to do just that.
On top of that, having followed your progress for some time now, I have to say that ThinkUp really looks like a promising, exciting company and I would be delighted to be a part of this adventure.
I believe that I posses all the necessary qualification for this job, as an experienced mobile developer, equipped with technical skills, good eye for detail, passion for open source and great familiarity with the Android ecosystem. I invite you to take a look at my Android app: QuickLyric. (If you want me to send you an .apk, feel free to ask).