There is no secret that today any developer that wish to built the next G+, Path, Instagram etc’ must think on two major aspects:
- Server Side / Cloud Service that she is going to use in order to create the API. Here we must answer some important questions like:
- What will I do if I get a huge spike in traffic?
- Will I need to manage it? Do I have to do it?
- How will I communicate with different clients?
- Which technology to use in order to store: data, state etc’
- Client side technology
- Web technologies: HTML5, CSS3
- Mobile native app: Android, iOS and Windows.
Modern Web App
It’s not an easy definition since web technology is running very fast. Nevertheless, we can find certain features across successful web apps:
- Self Contained & Functional– They all have one specific goal and they do their best to provide the users the functionality to get to her goal. Few examples:
- New York Times – Consume news.
- Hipmunk – Find a flight that is the ‘perfect’ for your needs.
- Gojee – Find the recipe you would taste and say WOW after it.
- “Offline first” – You will want your web app to work offline. It’s an important feature that will let your users be productive on places like: planes, subways and on spots like: Starbucks when you don’t have (always) good connection. Another very important benefit will be the improve in performance. Since the app will work locally (first) and then sync the state/data the users will get responsiveness that are far better from an app that need to ‘wait’ for network on every action that the user does.
- Client Side Architecture – Since we are moving big parts of our ‘logic’ to the client we need to think about methods that will keep our code readable and maintainable. I guess this is the main reason why we see so many MVC Frameworks. The only advice I can give here is to try few of the popular ones and see how they approach the separation between the data and the UI. If you have some time go over The Top 10 Javascript MVC Frameworks Reviewed. Then, after you try ‘some’ you will be able to pick the one that fit the bill in the best way. For the busy developer (I know… most of us don’t have too much free time 🙂 – Go and play with these three MVC (some will say it should be MV* because it’s not really MVC more MVVM, MVP):
Angular.js -Lets you extend HTML vocabulary for your application |
- Device Aware – We all know that mobile is going ‘up and right’. So when you design your web app you should think on progressive enhancement and how it will fit to different screen sizes. Good examples to look at are: Gmail, Flipboard and Twitter. If you want to go deeper on this interesting subject there is a webcast on ‘mobile web apps’ I did with Oreilly three weeks ago. You can go over the slides as well.
Challenges and Solutions
- It save us the trouble to reinvent the wheel and built simple functionality like: CRUD operations, list, order, search etc’. It’s all baked in it.
- It provide us some powerful new features:
- RPC Batch
- CORS
- Authentication out of the box
- Version control
- Super Simple
- Storing (static) assets: we can use AppCache. It’s our ability to save locally our html, js, css files and all the images, sound files etc’.
- Storing data: localStorage, IndexedDB, File API. This is a hot (and large) topic. I would suggest to read deeper on when and where to use each over at html5rock.com
Challenge: There are so many web services I would love to hook into my app – How can I do it without reinventing the wheel each time? In other words, I want to give my users the ability to edit photos, share on twitter, g+ and Linkedin (just to name few).
Solution: WebIntent! If you are familiar with the intent system that is flourishing in Android you know what I’m talking about. We now have a powerful solution for the web. Web Intents is a framework for client-side service discovery and inter-application communication. The code you need to add to your app is as simple as:
var sharingDetails = "Check out my....";
var intent = new Intent(
"http://webintents.org/share",
"text/uri-list",
beerDetails);
window.navigator.startActivity(intent);
The best part is that it will work on most browsers with JavaScript shim and in Chrome (19+) it’s built into the browser natively!
Challenge: What can I do on old browsers that do not support HMTL5 very well?
Solution: Google Chrome Frame is an open source plug-in that seamlessly brings Google Chrome’s open web technologies and speedy JavaScript engine to IE. You can add it to your web app with one line of meta tag: <meta http-equiv=”X-UA-Compatible” content=”chrome=1″> or configure the server to send this http header: X-UA-Compatible: chrome=1 in both scenarios your users will enjoy the wonderful world of chrome (v8, HTML5, CSS3, WebGL etc’) inside their IE. Important fact to remember is that your users do not need admin rights (on their windows PC) in order to install it.
Discover more from Ido Green
Subscribe to get the latest posts sent to your email.


in your client side architecture.
you have given angularjs as a option but i think you need to revise it cause angular is not just a framework but more of an component which just works like browser component and can be used with any js framework like backbone or ember
Well… Angular.js lets you extend HTML vocabulary for your application (and make HTML dynamic). So you might be able to use it with other frameworks. However, you get from it so many great features like:
* A separation between data/view.
* data-binding
* ‘web component’ that are very powerful.
I wonder who will use it AND another MV* framework in the same app.
Just found about Google Cloud Endpoints today. Very cool! Hope I can get my invite soon. Also Web Intents is very interesting! Thanks!