Multi-Tenancy Application using Laravel 5.1 & AngularJS

  • Post published:September 30, 2015

vteam #448 was formed to create a secure application for multiple clients having their own private portals and users for a booking software. Previously the architecture of this booking software was built in custom PHP. But now client wanted us to revamp its architecture completely. The framework required for that was Laravel 5.1 and AngularJS. Website features also needed some improvements.

To meet the requirement, it was decided to implement multi-tenant architecture using the following tools and technologies:

  • Laravel 5.1 (Base Framework)
  • AngularJS (Front-end framework)
  • Dingo (RESTful API builder)
  • OAuth 2.0 Server for Laravel (Protect API with access tokens)
  • JWT-auth (Provide JSON Web Token Authentication)
  • Mustache (Template System)
  • Faker (To generate test fake data)
  • Guzzle (HTTP client)

With such a multi-tenant architecture, booking software application is re-designed by vteams engineer Bilal Ahmed. This software provides every client a dedicated share of the instance including its data configuration, user management, tenant individual functionality and non-functional properties. Multi-tenancy contrasts with multi-instance architectures where separate software instances operate on behalf of different tenants.

Node Modules:

Following node modules (Development Tools) were also added in this application:

  • Gulp (Development time saving tool for CSS preprocessing, JS transpiling, minification, live reloading, and much more)
  • Bower (Front-end package manager)
  • Laravel-elixir (API for defining basic Gulp tasks)
  • Laravel-elixir-ngtemplatecache (Extension for the generation of AngularJS templatecache module)
  • Laravel-elixir-angular (Generates minified script file for all AngularJS script files)
  • Laravel-elixir-css-url-adjuster (Allows Gulp to change CSS URLs)
  • Laravel-elixir-imagemin (Optimize Images)
  • Gulp-Livereload (To listen code changes in browser)