A web-based campaign data management, ETL pipeline, and reporting platform for advertising and media agencies. Built on PHP with a custom scripting language — H-Script (also called ALCODE) — that lets analysts write client-specific data-loading, transformation, and reporting pipelines without writing PHP directly.
The live demo is at hydradp.io.
| Component | Description |
|---|---|
HDAWCodeRoot/HDAWCodeRoot/ |
Core PHP web application — UI, profile management, scheduler, views |
HDAWCodeRoot/HDACron/ |
Windows .NET service that drives scheduled H-Script profile execution |
HDAWCodeRoot/HDAWCronProcess/ |
PHP cron endpoint (HDA_cron.php) |
HDAWCodeRoot/HDAWSoapProcess/ |
SOAP endpoint for external integrations (HDA_soap_accept.php) |
H-Script is Hydra's built-in ETL scripting language. Scripts (.hc files) run as "profiles" — triggered on a schedule, on file upload, by manual trigger from the web UI, or by another profile.
Typical use cases:
- Pulling data files via FTP/SFTP
- Parsing and loading records into SQL Server or MySQL
- Running SQL queries and generating HTML/PDF reports
- Emailing results and alerts between teams
Full language documentation is in Hydra_Docs/, including syntax references for loops, case expressions, state machines, file management, triggers, and events.
- PHP 7+ — application server
- SQL Server (primary, via
sqlsrvdriver) or MySQL (viamysqli) - Windows Server — required for the HDACron .NET companion service
- Standard web server (Apache / IIS)
- PHP 7+ with
sqlsrv(SQL Server) ormysqli(MySQL) extension - A SQL Server or MySQL database
- Write access to
tmp/,ErrorLogs/, andcache/directories (created automatically on first run)
- Copy
HDAWCodeRoot/HDAWCodeRoot/to your web server document root (or a subdirectory). - Create
cfg/alc_init.cfgfrom the provided example:cp cfg/alc_init.cfg.example cfg/alc_init.cfg - Edit
cfg/alc_init.cfgand fill in your database connection details, email settings, and IMAP credentials. - Access the application at:
HDAW.php?load=HDA_Enter&root=HDAWCodeRoot&home=<your-profile-name>
Note: The
cfg/alc_init.cfgfile contains credentials and is excluded from version control via.gitignore. Never commit it.
Hydra/
├── HDAWCodeRoot/
│ ├── HDAWCodeRoot/ PHP web application
│ │ ├── cfg/
│ │ │ └── alc_init.cfg.example Configuration template
│ │ ├── Classes/ PHP class library
│ │ ├── Scripts/ Client-side JavaScript
│ │ ├── css/ Stylesheets
│ │ ├── Images/ UI assets
│ │ ├── templates/ Output templates
│ │ └── HDA_*.php Core modules
│ ├── HDACron/ .NET Windows cron service
│ ├── HDAWCronProcess/ PHP cron endpoint
│ └── HDAWSoapProcess/ PHP SOAP endpoint
└── Hydra_Docs/
├── H-ScriptCore/ H-Script language documentation (PDFs)
└── H-ScriptCodeSummary.docx
Contributions are welcome. Please open an issue before submitting a pull request for non-trivial changes so the direction can be agreed first.
Areas where help is most valuable:
- Migrating SQL queries to use parameterised statements (currently raw string concatenation)
- Improving session security (session fixation, cookie handling)
- PHP modernisation (moving away from globals, adding type declarations)
- MySQL backend parity with the SQL Server backend
- Documentation and worked H-Script examples
GPL-3.0 — see LICENSE.