Hacker News new | ask | show | jobs
by _urga 5775 days ago
I have been working through these ideas since 2007, taking it one step at a time:

2007: I "single-paged" subsections of my application, with different PHP scripts on the backend.

2008: Consolidated the backend into a single API.

2009: Switched the backend to Rails for ORM functionality, and finished upgrading the client interface to a single page application.

2009: Switched the backend to Javascript (Rhino) to enable sharing of model validations and other code (even native object extensions) with the client.

2009: Got my application working completely offline using a local SQL database and replication manager, together with ApplicationCache. At first I used LocalStorage but soon hit storage and performance limits.

2009: Switched from Rhino to NodeJS. Much faster, cleaner APIs. Huge performance gains from V8 and non-blocking IO.

2010: Results of the above up at: https://szpil.com

Along the way I built up a framework for managing concatenation, client-side navigation, sessions, views, controllers, email etc. One significant advantage of building client-side only apps that replicate with the server is that they work offline by definition. Managing state on the client opens up incredible opportunities.