$ show xibosignage/xibo-cms
Xibo CMS is a full-stack digital signage content management system that enables users to create, schedule, and manage content displayed on screens. The backend is built with PHP (Slim framework, Symfony EventDispatcher, Phinx migrations) and exposes RESTful APIs consumed by a modern React/TypeScript SPA frontend (Vite, TanStack Query, Tailwind CSS). It supports player communication via XMR (message relay) and legacy SOAP-based XMDS. Key features include layout and playlist management, media library, scheduling with dayparting and recurrence, reporting (proof of play, bandwidth, session history), OAuth2 authentication, multi-tenancy via folders and permissions, and a widget/module system with connectors. The codebase is large and actively maintained, with extensive frontend tests (Vitest) and Docker-based development/deployment. However, it carries some technical debt from a legacy jQuery/Bootstrap UI that coexists with the modern React frontend, and a high volume of database migrations indicates long evolution.
The LLM identified 5 files worth highlighting for reuse:
A collection of reusable table cell components (ActionsCell, StatusCell, TextCell, TagsCell, etc.) that can be extracted and used in any React data table. They are self-contained, accept standard props, and demonstrate a clean composition pattern for rendering different data types in table rows.
A reusable React hook that encapsulates folder CRUD operations (create, rename, move, delete) with loading state, notification feedback, and a callback pattern. It is isolated from specific UI components and can be reused in any folder management context.
A security-critical PHP class that resolves file paths for the library subsystem, explicitly preventing path traversal and symlink escape. It is a self-contained utility that can be extracted and reused in any PHP application requiring secure file path resolution.
A centralized Axios-based API client with interceptors for handling 401/403 responses, session expiry, and CSRF token injection. It provides a consistent base URL and error handling pattern that can be reused across any frontend project needing a robust HTTP client.
Base class for a custom event system used throughout the CMS. It defines a pattern for domain events with static $NAME properties and dispatch via Symfony EventDispatcher. This pattern is reusable in any PHP application needing a decoupled event-driven architecture.