I need a full written specification for an iphone App that a programmer can take and implement (later probably also Android and iPad, the design should take this into consideration and comment where needed about it). The app needs server communication and it should include the server sided specification, too. The server sided development got to be in Perl or PHP and mysql database based (but as it is design only that should be flexible still at this stage, though I don't mind if mysql features are presumed in the design). It should include the specification for the data model and the data protocol. The specification should also detail out alternatives in the design with advantages, disadvantages e.g. faster but more coding effort.
The apps purpose is to send someone else permanently its own position. Normally only when significant position change happened but this can be changed in the settings. The other person can only get the positions if he/she has the secret code. The secret code is generated server sided and valid only for lets say 5 minutes. Should be something like a 4 character string e.g. 5XZ9
So for further explanation: User 1 is the sender. User 2 is the receiver.
User 2 can see the current position on a map. User 2 can see the earlier positions if requesting it up to a limit (e.g. last 20 position). User 2 can see when the User 1 moved (time/date). User 2 does not need to be online all the time unless User 2 is also a sender of data. User 2 must be identified somehow but I do not want a login screen. It must just work.
User 1 has the program in background and still updates the position. User 1 can go on hiding mode and suspense the update. User 1 can see who allowed to see his position and can cancel the subscription. User 2 needs to be notified about it. Notification does not only mean the usual notificiation, which the user may switch off.
User 2 can choose to get notification pop-ups if user 1 changes its position can switch it off however. Here I needs some background information how this works on Android and maybe Blackberry.
The communication to the server must be very, very secure. The design must include a suggestion of what library to use for the server communication and what underlying protocol to use. I assume it is a HTTP communication because the server will be an off the shelf hosted internet address, that is why PHP/mySQL is suggested. But showing pro and cons of alternatives would be appreciated.
The design must also include what to do if User 1 goes offline. How is information still updated to the server once the user goes back online. The whole error handling for bad communication, timeouts etc. must be designed. The app got to be very smooth and I do not want endless amounts of pop-ups saying the communication did not work. Rather I have a little status window or something that is telling the status of current communication.
The design must suggest the storyboard and a design of the iphone app screens. It should include the classes that are needed and the object model for storeing data. I am an iPhone developer, so I will be able to decide if this is all proper, the design must be detailed and technically correct.
The server sided data model must include specifics about the tables and the columns and data-types and which indices and so on.
The server sided design should break down what modules are needed. Also the design should suggest a testing environment to easily test out the server side.
The specification is expected in MS Office Word Format in a professional template. Graphical designs of core concepts would be appreciated, then it should be a standard like UML.
The design should mention details like how source is controlled (svn, cvs?)