- You must be a company i.e. you must be able to send us a pre-invoice (quote) and also an invoice after payment is made.
- Ability to communicate well in English
- Excellent Blackberry programming skills
- The Smart Client must be tested on real Blackberry devices and must be fully functional without bugs.
- Native Blackberry code (no HTML5)
We will not pay the provider upfront. Most of the funds will be released upon completing the project.
Detailed technical specification:
A detailed technical specification will be provided after signing an NDA.
We are looking for a company to create a Smart Client program (Client side of a Rich Internet Application solution) for Blackberry devices.
Note that this is not a ‘static’ application with predefined windows. Only the Login Screen is static, all other windows are being dynamically created based on XML data streams that the Client receives from the Server.
The Smart Client needs to:
a) Receive the application GUI definition (in a predefined XML format) from the Server, and render the GUI using Blackberry native controls.
b) Be able to interact with the Server-side application by sending application events to the Server (in an XML format).
Predefined RIA User Interface Markup Language (UI XML) language format:
The RIA XML language is used to communicate between the Client and Server. The XML specification defines approximately 200 UI elements/properties, application events etc.
The XML has the following structure:
<-Property Name 1->Value….<-Property Name n->Value
e.g. <-WindowTitle->My Window<-NewControlType->Button<-ControlText->Insert
Typical Control types that the Client needs to be able to ‘draw’ using native Blackberry controls: BUTTON, ENTRY, LISTBOX, CHECKBOX, IMAGE, TEXT, etc.
The following example describes a typical Application User - Client - Server interaction loop. Note that Steps performed on the Server side are not part of the project but description is provided for better understanding.
Step 1. (on an Blackberry device): User starts the Client program
The User launches the Client program. A Login Screen appears, asking for login info. The Client sends this info to the Server in a predefined XML format.
Step 2. (on the Server side): User authentication / Application list
The Server authenticates the User and sends a list of applications back to the Client.
Step 3. (on an Blackberry device): User picks an application
The Client receives this list (in XML format), and presents it to the User.
The User selects an application. The Client sends information about this event to the Server (in XML format).
Step 4. (on the Server side): Application started, scanned and transferred
The Server receives information from the Client and launches the appropriate application.
The Server ‘scans’ the application UI elements and sends it to the Client (in XML format).
Step 5. (on an Blackberry device): Client renders the Application GUI
The Client receives the application UI definition, parses the XML string and renders the application GUI using native BLACKBERRY controls.
Step 6. (on an Blackberry device): User performs an action
When the User performs an action, for example clicks a button, the Client sends information about that action to the Server (in XML format).
In other words, the Client must ‘listen’ to all window events, and when an event happens, it must send information about that event to the Server.
Step 7. (on the Server side):
The Server receives the window event, and performs the exact same action on the Server-side application instance. If there is a visual change in the application GUI, the server will send a new XML data stream to the Client.
Related projects with the objective of creating a Client for the iPhone/iPad, Android and Windows Phone platforms (in the same Server/XML ecosystem) are posted.
Check out related projects:
Things to consider:
- The final product must be polished and well tested, quality is very important
- Source code must be properly commented
- Program must be deliver with proper technical documentation
- Complete source code and full copyrights must be provided, as stated in the Contract