<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Chief Technical Officer</title>
    <description>The latest articles on DEV Community by Chief Technical Officer (@keithprinkeyops).</description>
    <link>https://dev.to/keithprinkeyops</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1018211%2F64160d4c-b6ba-4d08-8f8c-40a941b63f6a.png</url>
      <title>DEV Community: Chief Technical Officer</title>
      <link>https://dev.to/keithprinkeyops</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/keithprinkeyops"/>
    <language>en</language>
    <item>
      <title>This package solves a real-world problem surrounding post-authentication multi-tenancy database systems in Laravel PHP Framework</title>
      <dc:creator>Chief Technical Officer</dc:creator>
      <pubDate>Thu, 02 Apr 2026 17:23:53 +0000</pubDate>
      <link>https://dev.to/keithprinkeyops/this-package-solves-a-real-world-problem-surrounding-post-authentication-multi-tenancy-database-3fa5</link>
      <guid>https://dev.to/keithprinkeyops/this-package-solves-a-real-world-problem-surrounding-post-authentication-multi-tenancy-database-3fa5</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/gaming/a-laravel-package-for-post-authentication-multi-tenancy-with-automatic-tenant-switching-4hkh" class="crayons-story__hidden-navigation-link"&gt;A Laravel Package for Post-Authentication Multi-Tenancy with Automatic Tenant Switching&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;
          &lt;a class="crayons-logo crayons-logo--l" href="/gaming"&gt;
            &lt;img alt="World eSports Gaming logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F6778%2F9c958103-2092-4759-869c-2219cd5a244e.png" class="crayons-logo__image" width="800" height="369"&gt;
          &lt;/a&gt;

          &lt;a href="/keithprinkeyops" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1018211%2F64160d4c-b6ba-4d08-8f8c-40a941b63f6a.png" alt="keithprinkeyops profile" class="crayons-avatar__image" width="200" height="200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/keithprinkeyops" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Chief Technical Officer
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Chief Technical Officer
                
              
              &lt;div id="story-author-preview-content-3442092" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/keithprinkeyops" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1018211%2F64160d4c-b6ba-4d08-8f8c-40a941b63f6a.png" class="crayons-avatar__image" alt="" width="200" height="200"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Chief Technical Officer&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/gaming" class="crayons-story__secondary fw-medium"&gt;World eSports Gaming&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/gaming/a-laravel-package-for-post-authentication-multi-tenancy-with-automatic-tenant-switching-4hkh" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 1&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/gaming/a-laravel-package-for-post-authentication-multi-tenancy-with-automatic-tenant-switching-4hkh" id="article-link-3442092"&gt;
          A Laravel Package for Post-Authentication Multi-Tenancy with Automatic Tenant Switching
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/laravel"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;laravel&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/php"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;php&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/database"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;database&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/gaming/a-laravel-package-for-post-authentication-multi-tenancy-with-automatic-tenant-switching-4hkh#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>A Laravel Package for Post-Authentication Multi-Tenancy with Automatic Tenant Switching</title>
      <dc:creator>Chief Technical Officer</dc:creator>
      <pubDate>Wed, 01 Apr 2026 19:46:57 +0000</pubDate>
      <link>https://dev.to/gaming/a-laravel-package-for-post-authentication-multi-tenancy-with-automatic-tenant-switching-4hkh</link>
      <guid>https://dev.to/gaming/a-laravel-package-for-post-authentication-multi-tenancy-with-automatic-tenant-switching-4hkh</guid>
      <description>&lt;p&gt;Multi-tenancy in Laravel is not new, but many implementations assume tenancy is resolved &lt;strong&gt;before&lt;/strong&gt; authentication. That works well for some architectures, especially subdomain-first systems, but it does not fit every application.&lt;/p&gt;

&lt;p&gt;In many real-world SaaS platforms, the tenant context is determined &lt;strong&gt;after&lt;/strong&gt; a user logs in or registers. The application needs to inspect the authenticated user, determine which tenant they belong to, and then switch the database connection or tenant context automatically. That is the problem I wanted to solve.&lt;/p&gt;

&lt;p&gt;So we built a Laravel package focused on &lt;strong&gt;post-authentication multi-tenancy&lt;/strong&gt; with automatic tenant detection, database switching, middleware support, model scoping, and tenant management tooling.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Why we Built It
&lt;/h2&gt;

&lt;p&gt;We wanted a package that could integrate into a Laravel application that already had authentication in place and then handle tenancy cleanly from there.&lt;/p&gt;

