Designing the clone
With the features we want for the clone well defined, let's delve into the functional design of our Twitter clone. We will be building a clone of Twitter called Tweetclone, which we will be hosting at the domain http://tweetclone.saush.com. Tweetclone contains a minimal feature set that is just enough to implement a simple Twitter clone.
Posting statuses
Let's start off with the main entity in the application. Tweets, generically known as statuses, are freely viewable by everyone. Each user must be logged in to post a status update (or to tweet) as in any normal blog. This means status updates belong to only one user at a time. This also means that we need a user to be registered and logged in (authenticated). Although this statement is simple, it is really quite crucial—it means we need to have a user authentication mechanism, unlike in Tinyclone in the previous chapter, where anyone can use it without logging in.
For many Internet applications, the username is not an important...