Many modern mobile applications are actually just websites that the app displays in a simplified browser window. This means that while software can be easily updated and is immediately cross-platform, access to device hardware is limited, and of course an internet connection is required to use the app.
Traditionally the screens for these web apps would be written with HTML, CSS and JavaScript, and the dynamic data provided by server-side technologies. When a page is loaded, data is pulled from a database and the page’s HTML is created from this. Only being able to load new data when a page is refreshed is a huge limitation, and increasingly websites employ technologies such as AJAX to mitigate this problem.
Over the last two weeks I have been involved in a project with Ravensbourne, New York design institute PRATT and the National Maritime Museum to create a prototype interactive installation. I chose to use a new web framework — Meteor — that addresses the problems of traditional web development by allowing you to build both the client and server sides of a web application in JavaScript. All the data synchronisation is managed by Meteor, providing ‘reactive’ data on multiple screens. When the data in the database changes, all the client pages are automatically updated.
This is a very powerful tool, particularly for rapid prototyping. In just four days of coding the students — with very little prior software development experience — were able to build and deploy a working prototype of a treasure hunt game, and wrap this website in an iPhone app. You can play the game here (click on ‘Tom Binnacle’ to play), see how it was made and check out the code.
Meteor’s documentation and examples are excellent and the community is very helpful. There is a Meetup in London where beta testers meet every month to share demos and compare notes.
Frameworks like Meteor are the future of dynamic web applications, but there is still a long way to go for mobile apps. You can’t beat a native mobile app for performance and flexibility, but the iOS and Android APIs could learn a lot from the reactive data model that Meteor provides.