{"action":"created","issue":{"url":"https://api.github.com/repos/emfoundation/ce100-app/issues/33","repository_url":"https://api.github.com/repos/emfoundation/ce100-app","labels_url":"https://api.github.com/repos/emfoundation/ce100-app/issues/33/labels{/name}","comments_url":"https://api.github.com/repos/emfoundation/ce100-app/issues/33/comments","events_url":"https://api.github.com/repos/emfoundation/ce100-app/issues/33/events","html_url":"https://github.com/emfoundation/ce100-app/issues/33","id":170843835,"number":33,"title":"Tech Stack (WIP)","user":{"login":"mk4111","id":13470325,"avatar_url":"https://avatars.githubusercontent.com/u/13470325?v=3","gravatar_id":"","url":"https://api.github.com/users/mk4111","html_url":"https://github.com/mk4111","followers_url":"https://api.github.com/users/mk4111/followers","following_url":"https://api.github.com/users/mk4111/following{/other_user}","gists_url":"https://api.github.com/users/mk4111/gists{/gist_id}","starred_url":"https://api.github.com/users/mk4111/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mk4111/subscriptions","organizations_url":"https://api.github.com/users/mk4111/orgs","repos_url":"https://api.github.com/users/mk4111/repos","events_url":"https://api.github.com/users/mk4111/events{/privacy}","received_events_url":"https://api.github.com/users/mk4111/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-08-12T10:33:09Z","updated_at":"2016-08-15T09:04:44Z","closed_at":null,"body":"Some preliminary thoughts on tech stack...\r\n\r\n### Front End\r\nThings to think about: \r\n* Will the app be dynamic? Do we need it to be real time? (The options below are suggestions made on the assumption that this will be a relatively dynamic app)\r\n* How 'mobile' do we need the app to be?\r\n* Will there be a disadvantage/an advantage if the app is Client-side heavy? Is a single-page app a good idea?\r\n* Do we want the app to work offline too?\r\n\r\n#### (1) ReactJS and Native:\r\n\r\n##### _Advantages:_ \r\n* The UI is neat; e.g. re-renders every time the page gets updated (so we'd be able to see the most recent challenge/comment/etc. posted. \r\n* (I might be skipping too many steps ahead but just as a thought:) If we do decide to go native with the app at some point, a large proportion of the code from React Vanilla would be transferable. In addition, the user experience will be 'native', so the issues that some people report when using Cordova/PhoneGap on their mobiles won't be an issue. Push notifications will be possible.\r\n\r\n##### _Disadvantages:_\r\n* We'd need two code bases - ReactJS for web, and React Native for mobile.\r\n\r\n#### (2) PhoneGap:\r\n* General: I'm not sure how dynamic the app is.\r\n\r\n##### _Advantages:_\r\n* Same code base for web and mobile.\r\n* Can get push notifications (see Push Plugin for PhoneGap).\r\n\r\n##### _Disadvantages:_\r\n* Some complaints that the app's feel on a mobile isn't 'native'\r\n\r\n#### (3) Plain HTML/CSS/JS:\r\n\r\n##### _Advantages:_ \r\n* Browser compatibility good - simple and basic so I don't think there will be issues for loading, etc.\r\n\r\n##### _Disadvantages:_\r\n* Will need extra work to get it to render 'nicely', in terms of loading order and media type (desktop/mobile/etc).\r\n \r\n### Back End\r\n* NodeJS, with HapiJS (?) for our server\r\n\r\n### Database\r\nQuite stuck on this. Current thoughts below:\r\n* **_ElasticSearch_** Seems like it would be useful for them in future phases of development, but I'm not sure if they have fixed the issue where the callback is returned before the cluster is set. In which case, **_Redis_** seems like a nice alternative, but we're limited to exact matches (unless we use regex), and given that, maybe **_PostGres_** is a better idea - but the disadvantages of that is that structuring the database will be less flexible/we would need to know exactly what fields they want before working with it. It's also not horizontally scalable, and considering potential future developments, all in all, I don't think that's a great idea... \r\n* Possible solution - maybe instead of using just one type of database, we could mix and match depending on what we want to save - need a more thorough think through on this. Something to discuss with Jack on Friday for sure, and hopefully ask for some advice from @nelsonic too...!!\r\n* I don't know if this is all in my head, but I think Alex may have at some point mentioned MongoDB? (Or was that Django (python)?) I don't really have a clue about either of those, but I'll look into them with Jack on Friday.\r\n\r\n### Notifications \r\n* Mailgun and Twilio? \r\n* If we're using React Native or PhoneGap, it'd be cool to look into push notifications too!\r\n\r\n### Authentication \r\n* I'm not sure what Alex's thoughts are on 3rd party authentication like LinkedIn, and how disruptive that might be for the app we're trying to create - i.e. whether people will find it easier to communicate via in-app messages on LinkedIn instead."},"comment":{"url":"https://api.github.com/repos/emfoundation/ce100-app/issues/comments/239758821","html_url":"https://github.com/emfoundation/ce100-app/issues/33#issuecomment-239758821","issue_url":"https://api.github.com/repos/emfoundation/ce100-app/issues/33","id":239758821,"user":{"login":"asimonw","id":15235804,"avatar_url":"https://avatars.githubusercontent.com/u/15235804?v=3","gravatar_id":"","url":"https://api.github.com/users/asimonw","html_url":"https://github.com/asimonw","followers_url":"https://api.github.com/users/asimonw/followers","following_url":"https://api.github.com/users/asimonw/following{/other_user}","gists_url":"https://api.github.com/users/asimonw/gists{/gist_id}","starred_url":"https://api.github.com/users/asimonw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/asimonw/subscriptions","organizations_url":"https://api.github.com/users/asimonw/orgs","repos_url":"https://api.github.com/users/asimonw/repos","events_url":"https://api.github.com/users/asimonw/events{/privacy}","received_events_url":"https://api.github.com/users/asimonw/received_events","type":"User","site_admin":false},"created_at":"2016-08-15T09:04:44Z","updated_at":"2016-08-15T09:04:44Z","body":"Your comments make a lot of sense to me @nelsonic. \r\n\r\nI really don't see the need to build a Native version at this point (and foreseeable future). In any case, having to worry about two code bases before understanding and testing core features makes no sense. (I also really like the Progressive Web App idea.) Happy to go with your \"default\" tech stack (Redis etc). We didn't include free text search yet, just because of a simple prioritisation of features, but it will need to be added in a next phase.\r\n\r\nReal-time will definitely add value, and is one of the reasons why building something bespoke makes sense. We didn't include real-time features in the MVP, again just so that we can focus on core ideas first, but if there is enough time, it would be very interesting to consider a \"showcase\" feature already now.\r\n\r\nI indeed don't think Push notifications are important at this point, but notifications in general would be part of sprint 2. How we do it exactly is tbd. Auth with simple email+pwd is a perfect way to start."}}
{"actor":{"display_login":"asimonw"}}