Multi-Tenant SaaS
Give each tenant their own branded experience with unique themes, colors, and layouts while sharing core functionality.
$ composer require inertiathemes/inertiathemes
Build switchable themes with composable blocks. Works with Vue, React & Svelte.
Four simple concepts that work together seamlessly
PHP classes defining colors, settings, and visual identity
Content schemas that define what data each section needs
Vue, React, or Svelte files organized by theme
Auto-renders everything based on active theme
Define themes and blocks with clean, readable code
class DefaultTheme extends BaseTheme
{
public function colors(): array
{
return [
'primary' => '#3B82F6',
'secondary' => '#1F2937',
];
}
}
class HeroBlock extends Block
{
public function schema(): array
{
return [
'title' => 'string',
'subtitle' => 'string',
'cta' => 'array',
];
}
}
<script setup>
defineProps(['title', 'subtitle', 'cta'])
</script>
<template>
<section class="hero">
<h1>{{ title }}</h1>
<p>{{ subtitle }}</p>
</section>
</template>
<template>
<!-- Render all blocks -->
<Blocks />
<!-- Or by area -->
<Blocks area="header" />
<Blocks area="content" />
<Blocks area="footer" />
</template>
From simple landing pages to complex multi-tenant applications
Give each tenant their own branded experience with unique themes, colors, and layouts while sharing core functionality.
Create flexible, drag-and-drop page builders where content editors can arrange blocks without touching code.
Sell the same product to multiple clients with completely customized branding and user interfaces.
Build modular content systems where marketing teams manage pages through a visual block interface.
Implement system-wide theme switching with consistent styling across all components and pages.
Create multiple storefronts with different themes for seasonal campaigns, brands, or product lines.
Start creating themeable applications in minutes
composer require inertiathemes/inertiathemes
php artisan vendor:publish --tag=inertiathemes-vue
php artisan make:theme DefaultTheme
<Blocks />