a2insights/filament-saas
64.8
Adequate · 21 September 2026
3.7k
lines of production code
PHP
primary language
4
measurements over time
What this system is
This system is a Filament-based SaaS package that provides multi-tenancy infrastructure and centralized administration for managing company-specific settings, user profiles, and legal content. It enables administrators to configure SEO, security restrictions, and feature toggles while allowing end-users to customize their interface themes, language, and accessibility preferences. The package also handles dynamic generation of robots.txt and sitemaps, ensuring proper domain-based access control and search engine optimization.
How it got here
2020–2023 — Core SaaS infrastructure and admin panel development
15 changes.
This period established the foundational structure of the Filament SaaS package, focusing on core infrastructure such as user management, centralized settings, and configurable feature toggles. It involved significant dependency upgrades and rebranding while implementing essential admin panel capabilities for managing site policies, security, and user preferences. The work also introduced localization support and user-facing UI components for theme switching and profile management.
2024 — Filament SaaS package initialization
9 changes.
This period focused on establishing the core infrastructure for a Filament-based SaaS package, introducing multi-tenancy support through tenant plugins, middleware, and configuration. It also implemented essential user-facing features such as legal page views, a language switcher with cached settings, and dynamic SEO management. The work culminated in an installation command to automate setup, including role-based access and default account creation.
2025–2026 — Initial frontend setup and testing infrastructure
4 changes.
This period focused on establishing the project's foundational structure by introducing initial frontend assets, build configurations, and a dedicated Livewire testing support class. It also implemented dynamic robots.txt generation to handle domain-specific access rules and ensured proper version control tracking for stub directories.
Features
Add privacy policy, terms of service, and language switcher views
This change introduces three new Blade templates in the features directory: a privacy policy page, a terms of service page, and a language switcher component. The privacy and terms views render their respective content variables ($privacyPolicy and $termsOfService) within a centered, responsive layout that supports dark mode via Filament's configuration. The language switcher provides a dropdown UI allowing users to toggle between available locales, displaying language codes and names, and integrates with the application's locale switching logic.
resources/views/features · high confidence
Add settings pages for privacy policy and terms of service
The \src/Settings/Filament\ area now includes \Policy.php\ and \Terms.php\ pages that render the privacy policy and terms of service content. These pages read the \privacy\_policy\ and \service\ fields from \TermsSettings\ and display them as markdown. They are gated by the \terms\ setting; if terms are disabled, accessing these pages redirects to the home page. This complements the \MainSettingsPage\, which allows administrators to edit these terms and other settings.
src/Settings/Filament · high confidence
Added TenancyInitialize middleware
A new middleware class has been introduced to handle the initialization of tenant context for incoming HTTP requests. It retrieves the current tenant via the Filament facade and passes the request to the next handler, establishing the foundation for tenant-aware request processing within the application.
src/Tenant/Http · high confidence
Added language switching component with cached user settings
Introduced the SwitchLanguage component, allowing users to change their interface language. The component retrieves available locales from global settings and updates the authenticated user's locale preference. To improve performance, user settings are now cached using a cache key based on the user ID, with the cache being refreshed whenever the locale is changed.
src/Features/Filament/Components · high confidence
Added settings-driven sitemap and robots.txt management actions
This change introduces two new action classes within the settings module to handle dynamic updates to SEO-related files. The \GenerateSitemap\ action reads configured page paths from \SitemapSettings\ and writes the resulting \sitemap.xml\ to both the storage and public directories, removing them if sitemaps are disabled. The \UpdateRobots\ action allows updating the \robots.txt\ content by saving the provided string directly to the application settings. These actions provide the backend logic for managing these files via the application's settings interface.
src/Settings/Actions · high confidence
Added user profile phone and username update views
New Blade view components have been added for the user profile section to allow users to update their phone number and username. These views utilize the Filament framework's section and button components to render forms for these specific profile fields, integrating with the existing localization strings for titles, descriptions, and submit actions.
resources/views/user/livewire · high confidence
Initial English and Portuguese language files for settings and features
Added new localization files for English (en) and Portuguese (pt\_BR) that define the user-facing text for application settings and feature toggles. These files provide the labels, descriptions, and help text for configuring SEO, sitemaps, robots, site style (logo, favicon, OG), embed codes, terms and privacy policy, security restrictions, and user features such as phone number, username, and registration options.
resources/lang · high confidence
Initial SaaS configuration for user, company, legal, and robots settings
A new configuration file for the Filament SaaS package has been introduced, establishing default settings for user and company models, defining URL paths for terms of use and privacy policy, disabling legal pages by default, and restricting robots.txt output to specific allowed domains.
config · high confidence
Initial project scaffolding and configuration
This release establishes the foundational structure for the filament-saas package. It introduces standard repository documentation including a CHANGELOG, CONTRIBUTING guide, LICENSE, and SECURITY policy, alongside an updated README with installation and usage instructions. The project is configured with an .editorconfig for consistent coding styles, Pint for PHP formatting, and PHPStan for static analysis. Frontend tooling is set up with Tailwind CSS and PostCSS configurations, while CI/CD is supported by a Codecov configuration and a simplified PHPUnit setup that enforces stricter testing standards and generates JUnit reports.
(repo-wide) · high confidence
Initial release of Filament SaaS package with core infrastructure and markdown support
This change introduces the initial version of the Filament SaaS package, establishing the foundational service provider, facade, and helper functions. It adds a new Markdown service provider that configures the CommonMark engine with Tailwind CSS styling for headings, tables, links, and code blocks, accessible via a dedicated facade and helper. The package also includes a new IP restriction middleware to block specific IPs based on settings, and removes the legacy 'Octo' service provider and configuration files.
src · high confidence
Initial release of frontend assets and build configuration
This release introduces the initial set of frontend resources for the project, including a new CSS entry point that imports the Filament theme, an empty JavaScript entry point, and a placeholder for the distribution directory. These files establish the foundational structure for the project's styling and build process.
resources/css, resources/dist, resources/js · high confidence
Initial workbench service provider and views directory structure
The workbench component now includes a dedicated service provider (WorkbenchServiceProvider) that registers a basic route mapping the root path to the 'welcome' view, and the resources/views directory is initialized with a .gitkeep file to ensure the directory is tracked in version control.
resources/views, workbench · high confidence
Introduce Filament SaaS Tenant plugin and service provider
Adds the core infrastructure for multi-tenancy support within the Filament SaaS package. The new TenantPlugin registers as a Filament plugin with the ID 'filament-saas.tenant' and initializes the panel resources, while the TenantServiceProvider handles package configuration and validates the existence of the configured company model during the booting phase.
src/Tenant · high confidence
Introduce System plugin and service provider
Added the SystemPlugin and SystemServiceProvider classes to register the 'filament-saas.system' Filament plugin. This establishes the foundational structure for system-level features within the application, including the plugin ID and service provider configuration.
src/System · high confidence
Introduce configurable SaaS features via Filament plugin
This change adds a new \Features\ module that allows administrators to toggle specific SaaS capabilities through the Filament admin panel. It introduces a settings class (\Features\) backed by Laravel Settings, exposing boolean flags for features such as user registration, two-factor authentication, WhatsApp chat, reCAPTCHA, and language switching. A dedicated Filament plugin (\FeaturesPlugin\) registers a \FeaturesPage\ in the admin UI and conditionally renders the language switcher in the user menu based on the \switch\_language\ setting. The service provider wires up these settings to application configuration, syncing values like \filament-breezy\ registration and 2FA flags, and registers the \switch-language\ Livewire component.
src/Features · high confidence
Introduces centralized application settings and locale management
This change adds a new settings infrastructure to the application, introducing a main \Settings\ class that manages core configuration fields such as site name, description, keywords, logo, favicon, timezone, and locale. It also introduces dedicated settings classes for specific features: \SitemapSettings\, \TermsSettings\, \WhatsappChatSettings\, and \reCAPTCHASettings\. A \Language\ class is added to handle locale resolution from session, request, cookies, or user preferences. The \SettingsPlugin\ integrates these settings into the Filament panel, dynamically applying the configured logo, favicon, and logo size to the panel's branding. The \SettingsServiceProvider\ syncs the application name and timezone from the settings to the Laravel config, and clears the settings cache when settings are saved.
src/Settings · high confidence
New Features management page with WhatsApp chat configuration
A new FeaturesPage has been added to the Filament admin panel, allowing administrators to toggle user-related features such as registration, phone number collection, username usage, and language switching. Additionally, this page introduces configuration for a WhatsApp chat widget, enabling admins to activate the feature and set custom header, footer, and attendant details.
src/Features/Filament/Pages · high confidence
New Filament SaaS installation command with multi-role setup and asset publishing
The \src/Commands\ area now includes the \FilamentSaasCommand\, which introduces the \filament-saas:install\ command to streamline application setup. This command automates the installation process by optimizing the application, running database migrations, and configuring Filament Shield for both 'admin' and 'sysadmin' panels. It also publishes necessary assets, including themes, log-viewer, phone input, and SaaS avatars. Finally, it creates default super admin, admin, and user accounts with predefined credentials and assigns appropriate roles, providing a ready-to-use initial state for new installations.
src/Commands · high confidence
New user management resources and profile components
This change introduces a complete Filament user management system, including a UserResource with CRUD pages (Create, Edit, List, View) and a dedicated BannedUser page for handling banned accounts. It adds profile components for managing phone numbers and usernames, with the phone component enforcing mobile validation and defaulting to the 'BR' country code. Additionally, it implements a user preferences system allowing users to customize their app theme, navigation layout (sidebar vs. top), and interface zoom level, supported by a middleware that applies the selected theme CSS and a settings modal for real-time adjustments.
src/User · high confidence
New user-facing views for account suspension, theme switching, and system zoom
This change introduces several new Blade templates in the user views directory to enhance the user interface and personalization options. A new banned page displays account suspension status, including indefinite bans or specific expiration dates, along with any provided reason. Users can now switch between light, dark, and system color modes via a dedicated theme switcher component that persists the selection. Additionally, a system zoom handler allows users to adjust the interface scaling (defaulting to 100%) with persistence, and a theme selector provides a visual grid to choose from multiple design themes (such as Default, Neobrutalism, Brisk, Aberdeen, Inverness, and Edinburgh), with some themes conditionally loaded via CSS.
resources/views/user · high confidence
Behavioural changes
Add Filament Shield permissions to webhook pages
The WebhookHistory and Webhooks pages in the Filament admin panel now enforce role-based access control via the HasPageShield trait. This ensures that only users with the appropriate Shield permissions can view or interact with these webhook management interfaces.
src/Webhook/Filament · high confidence
Cached locale resolution in middleware
The new Locale middleware now resolves the application locale by checking user-specific settings first, falling back to global settings, and caches both the user settings (per user ID) and the global settings (for 10 hours) to improve performance.
src/Settings/Http · high confidence
Customize Filament Exceptions navigation group
The system now overrides the navigation group for the Filament Exceptions resource, placing it under 'System' instead of the default group. This change is implemented by extending the base ExceptionResource class to customize the getNavigationGroup method, ensuring the exceptions dashboard is grouped logically within the system section of the admin panel.
src/System/Filament · high confidence
Dynamic robots.txt generation based on allowed domains and settings
A new web route at /robots.txt now serves dynamic content instead of a static file. The system checks the current request's domain against a configured list of allowed domains; if the domain is not allowed, it returns a disallow-all directive. For allowed domains, it prioritizes custom robots text defined in application settings, falls back to a default file (public/robots.default.txt) if one exists, and finally returns a default disallow-all directive if no custom content is found.
routes · high confidence
Fixes
Added .gitkeep to stubs directory
A .gitkeep file was added to the stubs directory to ensure the directory is tracked by version control, as empty directories are typically ignored by Git.
stubs · high confidence
Test coverage
Added Livewire testing support class; Initial test suite for UserPreferences and project architecture.
Dependencies
Major dependency overhaul and package rebranding to Filament SaaS
The project has been rebranded from 'octo' to 'a2insights/filament-saas', including updated namespaces, service providers, and composer metadata. This change introduces a comprehensive upgrade of the dependency stack: the PHP requirement is raised to ^8.3, and Laravel dependencies are updated to ^13.0. Filament packages are upgraded to ^5.8, Livewire to ^4.1, and Symfony Intl to ^7.2. New integrations include SEO tools (artesaos/seotools, ralphjsmit/laravel-seo, spatie/laravel-sitemap), various Filament plugins (shield, breezy, spotlight, daterangepicker-filter, tinyeditor, etc.), and multiple theme providers. The build system now uses Tailwind CSS v3.3.3 with PostCSS and esbuild, defined in a new package.json.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 62 → 65 (+2.5)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 95 (-5.0)
- Architecture 97 → 96 (-1.3)
- Maturity 41 → 43 (+1.3)
- Readiness 67 → 80 (+13.3)
- Security 94 → 92 (-1.4)
- Accessibility 82 (new)
Resolved (10)
- Boundary-crossing change coupling: FeaturesPlugin.php ↔ MainSettingsPage.php (src/Features/FeaturesPlugin.php)
- Boundary-crossing change coupling: FeaturesPlugin.php ↔ SettingsPlugin.php (src/Features/FeaturesPlugin.php)
- Boundary-crossing change coupling: FeaturesPlugin.php ↔ UserPlugin.php (src/Features/FeaturesPlugin.php)
- Boundary-crossing change coupling: FeaturesPlugin.php ↔ UserResource.php (src/Features/FeaturesPlugin.php)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- No exposed public API
- Off-boarding risk: anonymized user #1
- Scanner failed to run — not a clean result
- Test reliability not included
New (36)
- Boundary-crossing change coupling: FeaturesServiceProvider.php ↔ UserServiceProvider.php (src/Features/FeaturesServiceProvider.php)
- Dependency hygiene PARTLY measured — Composer dependencies read, no committed lock to grade for currency
- Documentation: no usage examples (README.md)
- Duplicated block (12 lines × 2) (src/User/Filament/Components/Phone.php)
- Duplicated block (13 lines × 2) (src/User/Filament/Widgets/UsersChart.php)
- Duplicated block (7 lines × 2) (src/User/Filament/Components/Phone.php)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- MethodTooLong: MainSettingsPage.getFormSchema (src/Settings/Filament/Pages/MainSettingsPage.php)
- Rotate the exposed credentials — git history can't be un-committed
- Scanner failed to run — not a clean result
- Scanner failed to run — not a clean result
- Secret: generic-api-key (.vscode/settings.json)
- TodoComment (src/Features/Features.php)
- TodoComment (src/Features/Features.php)
- TodoComment (src/Features/Features.php)
- TodoComment (src/Features/Features.php)
- …and 16 more
Changes since last survey
- 2 commits — 2 feature/other, 0 fixes
By area
- (repo) — 1 commit
- (root) — 1 commit
Notable commits
- change: Merge branch 'main' of github.com:a2insights/octo-core
- change: chore: update Filament package versions to ^5.8 and clean up command logic
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
a2insights/filament-saas was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 7b58e37334893d00fd15d2857d46b59541911363 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.