A standalone developer toolkit and deployment tool for IPS Community Suite (≤ v4.7.19). It enables developers to synchronize HTML templates, CSS stylesheets, language strings, settings, friendly URL (FURL) rules, and database migrations from their application's dev/ directory directly to the master theme set without needing the performance-heavy IN_DEV mode enabled on their local or production environment.
- Multi-App Autodiscovery: Automatically scans your IPS
/applications/directory for any custom apps containing adev/folder. - Master Theme Deployment: Deploys raw
.phtmltemplates and.csssource files directly to the master theme (set_id = 0) to prevent theme sync issues. - Automatic Non-Master Cleanup: Automatically deletes compiled non-master templates and CSS rows when deploying modifications to prevent local overrides from blocking your updates.
- DB Schema Migrations: Scans and executes pending database migrations from the application's
setup/upg_XX/queries.jsonand runs custom procedural steps fromupgrade.php. - Resource Synchronizations:
- Language Strings: Inserts or updates word definitions from
data/lang.xmlintocore_sys_lang_wordsfor all installed languages. - Settings: Synchronizes application default configuration parameters from
data/settings.json. - Friendly URLs: Parses and merges Friendly URL routing rules from
data/furl.jsondirectly into the IPS Data Store configuration.
- Language Strings: Inserts or updates word definitions from
- Safety Backups & Retention: Automatically creates a database backup (as JSON) before every deploy or rollback operation and enforces a backup retention limit (default: 10 backups per app).
- Token-based Authentication: Protects web access with an arbitrary secure secret token configured via a
.envenvironment file. - CLI Support: Fully featured Command Line Interface supporting automated builds, dry-runs, database migrations, listing backups, and running rollbacks.
- Dark Mode Dashboard: Gorgeous, responsive user interface designed with a dark-theme aesthetic, status badges, update notifications, and real-time scanning.
- PHP 7.4 or newer (supports PHP 8.x)
- IPS Community Suite version 4.0 up to 4.7.19
- A custom application with a
dev/directory containing source files (e.g.dev/html/and/ordev/css/)
-
Download / Clone: Clone this repository into the root directory of your IPS forum installation:
git clone https://github.com/Pokemon-Millennium/ips-devkit.git ips-devkit
Note: Place the
ips-devkitdirectory directly inside the forum root alongsideinit.php. -
Configure Environment: Copy the template configuration file:
cp ips-devkit/.env.example ips-devkit/.env
Open
ips-devkit/.envin your text editor and generate a secure random string for the authentication token:DEPLOYER_TOKEN=your_super_secure_random_token_here
-
Verify Security: The repository includes a
.htaccessfile which denies web access to your.envconfiguration,.gitignore, and thesrc/directory. Ensure your web server configuration honors.htaccessdirectives (AllowOverride Allon Apache), or configure equivalent blocks on Nginx:location ~ ^/ips-devkit/(\.env|\.git|src/|backups/) { deny all; return 404; }
Access the web interface by navigating to your forum URL with the configured token parameter:
http://yourforum.com/ips-devkit/?token=YOUR_TOKEN
- Overview Page: Lists all discovered custom applications, showing their version and whether they have unsynced template/CSS changes or pending migrations.
- Dashboard Page (
?app=<app_key>): Showcases the detailed comparison reports for templates and CSS files, lists action buttons, and provides recovery options.
Run commands directly from the terminal. If you execute the script without --app, the CLI lists all detected applications:
php ips-devkit/index.phpCheck for changes without making database updates:
php ips-devkit/index.php --app=marketplace --dry-runphp ips-devkit/index.php --app=marketplace --autoExecutes pending DB schema changes:
php ips-devkit/index.php --app=marketplace --migrateList available backups for the app:
php ips-devkit/index.php --app=marketplace --list-backupsRollback to the latest backup:
php ips-devkit/index.php --app=marketplace --rollbackRollback to a specific backup file:
php ips-devkit/index.php --app=marketplace --rollback=backup_marketplace_2026-06-11_140000.json- Bootstrap Phase:
When initialized,
Config::init()searches the parent directories for the IPS loaderinit.php. It automatically sets up the environment variables and requires the IPS framework to load its database connection and core autoloader. - App Discovery:
AppDiscovery::discover()scans the/applications/directory, ignoring IPS system applications (core,forums,nexus, etc.) and non-development applications (those missing adev/directory). - Template Compiling Rules:
IPS stores templates in
core_theme_templates. To make custom templates show up instantly,TemplateDeployercompiles them directly into the master theme set (set_id = 0). It also deletes conflicting templates under themed sets (set_id > 0) to prevent local custom edits from overriding your development code. - Cache Invalidation:
After any modification,
Cache::clearTemplateCache()invalidates the IPS filesystem cache (underdatastore/template_<app>_*) and unsets database memory caches in\IPS\Data\Store. Finally, it updatescore_themestable caches keys to force the browser to request the fresh compiled assets.
- Clear Forum Cache: Go to the Admin Control Panel (ACP) → System → Support → Click Clear System Caches.
- Check Theme Set Conflicts: Ensure you do not have custom edits on specific theme templates that might override the master template. If you do, delete the custom template modifications in ACP → Customization → Themes → Templates.
- Check your Token: Ensure the query parameter
?token=XYZmatches the token inips-devkit/.env. - Server Blocks: Verify your server configuration isn't blocking access to the folder entirely.
Contributions are welcome! Please follow these guidelines:
- Fork the repository and create your branch:
feature/cool-new-feature - Follow PSR-12 coding standards.
- Document any public methods or architectural adjustments.
- Open a Pull Request detailing the changes and verification steps.
This project is licensed under the MIT License.