Technologies

Table of contents

Suggested technologies

Nr crtTechnologyTypeLinkPurpose / ObservationsMotivation
1nginX webserverWebserverhttps://nginx.org/Webserver - Self explanatory :PFaster than Apache webserver
The only faster webserver is LiteSpeed (but we need to pay for a license.. Maybe later on we will migrate to it :D)
2PostgreSQL DatabaseDatabase serverhttps://www.postgresql.org/Database engine used for most data storageFaster than MySQL or other database engines. Also more reliable when it comes to ACID data
3

MongoDB

(NoSQL Database)

Database serverhttps://www.mongodb.com/Even though I don't really think it's 100% necessaryFaster data access when it comes to big volumes of data even though I'd suggest using ElasticSearch instead
4Node JSServerside technologyhttps://nodejs.org/en/Server side technology, should be easy enough to implement APIs with itEasy and fast to use, just JavaScript ;)
4.1RestifyServerside REST-Frameworkhttp://restify.com/Making it even easier to implement APIs with itEven easier to implement APIs with it
5Laravel PHP frameworkServerside technologyhttps://laravel.com/Server side technology, should be used for core moduleHas everything out of the box (mailing, database management, redis, oauth, anything you want ;) )
Also, will make core frontend easier to implement and secure
6Lumen PHP frameworkServerside technologyhttps://lumen.laravel.com/Server side technology, should be used for small modulesReally small overhead, easy to implement and learn
7Angular JSFrontend frameworkhttps://angularjs.org/Frontend technology, should be used for all modulesLess data traffic, everything loaded on demand, easyer to cache
8BootstrapFrontend (design) frameworkhttp://getbootstrap.com/Design framework, should be used to keep unity between all modulesEasy responsive designing, fast learning curve, easy to "hack"
9ChaiTesting framework (JS)http://chaijs.com/JS testing framework specialized on API testing



Experimental technologies

could be fun to use and learn, but not on main modules (yet ;) )

Nr crtTechnologyTypeLinkPurpose / ObservationsMotivation
1PolymerFrontend frameworkhttps://www.polymer-project.org/1.0/Frontend designEasy to define custom templates and isolating them (see shadow-dom) but could be a pain sometimes :D
2KongMicroservice Managementhttps://getkong.org/Service discovery+routing, load balancing, user-authenticationTransparent layer in front of every service, makes cloud-dev easier
3WrapbootstrapFrontend (design) frameworkhttp://wrapbootstrap.com/preview/WB0N89JMKDesign Framework, might look better? than bootstrapForces you to keep Apiary consistent, easy to set up a lot of tests in seconds (just modify the apiary.apib a bit and it runs)
4DreddAutomated testing frameworkhttps://github.com/apiaryio/dreddAutomated API testing framwork, can turn a apiary description into testsForces you to keep Apiary and

Not recommended technologies

Nr crtTechnologyTypeLinkPurpose / ObservationsMotivation
1Ruby on railsBackend frameworkhttp://rubyonrails.org/Server side technology, big overhead in my opinion. Too much magic insideEasy to implement simple things but would just choke the server(s) if there are too many RoR applications on the same server. Too much config to do to even get the development started
2Python / Django / TornadoBackend frameworkhttps://www.python.org/
https://www.djangoproject.com/
http://www.tornadoweb.org/en/stable/
Server side technology, big overhead in my opinion. Could be used for serverside scripts (instead of bash scripts).Easy to implement scripts for basic functionality on the server (backup, log clearing etc) but I don't think we should use it for the web part :)