This document outlines the technical architecture for the new Laravel-based Hestia frontend, replacing the current Vue.js/Quasar SPA. The architecture leverages Laravel's ecosystem for maximum productivity and maintainability.
- Laravel 12 - Main application framework
- Livewire 4 - Server-side interactive components
- Laravel Reverb - WebSocket server for real-time features
- Laravel Horizon - Queue monitoring and job management
- Filament 4 - Admin panel for operational tasks
- Alpine.js - Lightweight client-side interactivity
- FluxUI - Component library for consistent UI
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLIENT BROWSER β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β Blade Views β β Livewire β β Alpine.js β β
β β (Templates) β β Components β β (Interactivity) β β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LARAVEL APPLICATION β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β Controllers β β Livewire β β Models & β β
β β (API Routes) β β Components β β Eloquent β β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DATABASE LAYER (MySQL/PostgreSQL) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β User Sessions β β Application β β Job Queues β β
β β & Auth β β Data β β (Horizon) β β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β²
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β QUEUE & BACKGROUND SERVICES β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β Queue Worker β β Scheduler β β Event β β
β β (Jobs) β β (Cron) β β Broadcasting β β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β²
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MONITORING & ADMIN SERVICES β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β Horizon β β Filament β β Telescope β β
β β Dashboard β β Admin Panel β β (Debugging) β β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β²
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β REAL-TIME SERVICES β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β Reverb β β WebSocket β β Broadcasting β β
β β Server β β Connections β β Events β β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
User Browser β Nginx β Laravel β Livewire β Database β Blade Template β Browser
User Action β Alpine.js β AJAX β Livewire Component β Laravel Logic β Database β Livewire Response β DOM Update
Database Change β Laravel Event β Broadcasting β Reverb Server β WebSocket β Livewire Component β UI Update
User Action β Laravel Job β Queue β Worker β Database Update β Broadcasting Event β Real-time UI Update
Admin User β Filament Panel β Laravel CRUD β Database β Horizon Monitoring β Real-time Dashboard Updates
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FRONTEND LAYERS β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β PRESENTATION LAYER β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β β
β β β FluxUI β β Blade β β Alpine.js β β β
β β β Components β β Templates β β Interactivity β β β
β β β β β β β β β β
β β β β’ Buttons β β β’ Layouts β β β’ Dropdowns β β β
β β β β’ Forms β β β’ Navigation β β β’ Modals β β β
β β β β’ Tables β β β’ Partials β β β’ Transitions β β β
β β β β’ Cards β β β’ Components β β β’ Form helpers β β β
β β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β INTERACTION LAYER β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β β
β β β Livewire β β HTMX/AJAX β β WebSocket β β β
β β β Components β β Requests β β (Reverb) β β β
β β β β β β β β β β
β β β β’ Form handling β β β’ API calls β β β’ Real-time β β β
β β β β’ State mgmt β β β’ Validation β β β’ Live updates β β β
β β β β’ CRUD ops β β β’ Error handlingβ β β’ Event streams β β β
β β β β’ Pagination β β β’ Loading statesβ β β’ Notifications β β β
β β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ADVANCED COMPONENTS LAYER β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β β
β β β React/Vue β β Charts β β Custom β β β
β β β (When needed) β β Libraries β β Components β β β
β β β β β β β β β β
β β β β’ Complex viz β β β’ ApexCharts β β β’ File uploads β β β
β β β β’ Drag & drop β β β’ D3.js β β β’ Rich editors β β β
β β β β’ Advanced UX β β β’ Chart.js β β β’ Date pickers β β β
β β β β’ 3rd party β β β’ Metrics β β β’ Image croppingβ β β
β β β integrations β β dashboards β β β’ Advanced formsβ β β
β β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β STYLING LAYER β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β β
β β β Tailwind CSS β β Custom CSS β β FluxUI β β β
β β β Utility-first β β Components β β Theme β β β
β β β β β β β β β β
β β β β’ Responsive β β β’ Brand colors β β β’ Consistent β β β
β β β β’ Dark mode β β β’ Typography β β β’ Component β β β
β β β β’ Mobile-first β β β’ Animations β β β’ styling β β β
β β β β’ Performance β β β’ Layout helpersβ β β’ Design system β β β
β β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DATABASE CONNECTIONS β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β Primary DB β β Cache Layer β β Session Store β β
β β (MySQL/PgSQL) β β (Redis) β β (Redis) β β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β²
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CONNECTION POOLING β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β Laravel App β β Queue Workers β β Reverb Server β β
β β Connections β β Connections β β Connections β β
β β (10-20) β β (5-10) β β (2-5) β β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Core Application Tables
users (authentication, profiles)
stacks (WordPress deployments)
wordpresses (individual sites)
domains (SSL certificates, routing)
backups (backup management)
activities (audit logs, notifications)
settings (application configuration)
-- Laravel Ecosystem Tables
jobs (queue system)
failed_jobs (error tracking)
migrations (schema versioning)
personal_access_tokens (API authentication)βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β KUBERNETES CLUSTER β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β Laravel App β β Queue Worker β β Reverb β β
β β Pod β β Pod β β Pod β β
β β β β β β β β
β β β’ Web server β β β’ Job processingβ β β’ WebSocket β β
β β β’ Octane/Swoole β β β’ Background β β β’ Broadcasting β β
β β β’ File storage β β β’ tasks β β β’ Real-time β β
β β β’ Sessions β β β’ Monitoring β β β’ Events β β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β β β β
β β β β β
β β β β β
β βΌ βΌ βΌ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β²
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SHARED SERVICES β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β β MySQL β β Redis β β Horizon β β
β β (StatefulSet) β β (Deployment) β β Dashboard β β
β β β β β β β β
β β β’ Persistent β β β’ Cache β β β’ Job monitoringβ β
β β β’ Replication β β β’ Sessions β β β’ Admin access β β
β β β’ Backups β β β’ Broadcasting β β β’ Real-time β β
β β β’ High avail β β β’ Queues β β β’ metrics β β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Laravel App Service
apiVersion: v1
kind: Service
metadata:
name: hestia-laravel
spec:
ports:
- port: 80
targetPort: 8000
selector:
app: hestia-laravel
---
# Reverb WebSocket Service
apiVersion: v1
kind: Service
metadata:
name: hestia-reverb
spec:
ports:
- port: 8080
targetPort: 8080
selector:
app: hestia-reverb
---
# Horizon Dashboard Service (Internal)
apiVersion: v1
kind: Service
metadata:
name: hestia-horizon
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8000
selector:
app: hestia-horizonapiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hestia-ingress
spec:
rules:
- host: app.omnis.dev
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: hestia-laravel
port:
number: 80
- path: /horizon
pathType: Prefix
backend:
service:
name: hestia-horizon
port:
number: 80
- host: ws.omnis.dev
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: hestia-reverb
port:
number: 8080- Laravel provides routing, middleware, and business logic
- Livewire handles component state and user interactions
- Communication via method calls and property binding
- Laravel broadcasts events via
Broadcastfacade - Reverb receives and distributes WebSocket messages
- Livewire components listen for broadcast events
- Laravel dispatches jobs to queues
- Horizon monitors queue health and job processing
- Laravel provides dashboard UI for queue management
- Livewire manages server state and validation
- Alpine.js handles client-side UI interactions
- Seamless integration without complex state management
- Filament generates admin interfaces automatically
- Laravel provides underlying CRUD operations
- Filament integrates with Laravel's authorization and validation
- Connection pooling (10-20 connections per pod)
- Redis for sessions and cache (high-throughput)
- Read/write splitting for high-traffic scenarios
- Database indexing on frequently queried columns
- Browser Cache: Static assets (FluxUI, Alpine.js)
- Application Cache: Database query results, computed values
- Session Cache: User sessions and authentication state
- Horizon: Queue performance and job failures
- Laravel Telescope: Request debugging and performance profiling
- Database: Slow query monitoring and connection pooling
- Reverb: WebSocket connection health and message throughput
This architecture provides a solid foundation for the Hestia Laravel migration while maintaining the operational excellence required for the Omnis platform.