We require the development of a messaging system that includes:
• module A : a smartphone application available in native on iOS, Android and Windows (the application must also have a good rendering on tablets)
• module B : a set of APIs for the smartphone application to connect and exchange data with the backend and database (module C).
• module C : a scalable backend and database
The smartphone application (module A) will be preferably developed using the latest version of Appcelerator Titanium.
The choice of the technology is not fixed yet but an option could be the following:
A server API built on a Linux platform using Node.js with publish/subscribe and clustering modules. Persistent storage will be based on the RIAK document database system. Communication will be based on the transfer of JSON documents over secure HTTP (HTTPS) and Websockets using REST architecture for API access.
The messaging system will be based on the Publish/Subscribe (pub/sub) pattern, where users can “subscribe” to updates on particular topics (categories) and have any new messages published to those categories pushed to the users device. Inversely, users can publish messages to particular topic/category “channels” which will, in turn, push (or publish) the new message to all subscribed users. The Pub/Sub Hub instantly pushes message updates to all subscribers.
User registration and authentication will be handled by Node.js. Session keys will be used to manage user authentication and access.
The scalable backend technology and architecture will be proposed by the subcontractor.
Some Key features
• Create a message and interact with device hardware to capture content:
− Images, photos and video from the camera roll
− Shooting with the camera
− Url (website, video on Youtube…)
− Audio recording from the microphone
• Open a message from scanning of a QR code that contains the Url of the message on the server, and then open the message on the smartphone
• Download and display a list of messages by categories, sections, keyword, time stamp, geolocation and/or language
• Open and display a message, its content, time stamp and geolocation (as available)
• User registration and authentication (optional for user)