# Jabali Panel Developer Onboarding Last updated: 2026-02-06 ## Start Here - Read AGENT.md first. It is the authoritative guide. - Work from /var/www/jabali. - Use ASCII in edits unless the file already uses Unicode. ## What This Project Is Jabali Panel is a modern web hosting control panel. It has two Filament panels: - Admin: /jabali-admin (server-wide management) - User: /jabali-panel (per-tenant management) ## Key Components - Laravel 12 + Filament v5 + Livewire v4 - Root agent: bin/jabali-agent (privileged ops over Unix socket /var/run/jabali/agent.sock) - Health monitor: bin/jabali-health-monitor (service restarts and alerts) - Panel DB: SQLite at database/database.sqlite - Server metrics: app/Services/SysstatMetrics.php uses /var/log/sysstat ## Local Development (Typical) From /var/www/jabali: - composer dev - php artisan test --compact - ./vendor/bin/pint ## Production Operations (Typical) - php artisan migrate - php artisan config:cache - php artisan route:cache ## UI Rules (Non-Negotiable) - Use Filament native components only. - No custom HTML, no custom CSS, no inline styles. - Use tables for list data (EmbeddedTable or HasTable). - Use icons and icon colors for status. - Keep pages responsive and match existing patterns. ## Backups and Security - Backup/restore goes through the agent and includes strict validations. - Audit logs stored in audit_logs with retention. - DNSSEC is supported and managed via the agent. ## Installer and Upgrade Notes - Target OS: Fresh Debian 12/13 install with no pre-existing web/mail stack. - install.sh builds assets as www-data and manages permissions. - php artisan jabali:upgrade ensures caches and permissions (public/build, node_modules). ## Git Rules - Do not push unless explicitly asked. - Bump VERSION before every push. - Keep install.sh version fallback in sync with VERSION. ## Where to Look for Examples - app/Filament/Admin/Pages and app/Filament/Jabali/Pages - app/Filament/Admin/Widgets and app/Filament/Jabali/Widgets - app/Services for business logic - bin/jabali-agent for privileged operations ## Common Tasks - Screenshots: node tests/take-screenshots.cjs --output-dir=docs/screenshots - Package build: scripts/build-jabali-deps-deb.sh, scripts/build-jabali-panel-deb.sh ## Quick Checklist Before You Commit - Ran at least one test command. - UI changes follow Filament-only rules. - No permission regressions for public/build or node_modules. - No changes to vendor or node_modules.