Challenge
iRewardChart wasalready a “Best Parenting App” for three consecutive years starting with 2010.Primary users of the app are obviously parents. It used Dropbox Data API tosynchronize the data across multiple devices. One of the very serious sharinglimitation was that the user need to sign in using the same account to Dropboxto enable sharing. Also, the API was reaching end of phase. Given theinevitable rework needed to rewrite the backend, Got Clues envisaged a largerreach of the app to baby care centers and tutors/mentors etc by enablingflexible sharing mechanism. The app is also required to support fully offlinemode.
Strategy
In the hunt of a suitable fully-offlinesupporting framework along with flexible data asynchronization capabilities, weevaluated multiple frameworks: Facebook’s Parse, Google’s Firebase, Couchbaseand Azure Mobile Services etc, and narrowed down to Azure Mobile Services.In-built authentication mechanism coupled with Facebook and Google OAuth loginsare decided to be enabled to bring majority of the users onboard with theproposed flexible sharing policy. There is one-time migration to be addressed,to fit into the big picture of the overhaul as the third important component.
Salient Features
Aim of the app is to bring a measurable systemto reward a child by guaging the tasks he/she performs over period of a week.Each child is setup for the current week with a set of tasks to guage against,and set of rewards he will be awarded with. Task can be “Help mom” carryingweight 3 or “Np talking back” carrying 5 etc. Reward can be as simple as buyingan ice cream, carrying 5 points on it’s head, to buying an XBox carrying athousand. Parent can choose to assign negative points to a task in case ofchild’s indulgence.
Child Management
● A child can be setup with defaultset of weekly tasks and concerning rewards.
● Children can be grouped into anyarbitrary number of “buckets”, for visual demarcation.
● A combined view of all theuser-owned children and shared children makes it easy to see all of themtogether.
Task Management
● Tasks has name, type and a defaultweight. Default weight can be customized to take any value from 1-star ton-star. Task can take any symbol like a trophy or a light bulb, etc.
● Task can be chosen from any of thegiven tasks accumulated across all the shared children’s tasks.
● If a task is coming from a sharedchild’s bucket, it will be cloned into the existing child’s
Chart Management
● Each child has a set of “current”tasks for a week. Tasks can be reordered in any way a user wants.
● Each task carries an “award/star”given by the parent against it for that week. This can go negative.
● Earlier weeks can be navigated toand be the respective weeks’ tasks can be awarded.
Rewards & Payout Management
● Given a sufficient number ofawards over the week or across all the previous weeks, child can be rewardedany number of proposed rewards, which deduct the respective reward weights fromthe accumulated stars.
● Rewards are fully customizable:weight, name can be anything that a parent wants.
● After payout, the balance amountof stars is shown, as well as the last 5 weeks’ awards info and the latest 5rewards info.
SyncMechanism
● Azure Mobile Services SDK gives anin-built mechanism to queue the changes to all the data models
● Leveraging that, we’ve tailoredour data models and their manipulations to comply with “any number of ownchildren can be shared” and “any number of shared children can be managed”principle.
● We’ve used polling mechanism toperiodically trigger synchronization which pushes first followed by pull.
● Tailor-made conflict resolutionmechanism is injected into Azure SDK to resolve multiple updates