Appearance
Plugins Documentation ​
File Information ​
- Path:
app/plugins/ - Purpose: Nuxt plugins for application initialization
Overview ​
Plugins are Nuxt plugins that run during application initialization. They are located in app/plugins/ and are loaded in a specific order.
Plugin Load Order ​
Plugins are loaded in this order (critical for proper initialization — do not change):
pinia.ts- Pinia store setup (must load first)api-client.ts- API client setup (must be before auth-init for$apiavailability)vue-query.ts- TanStack Vue Query (requires Pinia and$apifor error handling)01.auth-init.ts- Auth initialization (requires Pinia and$api)vuetify.ts- Vuetify UI librarypdfjs.client.ts- PDF.js for PDF previewlaravel-echo.client.ts- Laravel Echo WebSocket clientstream-saver.client.ts- StreamSaver for file downloadssnackbar.client.ts- Snackbar notification systemmitt.client.ts- Event busvue-audio-visual.client.ts- Audio visual componentbranding-colors.client.ts- Brand-specific theming (client-only)
Client-Only Plugins ​
Plugins with .client.ts suffix run only in the browser, not during SSR:
pdfjs.client.tslaravel-echo.client.tsstream-saver.client.tssnackbar.client.tsmitt.client.tsvue-audio-visual.client.tsbranding-colors.client.ts
Plugin Documentation ​
Core Plugins ​
- Pinia Plugin - State management setup with SSR hydration
- API Client Plugin - API client with authentication and error handling
- Vue Query Plugin - TanStack Vue Query: caching, deduplication, global error handling, SSR
- Auth Init Plugin - Authentication state initialization from cookies
UI Plugins ​
- Vuetify Plugin - Material Design UI component library
- Snackbar Plugin - Global notification system
Communication Plugins ​
- Laravel Echo Plugin - WebSocket communication with Pusher
- Mitt Plugin - Global event bus for component communication
Utility Plugins ​
- Stream Saver Plugin - Large file download handling
- Vue Audio Visual Plugin - Audio player with waveform visualization
Other ​
- PDF.js Plugin - PDF viewer support for asset preview (client-only)
- Branding Colors Plugin - Client-side brand theming; applies default primary/secondary to
:root
Plugin Details ​
Pinia (pinia.ts) ​
File Path: app/plugins/pinia.ts
Sets up Pinia state management with SSR hydration.
Features:
- Pinia store initialization
- SSR state serialization
- Client-side state hydration
- Prevents hydration mismatches
Documentation: Pinia Plugin
API Client (api-client.ts) ​
File Path: app/plugins/api-client.ts
Configures the API client with authentication and error handling.
Features:
- Automatic token injection
- Base URL configuration
- Error handling (401 auto-logout)
- Account status monitoring
- Request cancellation
Documentation: API Client Plugin
Auth Init (01.auth-init.ts) ​
File Path: app/plugins/01.auth-init.ts
Initializes authentication state from HTTP-only cookies.
Features:
- Cookie-based authentication
- Store initialization
- Accessible instances loading
- SSR compatibility
Documentation: Auth Init Plugin
Vue Query (vue-query.ts) ​
File Path: app/plugins/vue-query.ts
Configures TanStack Vue Query for server state, caching, and mutations.
Features:
- QueryClient with configurable
staleTime(default 5 min, viaNUXT_PUBLIC_QUERY_STALE_TIME) - Request deduplication and background refetch
- Global query/mutation error handling (401 → logout, others → snackbar)
- SSR support with hydrate/dehydrate
Documentation: Vue Query Plugin
Vuetify (vuetify.ts) ​
File Path: app/plugins/vuetify.ts
Configures Vuetify UI component library.
Features:
- All Vuetify components
- Material Design Icons
- SSR-safe configuration
- Theme configuration
Documentation: Vuetify Plugin
Laravel Echo (laravel-echo.client.ts) ​
File Path: app/plugins/laravel-echo.client.ts
Configures Laravel Echo for WebSocket communication.
Features:
- Pusher integration
- Secure server-side authentication
- Private/presence channels
- Real-time event broadcasting
Documentation: Laravel Echo Plugin
Stream Saver (stream-saver.client.ts) ​
File Path: app/plugins/stream-saver.client.ts
Configures StreamSaver for large file downloads.
Features:
- Stream-based downloads
- Large file support
- Memory-efficient
- Progress tracking
Documentation: Stream Saver Plugin
Snackbar (snackbar.client.ts) ​
File Path: app/plugins/snackbar.client.ts
Initializes global snackbar notification system.
Features:
- Success/error/warning/info notifications
- Custom icons and colors
- Auto-dismiss functionality
- Smooth animations
Documentation: Snackbar Plugin
Mitt (mitt.client.ts) ​
File Path: app/plugins/mitt.client.ts
Sets up event bus for component communication.
Features:
- Global event bus
- Event emission and listening
- Type-safe events
- Decoupled communication
Documentation: Mitt Plugin
Vue Audio Visual (vue-audio-visual.client.ts) ​
File Path: app/plugins/vue-audio-visual.client.ts
Configures audio visual component for audio playback.
Features:
- Audio player component
- Visual waveform display
- Audio controls
- Progress tracking
Documentation: Vue Audio Visual Plugin