How I'd build an awesome thing, if I were me, today.
Realtimey push of async events to all clients - We track ships. Ships move. The client should be informed of each position report, as they happen. I strongly believe that this should be at the core of all our apps. This expands to a generic async event notification system. Consider WebSockets via Engine IO or push as a service via http://pusher.com
DOM templates. This isn't just a bunch of strings dammit, it's chunks of HTML. The templates should be HTML too.
Client side DB. Structured APIs over localStorage & indexDB are sufficiently advanced that we can sync subsets of the server data with a client side DB-like structure. User interactions manipulate the local data, and just those diffs are communicated to the server. If the client maliciously force-violates the front-end validators, then the server simply rejects the change, and sends back the relevant diff to patch their database state