SPA using routing and templating