Developer Guide
Technical documentation for developers who want to understand the IonGuard platform architecture, create new modules, or extend existing functionality.
Architecture
IonGuard is built on a modular architecture where the platform core provides:
- Multi-tenancy with row-level isolation (single-database)
- Authentication and authorization system with 5 hierarchical profiles
- Alert engine with registerable handlers per module
- Event system with real-time broadcasting (WebSocket)
- Reports system with asynchronous export
- Complete Docker deploy pipeline
Modules extend the platform by adding:
- Their own models, migrations, and seeders
- Controllers (Web + API) with their own routes
- Frontend pages (React + Inertia)
- Alert handlers and report handlers
- Scheduled jobs and commands
- Specific configurations
- MQTT workers or other processes
Technology stack
| Layer | Technology |
|---|---|
| Backend | PHP 8.4 + Laravel 12 |
| Frontend | React 19 + TypeScript 5.9 |
| Bridge | Inertia.js v2 |
| CSS | Tailwind CSS 4 |
| UI | Radix UI + CVA + Lucide React |
| WebSocket | Laravel Reverb + Echo |
| Auth | Fortify + Sanctum |
| Database | MariaDB 11 |
| Time-series | InfluxDB 2.7+ |
| Cache/Queue | Redis (Valkey 8) |
| MQTT | Mosquitto |
| Tests | Pest v4 |
Guides
Understanding the system
- Module System — How the modular architecture works
- Module Contract — Interface that every module implements
- Modular Frontend — How modules register pages, components, and translations
Creating extensions
- Creating a Module — Step-by-step guide
- Alert Handlers — Adding new alert types
- Report Handlers — Adding new reports
- Hardware Drivers — Integrating new BLE devices