The competition mechanism is as follows:
- User first authorizes the Facebook Application to get his Basic Information and Email.
- User lands into a page requesting him to invite his friends. User needs to click this to continue.
- Then user can choose the friends to share with, or skip.
- In both cases, user lands into the competition tab, with 4 tabs: user can participate in the promotion in 2 ways: entering a tip, or voting.
Entering a tip:
- On "post and win" tab users can enter a tip up to a pre-set number of characters TipLength (should be set in config), and then submit.
- A submitted tip will be registered and accessible only to admin first. Admin needs to review and accept, then it will enter the available tips database.
- Tips in the database will be available for voting.
- Tips that a user have submitted will be available for him to review "your ranking" tab, together with the vote that those tips have got, and the ranking of that tip (ranked by number of votes). The top 3 of those will be also available on the "post and win" tab.
- Users can make DailyVotes (in config) number of votes daily.
- On the "vote and win" tab, the user is presented randomly with 4 tips to vote for... once the user has voted for one tip, the tip in question disappears, the remaining tips rearrange to the top, and one new tip is put in the bottom part. This goes on until the 10 tips have been voted for.
- One the 10 votes have been done, a message "you have used all your 10 votes of the day" will appear.
The suggested database design is as follows:
- user table containing all the information about user. This will include information about whether user did invite friends in the beginning when he was invited to do it, so that we don't invite him again if he happens to request authorization again.
- tips table containing all the tips that have been submitted... the table will contain the id of the user who deposited the tip, as well as number of yes votes and no votes, number of shares.
- votes table which will store all the votes done... tip ID, together with the voter id, and timing of the vote.
Additional remarks and modifications of the above:
- The tips will be shown together with the name and the facebook image of the person who left the tip, in the "vote and win" and "your list" tab.
- The "invite your friends" page will be not appear just after authorization as mentioned earlier, but after the user posts the first tip in "post and win" or after finishing the DailyVotes number of vote for the first time (it should show on the same page in the place of the tips). The "invite friends" is the standard facebook friends invitation, which looks like the attached. As mentioned earlier, this should be suggested to the user only once in a lifetime, and hence we should put a flag for it on the user table in the database.
- The Facebook Authorization request should be on the main Facebook window and not as a pop-up.
- We need to add one table where we track all the sharing actions done by user on tips. The "share" is just posting on your own wall of the tip in question, together with the name of the tipper. The table will have: tips ID, user ID who shared, timing... is it possible to know whether he completed the sharing or cancelled it ? This table will help us track the sharing.
- Finally, as mentioned below, the tips need to checked by an admin when entered, before they are available for users. For this, we need to have a simple html interface where the admin logs in using a username and password (set manually directly on the database), and then be presented all the new tips that requires authorization. He can chose "accept" or "refuse". Both actions require confirmation before being accounted for. "accept" authorizes the tip for users to see. "refuse" hides the tip... and will not be shown anymore to admin.
- All the pages of tips competition will be visible only to those who like the page.