How gaitco/filament-mobile works
gait/filament-mobile exposes opted-in Laravel Filament resources as a mobile JSON admin API. Its main workflow publishes the panel’s schema, then serves authorized lists and details and accepts validated writes based on the same form definitions; supporting branches cover reactive state, relations, uploads, dashboard data, and live updates. The excerpts establish several controller-to-core calls, while other endpoint wiring is represented at the documented capability level; unsampled implementation details are not inferred.
Main entry points: MobilePanelController.php Resource Endpoints · Authorizer.php Policy Authorization · RelationController.php Relation Endpoints · PanelSchemaBuilder.php Panel Schema
Components 24
Mobile API
- Panel Schema
src/PanelSchemaBuilder.php - Resource Endpoints
src/Http/MobilePanelController.php - Relation Endpoints
src/Http/RelationController.php - Reactive State
src/Http/StateController.php - Field Options
src/Http/OptionsController.php - Filter Options
src/Http/FilterOptionsController.php - Dashboard API
src/Http/DashboardController.php - Upload API
src/Http/UploadController.php - Reorder API
src/Http/ReorderController.php - Notifications API
src/Http/NotificationsController.php
Schema Introspection
- Schema Walker
src/Introspection/SchemaWalker.php - Form Introspection
src/Introspection/HeadlessSchemaHost.php
Write Processing
- Form Persistence
src/Write/RecordForm.php - Rule Extraction
src/Validation/RuleExtractor.php
Shared Services
- Resource Registry
src/ResourceRegistry.php - Policy Authorization
src-core/Authorizer.php - List Queries
src-core/ListQuery.php - Record Serialization
src-core/RecordSerializer.php - Widget Reader
src/Dashboard/WidgetReader.php - Realtime Events
src/Realtime.php - Change Broadcasts
src/BroadcastsMobileChanges.php
Other components
- Mobile Client
- Application Database
- Laravel Broadcasting
Connections 38
- Mobile Client → Panel Schema: requests schema
- Mobile Client → Resource Endpoints: requests records
- Mobile Client → Relation Endpoints: requests relations
- Mobile Client → Reactive State: submits state
- Mobile Client → Field Options: requests options
- Mobile Client → Filter Options: requests options
- Mobile Client → Dashboard API: requests dashboard
- Mobile Client → Upload API: uploads files
- Mobile Client → Reorder API: submits order
- Mobile Client → Notifications API: requests notices
- Panel Schema → Resource Registry: resolves resources
- Panel Schema → Policy Authorization: checks access
- Panel Schema → Schema Walker: publishes schema
- Schema Walker → Form Introspection: reads components
- Resource Endpoints → Resource Registry: resolves resources
- Resource Endpoints → Policy Authorization: checks access
- Resource Endpoints → List Queries: builds list query
- Resource Endpoints → Record Serialization: serializes records
- Resource Endpoints → Form Persistence: saves relations
- Relation Endpoints → Policy Authorization: checks access
- Relation Endpoints → Form Persistence: settles child forms
- Relation Endpoints → Record Serialization: serializes rows
- Reactive State → Policy Authorization: checks access
- Reactive State → Schema Walker: evaluates form
- Field Options → Policy Authorization: checks access
- Field Options → Form Introspection: resolves fields
- Dashboard API → Widget Reader: reads widgets
- Upload API → Resource Registry: resolves resources
- Upload API → Policy Authorization: checks access
- Reorder API → Resource Registry: resolves resources
- Reorder API → Policy Authorization: checks access
- Form Persistence → Rule Extraction: extracts rules
- Resource Endpoints → Application Database: reads and writes
- Relation Endpoints → Application Database: reads and writes
- Reorder API → Application Database: updates order
- Change Broadcasts → Realtime Events: checks broadcast
- Realtime Events → Laravel Broadcasting: dispatches events
- Mobile Client → Laravel Broadcasting: receives updates