This post will detail the basic components and architecture of the planned system.
LeapIn.it is aimed primarily at mobile devices. A major issue with developing for mobiles is the proliferation of mobile devices – to reach 90% of active mobile users, more that 330 devices must be considered. The differences between these devices include screen-size, inputs, programming language and architecture. For example, iPhone requires apps be built using Objective-C, while Android required apps to be in Java. Designing for such a vast number of mobile devices thus creates a challenge.
One solution to this, which we intend to pursue, is to use the Web as a platform. By building LeapIn.it as a web-based app, the app may be accessed within mobile web browsers, which addresses the problem of implementation disparity. Through using HTML, CSS and JavaScript, and through using web design responsive to different screen-sizes, developing for many mobile devices becomes less demanding. Furthermore, there is a selection of tools which are able to “wrap” web-based apps, such that they appear as native applications. Apache Cordova, Adobe Phonegap and Appcelerator are examples of this. Apache Cordova is free and open source, so we will use this to create native apps.
One component of LeapIn.it which can be immediately identified is the client. The client is the web-based application which the user will access. However, the data on users, rooms etc will need to be stored somewhere. A server is ideal for this – the data is stored centrally to ensure it can be accessed by everyone (within the constraints of permissions). The server consists of a database and an interface to the database which the client can use to retrieve data.
However, centralised architectures do present a number of issues:
To address these issues, we would suggest that, as future work, LeapIn.it move to a more decentralised architecture, perhaps inspired by peer-to-peer systems such as bittorrent or diaspora. But this is a vast field of research in itself, and will need to be considered at length.
Our server-client architecture is thus formed as below:
In order to ensure a robust implementation, we will build on existing tried-and-tested technologies: