Build a "Delayed Tweet" Application
An application to send delayed Tweeds to twitter.
The user will be able to queue up up to 50 Tweets. He can set the number of Tweets he want to post per a) Morning (8-12h), b) Afternoon (13-17h) c) Evening (17-22h). The server then posts the desired number of tweets from the queue during the desired timespan(s).
Example: I want 1 Tweet in the morning, 2 in the afternoon and 3 in the evening. I have w Queue with a few dozen Tweets. At a random point during the morning the Application will fetch the first Tweet from the queue and post it to Twitter. At two different Points in Time during the Abternoon it will fetch the next Tweet from the queue and post it to Twitter. And so on.
Application must:
* Allow multiple users att he site
* New users can authenticate at twitter using OAuth (see [login to view URL])
* New users need no or only minimal sign up at our site besides the Twitter OAuth procedure
* Application should have a single page design offering:
* Allow to Queue up 50 Tweets using a Ajax Interface
* Allow reprioritisint the Tweets using drag and Drop
* Allow to set the number of tweets for Morning, Afternoon and Evening via an Ajax interface
* A daemon process should handle the posting and must be able to retry if rate limiting happens (see [login to view URL])
* Should you find yourself in need of messaging use RabiitMQ (I think the application can be designed without)
* Select display a different random Follower choosen from all followers on that account on each page load. (This needs caching the twitter API responses). This feature is for Lottery function: "We give a gift to a randomly choosen follower". E.G.: 1. Update stored list with recently added followers; 2. follower = [login to view URL](followers); 3, if follower has unfollowed us recently go to 1; 4. display follower;
## Deliverables
Django 1.0.x based application fulfilling above requirements and including a sepatate "posting daemon"
General Conditions:
* Follow [PEP 8][1], verify with [[login to view URL]][2]
* Follow [PEP 257][3] for docstrings
* No tabs. Not anywhere. Always indent with 4 spaces.
* Wrap at Line 109
* Use [pylint][4] aim for a score of at least 8.
* Write doctests where possible. Always write unittests. Aim for a [test coverage][5] of at least 80%
* Code should be targeted at Python 2.6 on FreeBSD/Linux
* if you need a Javascript Library, use jQuery
* Avoid non-native Python extensions where possible
* add a [login to view URL] file for use with pip and a [login to view URL] for the use with distutils
* Add CHANGES and README file with appropriate content. Target Audicnce are experienced developers and administrators.
* Add a Makefile with the targets test, coverage, check (pylint, pep8), install
* Webpages should be plain white HTML pages containing the needed forms/UI unless otherwise stated
* Use OpenSource Libraries where they are available
* Use PostgreSQL and SQLite. If you prefer you can use CouchDB instead.
* Copyright of the Code written by you for the project will be assigned to us
* During development you will not get access to our servers, accounts, resources. Installation will be handled by us according to the documentation we provided.
## Platform
Django 1.0, Python 2.6, jQuery 1.3, PostgreSQL