Technologies

Technologies

Suggested technologies

Nr crt

Technology

Type

Link

Purpose / Observations

Motivation

1

nginX webserver

Webserver

https://nginx.org/

Webserver - Self explanatory :P

Faster 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)

2

PostgreSQL Database

Database server

https://www.postgresql.org/

Database engine used for most data storage

Faster than MySQL or other database engines. Also more reliable when it comes to ACID data

3

MongoDB

(NoSQL Database)

Database server

https://www.mongodb.com/

Even though I don't really think it's 100% necessary

Faster data access when it comes to big volumes of data even though I'd suggest using ElasticSearch instead

4

Node JS

Serverside technology

https://nodejs.org/en/

Server side technology, should be easy enough to implement APIs with it

Easy and fast to use, just JavaScript ;)

4.1

Restify

Serverside REST-Framework

http://restify.com/

Making it even easier to implement APIs with it

Even easier to implement APIs with it

5

Laravel PHP framework

Serverside technology

https://laravel.com/

Server side technology, should be used for core module

Has everything out of the box (mailing, database management, redis, oauth, anything you want ;) )
Also, will make core frontend easier to implement and secure

6

Lumen PHP framework

Serverside technology

https://lumen.laravel.com/

Server side technology, should be used for small modules

Really small overhead, easy to implement and learn

7

Angular JS

Frontend framework

https://angularjs.org/

Frontend technology, should be used for all modules

Less data traffic, everything loaded on demand, easyer to cache

8

Bootstrap

Frontend (design) framework

http://getbootstrap.com/

Design framework, should be used to keep unity between all modules

Easy responsive designing, fast learning curve, easy to "hack"

9

Chai

Testing 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 crt

Technology

Type

Link

Purpose / Observations

Motivation

1

Polymer

Frontend framework

https://www.polymer-project.org/1.0/

Frontend design

Easy to define custom templates and isolating them (see shadow-dom) but could be a pain sometimes :D

2

Kong

Microservice Management

https://getkong.org/

Service discovery+routing, load balancing, user-authentication

Transparent layer in front of every service, makes cloud-dev easier

3

Wrapbootstrap

Frontend (design) framework

http://wrapbootstrap.com/preview/WB0N89JMK

Design Framework, might look better? than bootstrap

Forces 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)

4

Dredd

Automated testing framework

https://github.com/apiaryio/dredd

Automated API testing framwork, can turn a apiary description into tests

Forces you to keep Apiary and


Not recommended technologies

Nr crt

Technology

Type

Link

Purpose / Observations

Motivation

1

Ruby on rails

Backend framework

http://rubyonrails.org/

Server side technology, big overhead in my opinion. Too much magic inside

Easy 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

2

Python / Django / Tornado

Backend framework

https://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 :)