= Adei2 Proposal = This article only serves as proposal. These are not yet discussed in the group and may be subjected to changes. The final draft should be documented at [http://adei.info/adei/wiki/adei2Concepts Adei Concepts]. ---- = Backend = * [http://www.vagrantup.com/ Vagrant] - this is somewhat like a virtual machine, it is useful in a collaborative software project, where everybody is developing on the same platform, regardless of their OS. * Web frameworks * Python - [https://www.djangoproject.com/ Django], [http://www.tornadoweb.org/en/stable/ TornadoWeb]. (MVC Structure) * Test - Unittest or Nosetests * Websocket (I have no prior experience on this, but this might solve our huge data loading problem) ---- = Frontend = * HTML5 + CSS3 * Responsive design - this can be achived using CSS media queries. * [http://backbonejs.org/ Backbone JS] - MVC Structure * [http://requirejs.org/ Require JS] - module loader, this will speed up the script loading performance during production deployment. * [http://bower.io/ Bower] - package manager * Test - [http://pivotal.github.io/jasmine/ Jasmine], apparently this is not a TDD, but a BDD. This test framework has a good momentum and might be a good fit. * CSS preprocessing - [http://sass-lang.com/ SASS] ---- = Best Practice = * Test Driven Development (Backend + Frontend) - if we have reliable tests, then we can implement a continuos integration (CI) later. * Git * [http://semver.org/ Semantic Versioning] * [http://en.wikipedia.org/wiki/Representational_state_transfer RESTful] ---- = Collaborative Tool = * [https://www.atlassian.com/ Atlassian] - We need confluence (Documentation), Jira (Issue Tracking) and Stash (Repository). Apparently they offer educational license, free for up to 10 users. This is an alternative to trac. Just have a look. ---- OS:: Operating System MVC:: Model View Controller JS:: Javascript TDD:: Test Driven Development BDD:: Behaviour Driven Development RESTful:: Representational state transfer, in short, the HTTP request from the client tells which API from the server to be used and the Data (JSON) will determines which response to be returned. This way, the relationship between the server and the client will be completely isolated.