Aside from Airbnb's Rendr (and I've heard DirbyJS does something similar), you could also build your SPA on top of your server-rendered pages. After pageload, hijack the click events from your navigation controls and have it fetch and render content via ajax. It's certainly not "DRY", but it's easier to implement for existing content-focused sites.