{"action":"created","issue":{"url":"https://api.github.com/repos/ufront/ufront/issues/10","labels_url":"https://api.github.com/repos/ufront/ufront/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/ufront/ufront/issues/10/comments","events_url":"https://api.github.com/repos/ufront/ufront/issues/10/events","html_url":"https://github.com/ufront/ufront/issues/10","id":52120326,"number":10,"title":"Ufront-mvc client side?","user":{"login":"cambiata","id":217074,"avatar_url":"https://avatars.githubusercontent.com/u/217074?v=3","gravatar_id":"","url":"https://api.github.com/users/cambiata","html_url":"https://github.com/cambiata","followers_url":"https://api.github.com/users/cambiata/followers","following_url":"https://api.github.com/users/cambiata/following{/other_user}","gists_url":"https://api.github.com/users/cambiata/gists{/gist_id}","starred_url":"https://api.github.com/users/cambiata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cambiata/subscriptions","organizations_url":"https://api.github.com/users/cambiata/orgs","repos_url":"https://api.github.com/users/cambiata/repos","events_url":"https://api.github.com/users/cambiata/events{/privacy}","received_events_url":"https://api.github.com/users/cambiata/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"jasononeil","id":315158,"avatar_url":"https://avatars.githubusercontent.com/u/315158?v=3","gravatar_id":"","url":"https://api.github.com/users/jasononeil","html_url":"https://github.com/jasononeil","followers_url":"https://api.github.com/users/jasononeil/followers","following_url":"https://api.github.com/users/jasononeil/following{/other_user}","gists_url":"https://api.github.com/users/jasononeil/gists{/gist_id}","starred_url":"https://api.github.com/users/jasononeil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasononeil/subscriptions","organizations_url":"https://api.github.com/users/jasononeil/orgs","repos_url":"https://api.github.com/users/jasononeil/repos","events_url":"https://api.github.com/users/jasononeil/events{/privacy}","received_events_url":"https://api.github.com/users/jasononeil/received_events","type":"User","site_admin":false},"milestone":null,"comments":13,"created_at":"2014-12-16T14:45:20Z","updated_at":"2015-03-30T06:36:21Z","closed_at":"2015-03-30T06:36:19Z","body":"Hi Jason! Is it possible to run a (minimal) clientside ufront-mvc implementation today?\r\nIf so, could you give a clue how to start?"},"comment":{"url":"https://api.github.com/repos/ufront/ufront/issues/comments/87570308","html_url":"https://github.com/ufront/ufront/issues/10#issuecomment-87570308","issue_url":"https://api.github.com/repos/ufront/ufront/issues/10","id":87570308,"user":{"login":"jasononeil","id":315158,"avatar_url":"https://avatars.githubusercontent.com/u/315158?v=3","gravatar_id":"","url":"https://api.github.com/users/jasononeil","html_url":"https://github.com/jasononeil","followers_url":"https://api.github.com/users/jasononeil/followers","following_url":"https://api.github.com/users/jasononeil/following{/other_user}","gists_url":"https://api.github.com/users/jasononeil/gists{/gist_id}","starred_url":"https://api.github.com/users/jasononeil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasononeil/subscriptions","organizations_url":"https://api.github.com/users/jasononeil/orgs","repos_url":"https://api.github.com/users/jasononeil/repos","events_url":"https://api.github.com/users/jasononeil/events{/privacy}","received_events_url":"https://api.github.com/users/jasononeil/received_events","type":"User","site_admin":false},"created_at":"2015-03-30T06:36:21Z","updated_at":"2015-03-30T06:36:21Z","body":"Some good news:\r\nhttps://github.com/ufront/ufront-mvc/commit/7c0d9a331e2ee1c43466b498900132cfd6c65616\r\n\r\nI've got ufront-mvc running client side, using the new `ufront.app.ClientJsApplication` rather than `ufront.app.UfrontApplication`.  You can re-use the same controllers and views.  The first visit loads on the server, the subsequent visits render on the client, making HTTP calls as necessary to fetch views or make API calls(*).\r\n\r\nIt works using Pushstate for detecting page changes, creates a HttpContext based on the browser, and executes it as per normal.  For now the result is printed to the browser by replacing the contents of `<head>` and `<body>`, obviously I will try come up with something better later :)\r\n\r\nThere's been many changes to quite a few libraries, so it might take me a day or two to clean them all up and release new versions.  I'll update the \"hello world\" to demonstrate once that's done too."}}