&lt;p&gt;The goals were straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;detect the tenant after login&lt;/li&gt;
&lt;li&gt;switch tenant context automatically&lt;/li&gt;
&lt;li&gt;support isolated tenant databases&lt;/li&gt;
&lt;li&gt;work with common Laravel authentication stacks&lt;/li&gt;
&lt;li&gt;reduce the amount of custom middleware, listeners, and connection logic developers have to write by hand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of forcing a one-size-fits-all architecture, I wanted something that could work with different application flows and different database engines.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Package Does
&lt;/h2&gt;

&lt;p&gt;This package provides &lt;strong&gt;post-authentication multi-tenancy&lt;/strong&gt; for Laravel applications.&lt;/p&gt;

&lt;p&gt;Once a user authenticates, the package can automatically determine the correct tenant and switch the application into that tenant context. It also includes support for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;automatic tenant switching through middleware&lt;/li&gt;
&lt;li&gt;multiple tenant database connections&lt;/li&gt;
&lt;li&gt;model traits for tenant-aware queries&lt;/li&gt;
&lt;li&gt;artisan commands for installation, creation, status, migration, seeding, and cleanup&lt;/li&gt;
&lt;li&gt;support for MySQL, PostgreSQL, SQLite, and SQL Server&lt;/li&gt;
&lt;li&gt;optional automatic tenant creation and event-driven setup flows&lt;/li&gt;
&lt;li&gt;security validation and tenant access checks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is a package designed to make tenant-aware Laravel applications easier to implement and easier to maintain.  &lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes This Different
&lt;/h2&gt;

&lt;p&gt;What makes this package different is its &lt;strong&gt;post-authentication focus&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A lot of tenancy discussions in Laravel revolve around identifying the tenant from a domain, subdomain, or request context before the user is authenticated. That is valid, but not every system works that way.&lt;/p&gt;

&lt;p&gt;Some systems need to determine the tenant by looking at the authenticated user first. Others need a fallback strategy. Others need support for multiple tenant-detection methods without rewriting core application logic.&lt;/p&gt;

&lt;p&gt;This package was built for that reality.&lt;/p&gt;

&lt;p&gt;It supports multiple detection strategies, middleware-driven switching, multiple database drivers, and a workflow that fits applications where authentication already exists and tenancy needs to be layered in cleanly afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;Getting started is intentionally simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require worldesports/laravel-auto-tenancy
php artisan tenant:install &lt;span class="nt"&gt;--force&lt;/span&gt; &lt;span class="nt"&gt;--migrate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Question
&lt;/h2&gt;

&lt;p&gt;If you have any questions you can either reply directly to this post or email me at &lt;a href="mailto:chieftech@worldesports.app"&gt;chieftech@worldesports.app&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>laravel</category>
      <category>php</category>
      <category>database</category>
    </item>
    <item>
      <title>A Laravel Package for Post-Authentication Multi-Tenancy with Automatic Tenant Switching</title>
      <dc:creator>Chief Technical Officer</dc:creator>
      <pubDate>Wed, 01 Apr 2026 18:36:44 +0000</pubDate>
      <link>https://dev.to/keithprinkeyops/a-laravel-package-for-post-authentication-multi-tenancy-with-automatic-tenant-switching-1i9g</link>
      <guid>https://dev.to/keithprinkeyops/a-laravel-package-for-post-authentication-multi-tenancy-with-automatic-tenant-switching-1i9g</guid>
      <description>&lt;p&gt;Multi-tenancy in Laravel is not new, but many implementations assume tenancy is resolved &lt;strong&gt;before&lt;/strong&gt; authentication. That works well for some architectures, especially subdomain-first systems, but it does not fit every application.&lt;/p&gt;

&lt;p&gt;In many real-world SaaS platforms, the tenant context is determined &lt;strong&gt;after&lt;/strong&gt; a user logs in or registers. The application needs to inspect the authenticated user, determine which tenant they belong to, and then switch the database connection or tenant context automatically. That is the problem I wanted to solve.&lt;/p&gt;

&lt;p&gt;So we built a Laravel package focused on &lt;strong&gt;post-authentication multi-tenancy&lt;/strong&gt; with automatic tenant detection, database switching, middleware support, model scoping, and tenant management tooling.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Why we Built It
&lt;/h2&gt;

&lt;p&gt;We wanted a package that could integrate into a Laravel application that already had authentication in place and then handle tenancy cleanly from there.&lt;/p&gt;

