Listen to this post
Voiced by Amazon Polly

Romega Digital has released an open-source package for adding multitenancy to applications built on the Laravel PHP framework.

The package creates a tenant model, with each tenant getting its own subdomain. This allows developers to serve multiple customers with a single code base while keeping data separate for each customer. It does this by identifying incoming traffic by subdomain and finds a corresponding tenant in the tenant table.

Why is multitenancy important? If the software is running as a single tenant, each customer has their own copy of the code and processes. So if you have 10 customers, you are running 10 copies of everything. Multitenancy simplifies this by requiring just one instance to manage.

There is also an administration subdomain that is locked down to only be available to users with a super admin role. This allows the software application owner to manage each individual tenant, without needing a user account for each.

We’re big fans of Nova, an administration dashboard built by the creators of Laravel.  So in addition to the main multitenancy package, we are releasing a tool for managing tenants in Nova.

The tool was authored primarily by our CEO, Braden Keith. He identified a need for it while building multitenant applications for our customers.

“Multitenancy is a problem we’ve had to solve for a number of our client projects. Within the Laravel community, many have been asking how to tackle projects with this complication, so we decided to package up our solution and make it available for open source. We hope our contribution makes multitenancy in Laravel and Laravel Nova much easier to accomplish.”

– Braden Keith
Owner and CEO
Romega Digital

Romega Digital

By

Romega Digital oftens discusses the latest trends in technology, keeping our customers apprised of the constantly moving industry.

  1. Thanks for sharing your work!

    With your experience what do you think is the best way to implement single-tenant features in a multi-tenant codebase?

    i.e. tenant #12 wants to have a feature that’s so specific that only he (or maybe a few others) will use?

    Simon Depelchin, January 24, 2019
  2. We find if one customer is asking for it, and it’s a good idea, everyone will benefit. We simply make the request a multitenant feature.

    In the instances where it truely will only be a single tenant requested feature, we look at a private cloud deployment and would manage the deployments separately or set a flag on the inclusion of the feature based off the domain being utilized.

    There is a laravel multitenant package that goes as deep as what you are asking. In the more advanced tenancy deployments, that may be required. We have not found a need to worry about that quite yet and have stuck with a simple tenancy approach.

    Thanks for your question!

    Braden Keith, January 24, 2019
  3. This is great – thanks. Unfortunately, subdomains won’t work for my use case – I need to allow my tenants to use a completely custom domain. (For example, my Nova dashboard would live on dashboard.mycompany.com, and each tenant’s site would live on app.tenantname.com.)

    Travis Miller, March 22, 2019
  4. Hey Travis,

    Thanks for the suggestion. Please open an issue on the package for any feature requests we can consider in a future release.

    Braden Keith, March 22, 2019

Leave a comment