{"action":"created","issue":{"url":"https://api.github.com/repos/optimizely/nuclear-js/issues/24","labels_url":"https://api.github.com/repos/optimizely/nuclear-js/issues/24/labels{/name}","comments_url":"https://api.github.com/repos/optimizely/nuclear-js/issues/24/comments","events_url":"https://api.github.com/repos/optimizely/nuclear-js/issues/24/events","html_url":"https://github.com/optimizely/nuclear-js/issues/24","id":69526132,"number":24,"title":"Story for Isomorphic applications?","user":{"login":"rattrayalex","id":704302,"avatar_url":"https://avatars.githubusercontent.com/u/704302?v=3","gravatar_id":"","url":"https://api.github.com/users/rattrayalex","html_url":"https://github.com/rattrayalex","followers_url":"https://api.github.com/users/rattrayalex/followers","following_url":"https://api.github.com/users/rattrayalex/following{/other_user}","gists_url":"https://api.github.com/users/rattrayalex/gists{/gist_id}","starred_url":"https://api.github.com/users/rattrayalex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rattrayalex/subscriptions","organizations_url":"https://api.github.com/users/rattrayalex/orgs","repos_url":"https://api.github.com/users/rattrayalex/repos","events_url":"https://api.github.com/users/rattrayalex/events{/privacy}","received_events_url":"https://api.github.com/users/rattrayalex/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":12,"created_at":"2015-04-20T07:29:28Z","updated_at":"2015-04-30T14:55:00Z","closed_at":null,"body":"Hi, \r\n\r\nNuclear looks incredibly exciting. I was wondering what the story around creating Isomorphic applications (same code for server and client) might look like. \r\n\r\nSince events shouldn't be necessary, I would primarily hope that:\r\n\r\n1. Using the Mixin won't break the application on the server.\r\n1.  `getDataBindings` could allow an alternative source on the server, OR `getInitialState` could work on the server, OR an alternative would be provided. \r\n\r\n(I'm asking as someone who hasn't yet built complex isomorphic apps and hasn't yet used Nuclear, I apologize for any gaps in my knowledge!)\r\n\r\nThanks!"},"comment":{"url":"https://api.github.com/repos/optimizely/nuclear-js/issues/comments/97827658","html_url":"https://github.com/optimizely/nuclear-js/issues/24#issuecomment-97827658","issue_url":"https://api.github.com/repos/optimizely/nuclear-js/issues/24","id":97827658,"user":{"login":"appsforartists","id":926648,"avatar_url":"https://avatars.githubusercontent.com/u/926648?v=3","gravatar_id":"","url":"https://api.github.com/users/appsforartists","html_url":"https://github.com/appsforartists","followers_url":"https://api.github.com/users/appsforartists/followers","following_url":"https://api.github.com/users/appsforartists/following{/other_user}","gists_url":"https://api.github.com/users/appsforartists/gists{/gist_id}","starred_url":"https://api.github.com/users/appsforartists/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appsforartists/subscriptions","organizations_url":"https://api.github.com/users/appsforartists/orgs","repos_url":"https://api.github.com/users/appsforartists/repos","events_url":"https://api.github.com/users/appsforartists/events{/privacy}","received_events_url":"https://api.github.com/users/appsforartists/received_events","type":"User","site_admin":false},"created_at":"2015-04-30T14:55:00Z","updated_at":"2015-04-30T14:55:00Z","body":"I think there needs to be an optional `serialize` and `deserialize` hook in each Store to support that.  At the Nuclear level, it should be safe to call `reactor.deserialize(reactor.serialize())` without affecting the values in the stores.  Doing so allows the isomorphism to be abstracted away by something like [Ambidex](https://github.com/appsforartists/ambidex/).\r\n\r\nBefore discovering Nuclear, I was experimenting with designing my own functionally-reactive Flux library.  [Here's](https://github.com/appsforartists/ambidex-example--bike-index/blob/master/application/funxDefinitions/stores/Bikes.js) how I handled serialization at the Store level."}}