orchidsoftware/platform
51.6
Adequate · 19 September 2026
21.4k
lines of production code
PHP
with JavaScript
1
measurement over time
What this system is
This system is the Orchid admin dashboard platform, a Laravel-based framework designed to generate administrative interfaces and backend management tools. It provides a comprehensive suite of components for building screens, handling user authentication and role-based access control, and managing data through tables, forms, and charts. The platform integrates modern frontend technologies like Hotwired Turbo and Stimulus to deliver a responsive, real-time user experience with a Fluent UI design system.
How it got here
2016–2018 — Platform modernization and architecture rewrite
36 changes.
This period focused on a comprehensive architectural overhaul of the Orchid platform, migrating the frontend to Vite, Bootstrap 5, and Hotwired Turbo while restructuring the backend with modular service providers and decoupled presenter components. The work introduced modern PHP standards, UUID-based database schemas, and a robust testing infrastructure to support new features like user impersonation, asynchronous screen building, and granular attachment management.
2019–2020 — UI modernization and test expansion
41 changes.
The project underwent a significant interface overhaul, migrating to Bootstrap 5, Hotwired Turbo, and Vite while introducing a Fluent UI theme and modernizing dashboard templates. This period also focused heavily on structural refactoring of screen actions, layouts, and permissions, accompanied by a massive expansion of unit, feature, and browser test coverage to ensure stability.
2021–2026 — Stimulus migration and platform modularization
20 changes.
The JavaScript layer was rewritten from jQuery to Hotwired Stimulus and Turbo, introducing new Blade components for breadcrumbs, notifications, and real-time streams. Concurrently, the platform's internal architecture was refactored into modular configuration traits, and comprehensive unit and browser tests were added to support these changes and new features like database filters and cell rendering.
Features
Added Popover component for screen elements
A new Blade component named \Popover\ has been added to the \src/Screen/Components\ directory. This component allows users to render popover content with configurable placement options (top, right, bottom, left, or auto) and only renders when content is provided, facilitating the addition of contextual help or additional information to table cells and other screen elements.
src/Screen/Components · high confidence
Added RoleFilter stub for user role filtering
A new RoleFilter stub has been added to the application scaffolding, providing a ready-to-use filter for restricting user lists by role. This filter integrates with the Orchid platform to display a dropdown of available roles and applies the selection to the Eloquent query builder, allowing users to easily filter users based on their assigned roles.
stubs/app/Orchid/Filters · high confidence
Added Sortable trait for model ordering
Introduced the Sortable trait in src/Platform/Concerns, providing Eloquent models with built-in support for custom ordering. This trait allows models to define a specific column for sorting (defaulting to 'order') and includes methods to retrieve and set sort values, as well as a query scope to easily order results by that column.
src/Platform/Concerns · high confidence
Added UserPresenter stub for Orchid scaffolding
The stubs directory now includes a new UserPresenter class (stubs/app/Orchid/Presenters/UserPresenter.php) that scaffolds a presenter for the User model. This presenter implements Orchid's Personable and Searchable contracts, providing default UI labels ('Users'), titles (derived from the user's name), and subtitles (showing up to 20 characters of role names or 'Regular User'). It also configures the edit URL, Gravatar image generation, and integrates with Laravel Scout for search functionality, returning 3 results per search page.
stubs/app/Orchid/Presenters · high confidence
Added base cell components for screen rendering
Introduced a new set of view components in the \src/Screen/Components/Cells\ directory to handle the display of specific data types within screen cells. This includes \Boolean\ for rendering true/false values with customizable labels, \Currency\ and \Number\ for formatted numeric output with configurable separators and decimals, \Percentage\ for displaying values as percentages, \Text\ for rendering titles and clamped text content, and time-related components (\DateTime\, \DateTimeSplit\, \Time\) for formatting dates and times using Carbon with support for custom formats and timezones.
src/Screen/Components/Cells · high confidence
Added database seeders for Orchid platform entities
New seeder classes have been added to the database/seeders directory to populate the application with initial data. This includes AttachmentsTableSeeder for generating sample file attachments, RolesTableSeeder for creating five role records, and UsersTableSeeder for creating ten user records. The OrchidDatabaseSeeder serves as the main entry point, though its calls to these specific seeders are currently commented out.
database/seeders · high confidence
Added dummy block component with random string generation
A new Blade view for a dummy block has been introduced, rendering a styled container with a dashed border and a heading that displays the word 'Dummy' followed by a randomly generated 8-character string. This component serves as a visual placeholder or demo element within the application's UI.
resources/views/dummy · high confidence
Added model factories for Attachment, Role, and User
New factory classes have been added for the Attachment, Role, and User models to support test data generation. The User factory creates users with hashed passwords and assigns admin permissions by default, while the Role factory generates roles with predefined permission sets for 'Admin' and 'User' types. The Attachment factory provides default values for file metadata such as name, mime type, size, and disk location.
database/factories · high confidence
Initial configuration for the Orchid admin dashboard
A new configuration file for the Orchid admin dashboard has been added, establishing the default settings for the application's administrative interface. This includes configuration for sub-domain routing, route prefixes (defaulting to '/admin'), middleware stacks for public and private routes, authentication guards, and the main dashboard index. It also defines settings for user profile routes, static resource management (stylesheets and scripts), Vite asset integration, template views for headers and footers, and default file attachment storage using the public filesystem disk.
config · high confidence
Introduce Alert and Toast flash notification classes
Added new \Alert\ and \Toast\ classes in \src/Alert\ to manage flash notifications via the session store. The \Alert\ class provides methods to flash informational, success, error, and warning messages, supports rendering custom views, and includes a \check()\ method to verify if a message exists. The \Toast\ class extends \Alert\ to add auto-hide functionality, allowing users to configure persistence, disable auto-hiding, and set custom delay durations in milliseconds or seconds.
src/Alert · high confidence
Introduce Generator engine for attachment file naming and hashing
A new Generator engine class has been added to the attachment system to handle file naming and content hashing. It generates unique file names using a configurable hash algorithm (defaulting to SHA-1) based on a unique ID and the original client file name, and computes file content hashes for deduplication. The engine also manages file extensions, MIME types, and allows setting a custom storage path.
src/Attachment/Engines · high confidence
Introduce Orchid notification channel and message types
This change introduces the \OrchidChannel\ and \OrchidMessage\ classes to handle notifications within the Orchid platform. \OrchidChannel\ extends Laravel's \DatabaseChannel\ to store notifications in the database, supporting both the new \toOrchid\ method and the legacy \toDashboard\ method for backward compatibility. \OrchidMessage\ provides a fluent API for constructing notifications with titles, messages, action URLs, and color-coded types (using the \Color\ enum). Additionally, deprecated \DashboardChannel\ and \DashboardMessage\ classes are added as thin wrappers to maintain backward compatibility with existing code and stored notifications.
src/Platform/Notifications · high confidence
Introduce Screen contract interfaces
Added new interface definitions in the \src/Screen/Contracts\ directory to standardize behavior for screen components. These contracts include \Actionable\ for repository-based builds, \Cardable\ for card metadata (title, description, image, color), \Fieldable\ for field rendering and attribute management, \Groupable\ for grouping fields, \Personable\ for user/profile display details, and \Searchable\ for integrating with Laravel Scout search functionality.
src/Screen/Contracts · high confidence
Introduce new Screen component architecture and traits
This change introduces a new set of core classes and traits for the Screen module, including \Screen\, \Layout\, \Field\, \Action\, \Cell\, \TD\, \Sight\, \Builder\, \Repository\, and \LayoutFactory\, along with the \AsSource\ and \AsMultiSource\ traits. These components provide the foundational structure for defining screen layouts, handling field rendering, managing data repositories, and supporting asynchronous operations and multi-language content retrieval within the platform.
src/Screen · high confidence
Introduces a new Presenter component for decoupling display logic from models
Adds a new \Orchid\\Presenter\ namespace containing a \Presenter\ base class, a \Presentable\ trait, and a \UsePresenter\ attribute. This allows classes to attach a presenter that encapsulates display logic, resolving it via a runtime override, a class-level attribute, or by recursively checking parent classes for the attribute. The \Presenter\ class provides property-style access that falls back to the underlying entity, keeping models free of view-related concerns.
src/Presenter · high confidence
New Blade components for breadcrumbs, notifications, and Turbo Stream
The platform now includes dedicated Blade components for key UI features. The new Breadcrumbs component automatically collapses long navigation trails into a dropdown to save space, improving usability on pages with deep hierarchies. The Notification component now renders unread notification counts for the current user, respecting the configured enabled state. Additionally, a Stream component has been added to support Turbo Stream rendering, facilitating real-time updates.
src/Platform/Components · high confidence
New Blade view templates for Action components
Added new Blade view files for the Action component system, including button, dropdown, link, menu, modal, and toggle. These views define the HTML structure and Stimulus/Turbo data attributes for each action type, enabling consistent rendering of interactive UI elements like buttons with confirmation dialogs, dropdown menus, modal triggers, and toggle switches.
resources/views/actions · high confidence
New HTTP middleware layer for access control, Turbo integration, and icon configuration
This change introduces three new middleware classes in the platform's HTTP stack. The Access middleware enforces role-based permissions, handles guest redirection to login routes, and manages impersonation states. The Turbo middleware integrates with Hotwire Turbo by intercepting redirects to ensure they use the 303 status code required for Turbo stream updates and setting appropriate headers. The BladeIcons middleware configures default icon sizes for the application's icon system.
src/Platform/Http/Middleware · high confidence
New UI components for breadcrumbs, notifications, popovers, and Turbo streams
This update introduces four new Blade components to enhance the user interface and real-time capabilities. The new breadcrumbs component supports long trails with a dropdown menu for overflow items, improving navigation clarity. The notification component now triggers a modal view and reads its polling interval from the application configuration, optimizing performance across multiple browser tabs. A new popover component provides contextual help with hover and focus triggers, while the stream component enables Turbo Stream updates for partial requests, allowing for smoother, real-time content updates without full page reloads.
resources/views/components · high confidence
New artisan commands for generating Orchid components and managing installation
The platform now includes a suite of new console commands to streamline development and setup. The \orchid:install\ command automates the initial setup by publishing configuration, migrations, assets, and stubs, running migrations, creating a storage link, and optionally updating the application's User model to extend the Orchid user class. A new \orchid:admin\ command allows users to create new administrator accounts or update permissions for existing users via the \--id\ option. Additionally, generator commands have been added for creating specific Orchid components: \orchid:chart\, \orchid:field\ (which also generates the corresponding Blade view), \orchid:filter\, \orchid:listener\, \orchid:presenter\, \orchid:rows\, \orchid:screen\, \orchid:selection\, \orchid:tab-menu\, and \orchid:table\. A new \orchid:stubs\ command enables publishing and customizing these generator stubs, while \orchid:publish\ provides a dedicated way to refresh published assets.
src/Platform/Commands · high confidence
New database filter types for flexible data querying
Added new filter classes in src/Filters/Types to support various database query operations. The Like filter now uses Laravel's whereLike method for Laravel 11.17.0+ while maintaining backward compatibility with older versions. New filters include Ilike for case-insensitive searches, Where for exact matches, WhereBetween for range queries, WhereDate for date filtering, WhereDateStartEnd for date range filtering with start/end dates, WhereIn for multiple value matching, and WhereMaxMin for numeric range filtering with minimum and maximum values.
src/Filters/Types · high confidence
New exception for missing field attributes
A new \FieldRequiredAttributeException\ class has been added to the \Orchid\\Screen\\Exceptions\ namespace. This exception is thrown when a field is missing a required attribute, providing a clear error message indicating which attribute is missing. This change improves error handling and debugging for screen field validation.
src/Screen/Exceptions · high confidence
New extensible base User model with presenter and permission support
A new base \User\ model has been added to the platform, designed to be extended rather than used directly. It integrates the \UserPresenter\ via the \\#\[UsePresenter\]\ attribute, supports filtering and sorting on user attributes, casts the \permissions\ field to a \Permissions\ value object, and includes a static \createAdmin\ method for initial setup. This change provides a standardized, extensible foundation for user management within the application.
src/Platform/Models · high confidence
New impersonation and permission value-object classes
The Access layer now includes a new Impersonation class that supports switching the authenticated user, restoring the original user, and retrieving the impersonator via a new impersonator() method (with an isImpersonating() alias). A new PermissionGroup class provides a registry for permission definitions, and a Permissions value object handles storage, casting, and wildcard-based checking of permission states. RoleAccess and UserAccess traits are updated to use these new classes, and the legacy UserSwitch class is deprecated in favor of Impersonation.
src/Access · high confidence
New layout components and modernized dashboard templates
The dashboard interface now includes a comprehensive set of new layout components—Accordion, Block, Browsing, Card, Chart, Columns, Facepile, Filter, Legend, Listener, Metric, Modal, Pagination, Persona, Row, Selection, SideMenu, Sortable, Split, TabMenu, Table, and Tabs—allowing for more structured and visually consistent content presentation. The base dashboard template has been updated to use Stimulus controllers for form handling and Turbo for navigation, improving interaction speed and reducing page reloads.
resources/views/layouts · high confidence
New metrics collection classes and Eloquent trait for chart data
This change introduces three new classes—TimeCollection, GroupCollection, and the Chartable trait—within the src/Metrics namespace to streamline how metric data is prepared for charts. TimeCollection provides methods to format time-series data, including converting labels to day names, filtering out zero values, and transforming data into a chart-ready array structure. GroupCollection handles categorical data, offering a toChart method that formats grouped results for visualization. The Chartable trait adds Eloquent scope methods (such as countByDays, averageByDays, sumByDays, maxByDays, and minByDays) to models, allowing developers to easily query and aggregate data by time periods or groups directly from the database, returning instances of the new collection classes.
src/Metrics · high confidence
New platform events for role management and file operations
The platform now exposes specific events to allow listeners to react to key user and file actions. A new \AddRoleEvent\ and \RemoveRoleEvent\ are triggered when roles are assigned to or revoked from a user, providing access to the user and the affected roles. Additionally, file lifecycle events have been added: \UploadFileEvent\ and \UploadedFileEvent\ fire during and after file uploads, while \ReplicateFileEvent\ handles file replication tasks. An \InstallEvent\ is also available to hook into the platform installation process.
src/Platform/Events · high confidence
New screen layout components for forms, data, and navigation
This release introduces a comprehensive set of new layout classes for building Orchid screens, including Accordion, Block, Browsing, Card, Chart, Columns, Component, Content, Facepile, Legend, Listener, Metric, Modal, Persona, Rows, Selection, SideMenu, Sortable, Split, TabMenu, Table, Tabs, View, and Wrapper. These components provide structured ways to render forms, tables, charts, modals, and navigation menus, with specific features such as accordion state management, modal size and type configuration, table styling options (striped, compact, bordered, hoverable), and asynchronous listener support.
src/Screen/Layouts · high confidence
New static facades for Alert, Dashboard, Layout, Orchid, and Toast
This change introduces five new static facades in the \src/Support/Facades\ directory, providing convenient static access to core platform services. The \Alert\ facade exposes methods for creating informational, success, error, and warning alerts, including custom views and HTML escaping controls. The \Toast\ facade allows users to trigger toast notifications with similar styling options, plus configuration for auto-hiding and delay. The \Layout\ facade offers a static interface for constructing various screen layouts such as rows, tables, columns, tabs, modals, and charts. The \Dashboard\ and \Orchid\ facades provide static access to the underlying kernel for managing permissions, configuration options, and screen context. These facades simplify the API for interacting with these components throughout the application.
src/Support/Facades · high confidence
New support utilities and helpers for platform internals
The src/Support directory now includes a suite of new static utility classes and helper functions to assist with platform operations. This adds an Assert class for validating array structures (such as ID or object arrays), a Blade helper for rendering anonymous and class-based view components, and an Init class for handling byte-size conversions and maximum upload limits. It also introduces Locale detection for RTL/LTR directionality, a BootstrapIconsPath resolver, Formats for datetime and byte string formatting, and Names for generating route-based class names. Additionally, new helper functions (alert, is\_sort, get\_sort, get\_filter, get\_filter\_string, revert\_sort) provide convenient access to Alert and HttpFilter services, while a deprecated Presenter shim maintains backward compatibility.
src/Support · high confidence
Security
Screen state serialization now uses HMAC-signed payloads and encrypted transport
Screen state is now secured against tampering by wrapping non-model property values in HMAC-signed payloads (SignedValue) during serialization, and by encrypting the entire state string when transmitted via the \_state parameter. This change ensures that any modification of the serialized state by a client will be detected and rejected upon deserialization, while also supporting the proper rehydration of Eloquent models and closures.
src/Screen/Concerns · high confidence
Architecture
New modular service provider architecture for platform bootstrapping
The platform's initialization logic has been restructured into four distinct service providers to improve modularity and separation of concerns. The new \FoundationServiceProvider\ handles core registrations, including loading views and translations, registering third-party providers (Scout, Active, Breadcrumbs), and setting up Laravel Octane event listeners to flush dashboard state. The \ConsoleServiceProvider\ is now responsible exclusively for registering artisan commands and configuring the various publishable assets (migrations, language files, views, config, and public assets). The \PlatformServiceProvider\ manages platform-specific boot logic, such as registering custom icon directories and defining default permission groups. Finally, the \RouteServiceProvider\ centralizes route definition, applying the 'orchid' middleware group (Turbo, BladeIcons, Access) and configuring domain/prefix settings for dashboard, auth, and application routes.
src/Platform/Providers · high confidence
Behavioural changes
Application visual theme updated to Microsoft Fluent UI
The public-facing interface now uses a new color palette and design system based on Microsoft's Fluent UI. This change updates the application's CSS variables, typography, and component styling (such as forms, buttons, and tables) to align with the Fluent design language, affecting the overall look and feel of the user interface.
public · high confidence
Complete rewrite of screen field classes to modern PHP standards
The screen field classes in src/Screen/Fields have been completely rewritten to use strict typing, modern PHP 8+ syntax (such as constructor property promotion and union types), and fluent method chaining. This change introduces new fields like Attach, Matrix, and NumberRange, while significantly refactoring existing fields (Input, Select, DateTimer, etc.) to improve type safety and maintainability. Users will benefit from better IDE support, stricter validation, and a more consistent API across all form fields.
src/Screen/Fields · high confidence
Customized 404 error page with user-friendly messaging
The application now displays a dedicated 404 error page when a requested page does not exist. This page provides clear, user-friendly explanations for why the error might have occurred, such as the item being deleted, lack of access, or a broken link, and guides users on how to resolve access issues by contacting the project administrator.
resources/views/errors · high confidence
Database schema updates for roles, attachments, and notifications
The database migrations have been updated to support new structural requirements: the users table now includes a nullable JSONB permissions column, the roles table uses UUIDs for primary keys and stores permissions as JSONB, and the role\_users pivot table enforces cascade updates and deletes. Additionally, the attachments system now uses UUIDs for attachment IDs and includes a polymorphic attachmentable table, while the notifications table has been standardized to use UUIDs for IDs.
database/migrations · high confidence
Deprecated ItemPermission class and added Orchid::flush() for Octane state management
The \ItemPermission\ class is now deprecated in favor of \PermissionGroup\, with \ItemPermission\ acting as a backward-compatible alias that maps its \group\ and \items\ properties to the new structure. Additionally, the \Orchid\ class now includes a \flush()\ method that resets properties marked with the \FlushOctaneState\ attribute, ensuring proper state handling for Laravel Octane users by preventing stale data between requests.
src/Platform · high confidence
Extracted platform configuration logic into dedicated traits
The configuration responsibilities of the Dashboard class have been refactored into a set of modular traits within the \src/Platform/Configuration\ namespace. This change introduces \ManagesMenu\ for handling menu registration and rendering, \ManagesModelOptions\ for custom model mapping, \ManagesPackage\ for version and path resolution, \ManagesPermissions\ for registering and filtering permission groups, \ManagesResources\ for managing JS/CSS assets and Vite integration, \ManagesScreens\ for tracking the current screen and partial request state, and \ManagesSearch\ for registering and executing full-text search across models. Users benefit from a more modular internal structure that separates these concerns, though the public API for configuring menus, permissions, resources, and search remains functionally consistent.
src/Platform/Configuration · high confidence
Introduction of dedicated route files for authentication and core platform functionality
The application now organizes its routing logic into two new dedicated files: \routes/auth.php\ and \routes/orchid.php\. The authentication file defines specific endpoints for login, logout, and a new 'lock' screen feature, with the login flow gated by a configuration option. The main platform file establishes the core dashboard entry point, global search, async/AJAX handlers for screens and layouts, file and media management endpoints, field choices, sortable ordering, and optional notification management, all mapped to their respective controllers.
routes · high confidence
JavaScript controllers rewritten for Stimulus and Turbo
The JavaScript controllers in resources/js/controllers have been completely rewritten to use Hotwired Stimulus and Turbo, replacing the previous jQuery-based implementation. This change introduces a new ApplicationController base class and updates all field controllers (Attach, Cropper, Code, Markdown, etc.) to use Stimulus data attributes and lifecycle methods, while form submission and filtering now leverage Turbo streams for asynchronous updates.
resources/js/controllers · high confidence
Migrate to Hotwired Turbo and Stimulus with Vite integration
The JavaScript frontend has been rebuilt to use Hotwired Turbo and Stimulus 2.0, replacing previous dependencies like Select2 and Stimulus Flatpickr. This change introduces a new entry point (resources/js/app.js) that bootstraps the Turbo and Bootstrap libraries, exposes them globally, and automatically registers Stimulus controllers using Vite's glob imports. A new Orchid utility module (resources/js/orchid.js) provides a controller registration wrapper and a unique browser-tab ID generator stored in sessionStorage. Additionally, a Turbo event listener ensures that the current screen state is appended to fetch requests, improving consistency when multiple browser tabs are open.
resources/js · high confidence
New Fluent UI theme variables introduced
The application now uses a new set of SASS theme variables defined in \resources/sass/theme/variables.scss\, establishing a visual identity based on Microsoft's Fluent UI design language. This change introduces a specific color palette (using \\#0078d4\ as the primary orchid color), updates typography settings (root font size of 0.95rem), and configures UI components such as buttons, inputs, tables, and navigation with new border radii, shadows, and spacing values. It also enables CSS Grid and responsive font sizes while adding utility classes for line clamping and thumbnail sizing.
resources/sass/theme · high confidence
New UI partials for alerts, toasts, and welcome screen
The application now includes a set of new Blade view partials in the resources/views/partials directory to enhance the user interface. These include alert and toast notification components that support session-based messaging and Turbo temporary rendering for seamless updates, a confirmation modal dialog driven by a Stimulus controller, and a redesigned welcome page with documentation links and community resources. Additionally, new partials handle pagination styling, user profile display, state management via streams, and asset update warnings, providing a more consistent and modern look across the platform.
resources/views/partials · high confidence
New compact and full workspace templates with configurable footers
Added two new Blade templates for the workspace layout: a 'compact' version (resources/views/workspace/compact.blade.php) and a 'full' version (resources/views/workspace/full.blade.php). Both templates extend the main app layout and include a workspace section that yields content. A key behavioral change is the introduction of a configurable footer: the templates now use @includeFirst to check for a custom footer defined in the config key 'orchid.template.footer', falling back to the default 'orchid::footer' if not overridden. This allows users to customize the footer appearance in both workspace modes without modifying core template files.
resources/views/workspace · high confidence
New core UI component styles for buttons, forms, tables, and modals
This change introduces a new set of SCSS files in the core resources directory that define the visual styling for fundamental UI components. Users will see updated designs for buttons (including a new loading state with spinner support), form controls (with improved focus states and icon addon support), tables (with compact mode and dropdown integration), and modals (featuring new animation variants like slide-up and fill-in). Additionally, utility classes for avatars, image thumbnails, and layout wrappers are standardized to ensure consistent appearance across the application.
resources/sass/core · high confidence
New keyboard-accessible search modal interface
The search interface has been replaced with a new modal-based experience that supports keyboard navigation. This change introduces a dedicated search trigger, a modal container with an input field, and distinct templates for displaying search results and placeholder loading states. The new implementation uses data attributes to manage the modal's open/close state and search interactions, providing a more compact and accessible way to find content within the application.
resources/views/partials/search · high confidence
New stubs for user management layouts in Orchid
The stubs under \stubs/app/Orchid/Layouts/User\ have been replaced with a new set of layout classes that define the structure for the user management screens. This includes \UserListLayout\ for the main table (using \DateTimeSplit\ for dates and \Persona\ for user presentation), \UserEditLayout\ for name and email fields, \UserRoleLayout\ for role selection, \PermissionLayout\ for managing permissions with grouped checkboxes, \UserPasswordLayout\ for setting passwords, and \UserFiltersLayout\ for filtering by role. These stubs provide the default UI components for creating, editing, and listing users in an application scaffolded with Orchid.
stubs/app/Orchid/Layouts/User · high confidence
New unified SASS entry point for frontend assets
A new \resources/sass/app.scss\ file has been introduced to serve as the central entry point for the application's styles. This file imports core Bootstrap 5 styles alongside specific vendor libraries including Dropzone, Cropper.js, Flatpickr, Leaflet, Quill, and Tom-select. It also aggregates the application's core layout, utility, and form styles, as well as component-specific styles for features like accordions, charts, and the markup editor, consolidating the styling structure for these UI elements.
resources/sass · high confidence
Redesigned UI with Turbo, Vite, and Bootstrap 5
The application interface has been modernized to use Bootstrap 5, Hotwired Turbo, and Vite for asset management. Notifications are now displayed in a modal with cursor-based infinite scrolling, and the global search has been moved to a modal for improved UX. The layout includes a new dashboard structure with a collapsible aside menu, a 'Scroll to top' feature, and a command bar, while authentication pages have been restyled for better mobile support.
resources/views · high confidence
Refactored Attachment, Role, and Screen components with new models and enums
The platform introduces new Eloquent models for managing file attachments (Attachment and Attachmentable) and user roles (Role), replacing previous implementations to support UUIDs, filtering, sorting, and specific casting for permissions. Additionally, the Screen component now uses a new ChoicePayload class to handle encrypted, lazy-loaded select choices, and the Support namespace includes a new Color enum to standardize UI color definitions while maintaining backward compatibility.
orchid/platform · high confidence
Refactored HTTP controllers and introduced async/choices endpoints
The HTTP controller layer has been restructured into distinct, single-responsibility classes (AsyncController, AttachmentController, ChoicesController, etc.) replacing the previous monolithic structure. This introduces new capabilities: asynchronous screen building and partial layout rendering via AsyncController, granular attachment management (upload, sort, delete, media filtering) in AttachmentController, and on-demand choice resolution for fields via ChoicesController. Security is strengthened by enforcing permission checks on attachment actions and guarding the AttachmentController against guest access. The LoginController now supports Laravel 11.17+ authentication middleware and impersonation logout, while the SortableController adds policy-based sort-order updates. These changes improve modularity, performance, and security for platform interactions.
src/Platform/Http/Controllers · high confidence
Refactored Screen Actions into a new class hierarchy
The action components in src/Screen/Actions have been restructured into a new class hierarchy: Button, Link, Menu, ModalToggle, Toggle, and DropDown. This refactoring introduces specific behaviors such as automatic URL generation for Buttons based on the current request, slug-based active state detection for Menu items, and simplified modal parameter handling in ModalToggle. Users will see these changes as a more consistent and fluent API for building screen interactions, with improved handling of async parameters and route keys.
src/Screen/Actions · high confidence
Refactored attachment handling with new Engine interface and duplicate support
The attachment system has been refactored to introduce a new Engine interface and implementation strategy for file processing, replacing previous inline logic. This change adds the ability to allow duplicate file uploads via the new \allowDuplicates\ method on the \File\ class, resolving issues where identical files with different names were previously rejected. Additionally, the \Attachable\ trait now provides a standard \attachments\ relationship method for Eloquent models, deprecating the older singular \attachment\ method, and MIME type detection is now handled by a dedicated \MimeTypes\ class wrapping Symfony's Mime component.
src/Attachment · high confidence
Refactored field rendering views to use Blade components and consistent error handling
The field partial views (clear, hidden, horizontal, matrixRow, vertical) have been rewritten to use modern Blade syntax, including the \x-orchid-popover\ and \x-orchid-icon\ components. This change introduces consistent error handling across all field types by checking for Laravel 10/11 compatibility in the error bag, adds support for optional horizontal rules (\hr\) in horizontal and vertical layouts, and enables configurable required marks and popover content in field titles. The matrix row view now supports removable rows via a Stimulus action, and hidden fields are rendered with a \d-none\ wrapper.
resources/views/partials/fields · high confidence
Refactored field views to use Stimulus controllers and Bootstrap 5
The field view templates in resources/views/fields have been rewritten to replace the previous component-based structure with a modern architecture using Stimulus JavaScript controllers and Bootstrap 5 utility classes. This change introduces data-driven behavior for all form fields, including the new Attach field for file management, the Cropper field for image editing, and the Map field for geolocation. Existing fields like Select, Checkbox, and Datetime now rely on Stimulus actions and targets for interactivity (such as lazy loading, indeterminate states, and quick date selection), while the visual styling has been updated to use Bootstrap 5 classes (e.g., 'form-switch', 'btn-group') and SVG icons, ensuring consistent UI behavior and improved accessibility across the platform.
resources/views/fields · high confidence
Refactored filter system with new base classes and HTTP filter builder
The filter subsystem has been restructured to improve type safety and separation of concerns. A new abstract \BaseHttpEloquentFilter\ class provides a standardized constructor and parameter mapping for HTTP-based filters, while the core \Filter\ class now handles request parameter matching, display rendering, and reset link generation. A new \HttpFilter\ class centralizes the extraction and validation of filter and sort parameters from HTTP requests, including column name sanitization. The \Filterable\ trait has been updated to support these new components, allowing models to apply filters via the new \scopeFilters\ and \scopeFiltersApply\ methods.
src/Filters · high confidence
Refactored table layout components to use Blade X-views and Stimulus controllers
The table rendering logic in \resources/views/partials/layouts\ has been replaced with new, dedicated Blade view components (\td.blade.php\, \th.blade.php\, \filter.blade.php\, \selectedTd.blade.php\, and \dt.blade.php\). These files introduce structured HTML for table cells, headers, and column filters, integrating Bootstrap 5 dropdowns and Stimulus controllers (e.g., \data-controller="filter"\) to handle interactive behaviors like column visibility toggling and filter application. This change shifts the presentation layer from previous inline or legacy structures to a modular component-based approach, improving maintainability and aligning with the framework's modern UI standards.
resources/views/partials/layouts · high confidence
Refined authentication UI with impersonation support and input styling
The authentication views have been updated to improve the sign-in experience and support user impersonation. A new impersonation screen now appears when a user lacks access to a page, allowing them to switch back to their own account. The login flow now conditionally includes a 'lock me' view for re-authentication, while the standard sign-in form uses the new \requiredWithoutAsterisk\ method on email and password fields to remove the asterisk from titles. The interface also features updated Bootstrap 5 styling, including dark buttons and text emphasis classes, and adds an \inputmode\ attribute to the email field for better mobile keyboard support.
resources/views/auth · high confidence
Updated Orchid platform stubs with new menu, permission, and route structures
The stubs for the Orchid platform have been updated to reflect the current API and structure. The \PlatformProvider\ now uses \PermissionGroup\ for defining access controls and registers a comprehensive menu including navigation, example screens, and documentation links. The \orchid.php\ route file has been restructured to use the \Route::screen\ method for defining dashboard routes, including user and role management screens with integrated breadcrumbs, replacing previous routing patterns.
stubs/app/Orchid · high confidence
Updated User model stub with new filter and permission support
The generated User model stub now includes support for URL-based filtering and sorting on common attributes (id, name, email, updated\_at, created\_at) using specific filter types like Like and WhereDateStartEnd. Additionally, the model now casts the 'permissions' attribute to a Permissions value object and excludes it from JSON output, aligning with the new permissions value object implementation.
stubs/app · high confidence
Updated and expanded stub templates for screens, layouts, and filters
The stubs used to generate new Orchid components have been refreshed and expanded. Screen, field, and listener stubs now use modern PHP return types (e.g., iterable) and align with current platform conventions, including a rename from platform/dashboard to orchid. New stubs have been added for chart, presenter, rows, selection, tabMenu, and table layouts, giving you ready-to-use templates for common UI structures. Filter stubs now expose matched parameters via a method, and blade field stubs include a basic Stimulus-style controller example. These changes improve clarity, consistency, and out-of-the-box usability when scaffolding new screens and layouts.
stubs · high confidence
Updated example stubs with new chart configurations and tab menu layouts
The example stubs in the Orchid layout directory have been refreshed to demonstrate updated chart capabilities and navigation patterns. Chart examples now include specific configurations: line charts feature spline interpolation, region filling, and Y-axis markers, while bar, pie, and percentage charts have defined heights. Additionally, new TabMenu layout examples illustrate how to structure navigation with route-based and URL-based menu items, including badge support.
stubs/app/Orchid/Layouts/Examples · high confidence
Updated example stubs with new screens and modernized UI components
The example stubs in the Orchid application have been refreshed to provide a more comprehensive and modern starting point for new projects. This update introduces several new example screens, including ExampleActionsScreen (demonstrating buttons, links, and dropdowns), ExampleCardsScreen (showcasing user data cards), ExampleChartsScreen (featuring line, bar, percentage, and pie charts), ExampleGridScreen (illustrating responsive grid layouts), ExampleLayoutsScreen (displaying tabs, accordions, and columns), and ExampleTextEditorsScreen (featuring Quill, SimpleMDE, and Code fields). Existing screens like ExampleScreen, ExampleFieldsScreen, and ExampleFieldsAdvancedScreen have been updated to use newer syntax and components, such as replacing \platform\/\dashboard\ references with \orchid\, using \iterable\ return types, and integrating \Attach\ fields. The WelcomeScreen has also been updated to include partials for asset updates and welcome messages.
stubs/app/Orchid/Screens/Examples · high confidence
Updated role management stubs to use new Orchid 14.x syntax and permission API
The RoleEditScreen and RoleListScreen stubs have been rewritten to align with the new Orchid 14.x architecture. Key changes include adopting strict typing and return type declarations (e.g., \iterable\ for query and commandBar methods), replacing the old \getStatusPermission\ method with the new \statusOfPermissions\ value object API, and updating the permission handling to use \Permissions::fromEncodedForm\. The screens now feature improved default text, descriptions, and validation rules, providing a modern, type-safe starting point for role management features.
stubs/app/Orchid/Screens/Role · high confidence
Updated user management stubs with new screen structure and validation
The user management stubs in stubs/app/Orchid/Screens/User have been replaced with new implementations for UserEditScreen, UserListScreen, and UserProfileScreen. The UserEditScreen now supports both creating and editing users, using a dedicated layout for permissions and roles, and includes an impersonation button. The UserListScreen provides a paginated list with filters and a modal for editing. The UserProfileScreen allows users to update their profile information and password, with proper validation for email uniqueness and password confirmation. These changes improve the user management experience by providing a more structured and secure way to handle user data.
stubs/app/Orchid/Screens/User · high confidence
Fixes
Unify image fallbacks and fix Leaflet map z-index
This update introduces a unified broken-image fallback mixin that displays a consistent background and title text when images fail to load, ensuring layout stability across components like file attachments. It also resolves a visual regression where Leaflet map controls were obscuring dropdown menus by adjusting the map's z-index to sit just below the dropdown layer.
resources/sass/components · high confidence
Test coverage
Added browser and feature tests for Orchid platform interactions; Added browser tests for select and relation fields; Added comprehensive feature tests for the Orchid Platform; Added comprehensive unit tests for core Orchid components; Added feature tests for screen methods, routing, and property access; Added feature tests for the Example screen and user/role management routes; Added screen testing helpers; Added test application fixtures and service provider; Added test factories for DatabaseNotification and Role models; Added test fixture components for view rendering scenarios; Added test fixture for RoleNames enum; Added test fixtures for email, name, pattern, hidden, and display-less filters; Added test for TaskCompleted notification; Added test infrastructure and base test cases; Added test layout fixtures for listeners, filters, and tables; Added test policy classes for sort permission scenarios; Added test screen for Select field configurations; Added test view templates for component and layout testing; Added tests for Orchid artisan commands; Added tests for UserPresenter; Added unit tests for Screen Fields; Added unit tests for Screen Layout components; Added unit tests for Screen components and layouts; Added unit tests for Screen macro capabilities; Added unit tests for Support helpers and testing utilities; Added unit tests for screen cell components; Added unit tests for the HasTranslations trait; Added unit tests for the WhereDate filter; Expanded test fixtures for screen behaviors.
Dependencies
Updated core dependencies for Laravel 10-13 and modernized frontend tooling
The platform's dependency manifests have been updated to support Laravel versions 10.0 through 13.0, alongside Scout 9-11 and Breadcrumbs 4-6. Frontend tooling has been modernized by upgrading to Vite 8, Bootstrap 5.3, and Stimulus 3, while replacing older assets with Codemirror 6, Quill 2, and Tom Select 2.3. Conflict constraints have also been adjusted to ensure compatibility with specific Laravel and PHP ecosystem versions.
(dependencies) · high confidence
Housekeeping
Empty plugin stylesheet added
An empty SCSS file has been created at resources/sass/plugins/plugin.scss. This file currently contains no styles and serves as a placeholder for future plugin-specific styling.
resources/sass/plugins · 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
Baseline
- First survey — no prior run to compare against. CAI 52.
Lenses
- Code Health 68
- Architecture 63
- Maturity 59
- Readiness 74
- Security 67
- Accessibility 39
Changes since last survey
- 300 commits — 215 feature/other, 85 fixes
By area
- (root) — 48 commits
- src/Screen — 40 commits
- resources/views — 35 commits
- .github/workflows — 32 commits
- src/Platform — 23 commits
- tests/Unit — 19 commits
- resources/js — 18 commits
- resources/lang — 15 commits
- resources/sass — 13 commits
- public/css — 6 commits
- public/js — 6 commits
- src/Access — 6 commits
- src/Alert — 4 commits
- stubs/app — 4 commits
- .github/badges — 3 commits
- public/assets — 3 commits
- src/Attachment — 3 commits
- src/Presenter — 3 commits
- tests/App — 3 commits
- tests/Feature — 3 commits
Notable commits
- fix: Fix Dusk CI: add asset publishing step for testbench skeleton
- fix: Fix Dusk failures on Laravel 13
- fix: Fix Laravel Version Conflict (#2952)
- fix: Fix broken thumbnail sizing and unify image fallbacks (#3147)
- fix: Fix file sorting issue on servers expecting Content-Type
- fix: Fix map field not rendering inside an inactive tab (#3097) (#3130)
- fix: Fix password visibility toggle (#3112)
- fix: Fix serialization and deserialization for unsaved Eloquent models (#3003)
- fix: Fix: Added the "confirm" attribute to the property translations (#2976)
- fix: Fixed Dusk authorization tests to support Laravel 10 and 11
- fix: Fixed Pslam errors
- fix: Fixed Role tests after remove slug
- fix: Fixed SearchUser tests
- fix: Fixed Vite build generator configuration
- fix: Fixed table-compact without padding
- fix: Fixed code style
- fix: Fixed code style
- fix: Fixed code style
- fix: Fixed code style
- fix: Fixed code style
- …and 280 more
Architecture
- 0 containers · 1 bounded contexts · 0 dependency edges (baseline)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
orchidsoftware/platform 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 19 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 0113fffad8e9dcdb92e6893f2bf547805a4cd1a2 — 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-13a154b7f5d1.