&lt;p&gt;The goals were straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;detect the tenant after login&lt;/li&gt;
&lt;li&gt;switch tenant context automatically&lt;/li&gt;
&lt;li&gt;support isolated tenant databases&lt;/li&gt;
&lt;li&gt;work with common Laravel authentication stacks&lt;/li&gt;
&lt;li&gt;reduce the amount of custom middleware, listeners, and connection logic developers have to write by hand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of forcing a one-size-fits-all architecture, I wanted something that could work with different application flows and different database engines.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Package Does
&lt;/h2&gt;

&lt;p&gt;This package provides &lt;strong&gt;post-authentication multi-tenancy&lt;/strong&gt; for Laravel applications.&lt;/p&gt;

&lt;p&gt;Once a user authenticates, the package can automatically determine the correct tenant and switch the application into that tenant context. It also includes support for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;automatic tenant switching through middleware&lt;/li&gt;
&lt;li&gt;multiple tenant database connections&lt;/li&gt;
&lt;li&gt;model traits for tenant-aware queries&lt;/li&gt;
&lt;li&gt;artisan commands for installation, creation, status, migration, seeding, and cleanup&lt;/li&gt;
&lt;li&gt;support for MySQL, PostgreSQL, SQLite, and SQL Server&lt;/li&gt;
&lt;li&gt;optional automatic tenant creation and event-driven setup flows&lt;/li&gt;
&lt;li&gt;security validation and tenant access checks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is a package designed to make tenant-aware Laravel applications easier to implement and easier to maintain.  &lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes This Different
&lt;/h2&gt;

&lt;p&gt;What makes this package different is its &lt;strong&gt;post-authentication focus&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A lot of tenancy discussions in Laravel revolve around identifying the tenant from a domain, subdomain, or request context before the user is authenticated. That is valid, but not every system works that way.&lt;/p&gt;

&lt;p&gt;Some systems need to determine the tenant by looking at the authenticated user first. Others need a fallback strategy. Others need support for multiple tenant-detection methods without rewriting core application logic.&lt;/p&gt;

&lt;p&gt;This package was built for that reality.&lt;/p&gt;

&lt;p&gt;It supports multiple detection strategies, middleware-driven switching, multiple database drivers, and a workflow that fits applications where authentication already exists and tenancy needs to be layered in cleanly afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;Getting started is intentionally simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require worldesports/laravel-auto-tenancy
php artisan tenant:install &lt;span class="nt"&gt;--force&lt;/span&gt; &lt;span class="nt"&gt;--migrate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Question
&lt;/h2&gt;

&lt;p&gt;If you have any questions you can either reply directly to this post or email me at &lt;a href="mailto:chieftech@worldesports.app"&gt;chieftech@worldesports.app&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>database</category>
      <category>php</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Welcome to World eSports</title>
      <dc:creator>Chief Technical Officer</dc:creator>
      <pubDate>Tue, 21 Mar 2023 16:52:09 +0000</pubDate>
      <link>https://dev.to/gaming/welcome-to-world-esports-4m23</link>
      <guid>https://dev.to/gaming/welcome-to-world-esports-4m23</guid>
      <description>&lt;p&gt;Welcome to World eSports Dev.to community! &lt;/p&gt;

</description>
      <category>programming</category>
      <category>worldesports</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Form Submission JS</title>
      <dc:creator>Chief Technical Officer</dc:creator>
      <pubDate>Wed, 01 Feb 2023 21:01:17 +0000</pubDate>
      <link>https://dev.to/keithprinkeyops/form-submission-js-2p93</link>
      <guid>https://dev.to/keithprinkeyops/form-submission-js-2p93</guid>
      <description>&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/keithprinkey-ops/embed/MWBQpdb?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>New to this site</title>
      <dc:creator>Chief Technical Officer</dc:creator>
      <pubDate>Tue, 31 Jan 2023 13:40:53 +0000</pubDate>
      <link>https://dev.to/keithprinkeyops/new-to-this-site-gj6</link>
      <guid>https://dev.to/keithprinkeyops/new-to-this-site-gj6</guid>
      <description>&lt;p&gt;Hey all, I am new to this site. It looks really cool and solely for devs right? &lt;/p&gt;

&lt;p&gt;I am a PHP, WordPress, and Umbraco developer. &lt;/p&gt;

&lt;p&gt;I am the Chief Technical Officer of World eSports LLC.&lt;/p&gt;

&lt;p&gt;I am building a custom contact form in PHP and looking for ideas on styling the form. I have already written the db connection. &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
