{"action":"created","issue":{"url":"https://api.github.com/repos/cmbi/whynot/issues/15","labels_url":"https://api.github.com/repos/cmbi/whynot/issues/15/labels{/name}","comments_url":"https://api.github.com/repos/cmbi/whynot/issues/15/comments","events_url":"https://api.github.com/repos/cmbi/whynot/issues/15/events","html_url":"https://github.com/cmbi/whynot/issues/15","id":126396338,"number":15,"title":"[EPIC] Clarify project boundaries","user":{"login":"jonblack","id":175080,"avatar_url":"https://avatars.githubusercontent.com/u/175080?v=3","gravatar_id":"","url":"https://api.github.com/users/jonblack","html_url":"https://github.com/jonblack","followers_url":"https://api.github.com/users/jonblack/followers","following_url":"https://api.github.com/users/jonblack/following{/other_user}","gists_url":"https://api.github.com/users/jonblack/gists{/gist_id}","starred_url":"https://api.github.com/users/jonblack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonblack/subscriptions","organizations_url":"https://api.github.com/users/jonblack/orgs","repos_url":"https://api.github.com/users/jonblack/repos","events_url":"https://api.github.com/users/jonblack/events{/privacy}","received_events_url":"https://api.github.com/users/jonblack/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-01-13T11:17:06Z","updated_at":"2016-01-13T11:46:26Z","closed_at":null,"body":"# Features\r\n\r\nThere are two distinct features of this project:\r\n\r\n1. Serve HTML over The Internet so users can see which files are missing, and their reason, from various databanks\r\n2. Update the mongo database when databanks change. This is mostly controlled via the databanks scripts which we store in another project.\r\n\r\nThe problems with this are:\r\n\r\n* This project is not responsible for updating its own data.\r\n* The frontend, frontend and databanks script (indirectly) all access the same database. This increases coupling and could make data integrity issues difficult to find.\r\n\r\n# Ideas\r\n\r\nSplit this project into the following separate services:\r\n\r\n* frontend: only responsible for serving HTML to view data. It doesn't talk to the database, but instead to a backend REST server, to get data that it needs to display.\r\n* backend: provides a REST API allowing access to whynot data, and runs a separate background Process to update the database. The background process should run independently of the databanks script mentioned above.\r\n\r\nWhen thinking about the backend I wondered if it should be two separate services itself, where one just serves a REST API and the other updates the database. The problem with this is that you then have two services that operate on the same database. Perhaps it's not so bad since one reads and the other writes. I think it's still something to consider.\r\n\r\nLanguages like go and rust (although its http library is not stable as far as I know) would be a great option for the backend, particularly the crawling and annotating part. Frameworks like EmberJS would be great for the frontend.\r\n\r\nThis issue is a big rewrite so don't run off with it blindly. It needs some serious though."},"comment":{"url":"https://api.github.com/repos/cmbi/whynot/issues/comments/171263845","html_url":"https://github.com/cmbi/whynot/issues/15#issuecomment-171263845","issue_url":"https://api.github.com/repos/cmbi/whynot/issues/15","id":171263845,"user":{"login":"cbaakman","id":5469619,"avatar_url":"https://avatars.githubusercontent.com/u/5469619?v=3","gravatar_id":"","url":"https://api.github.com/users/cbaakman","html_url":"https://github.com/cbaakman","followers_url":"https://api.github.com/users/cbaakman/followers","following_url":"https://api.github.com/users/cbaakman/following{/other_user}","gists_url":"https://api.github.com/users/cbaakman/gists{/gist_id}","starred_url":"https://api.github.com/users/cbaakman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cbaakman/subscriptions","organizations_url":"https://api.github.com/users/cbaakman/orgs","repos_url":"https://api.github.com/users/cbaakman/repos","events_url":"https://api.github.com/users/cbaakman/events{/privacy}","received_events_url":"https://api.github.com/users/cbaakman/received_events","type":"User","site_admin":false},"created_at":"2016-01-13T11:46:26Z","updated_at":"2016-01-13T11:46:26Z","body":"The whynot web application already provides a restful service. Though it's not used much."}}