Willetts Technology's Custom CakePHP skeleton app
Requires
- php: >=8.2
- cakephp/cakephp: 5.3.*
- cakephp/migrations: ^5.0
- cakephp/plugin-installer: ^2.0
- mobiledetect/mobiledetectlib: ^4.8.03
Requires (Dev)
- cakephp/bake: ^3.6
- cakephp/cakephp-codesniffer: ^5.3
- cakephp/debug_kit: ^5.2
- josegonzalez/dotenv: ^4.0
- phpunit/phpunit: ^11.5.3 || ^12.1.3 || ^13.0
Suggests
- cakephp/repl: Console tools for a REPL interface for CakePHP applications.
- dereuromark/cakephp-ide-helper: After baking your code, this keeps your annotations in sync with the code evolving from there on for maximum IDE and PHPStan/Psalm compatibility.
- markstory/asset_compress: An asset compression plugin which provides file concatenation and a flexible filter system for preprocessing and minification.
- phpstan/phpstan: PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs even before you write tests for the code.
- 5.x-dev
- 5.3.1
- 5.3.0
- 5.2.0
- 5.1.2
- 5.1.1
- 5.1.0
- 5.0.2
- 5.0.1
- 5.0.0
- 5.0.0-RC1
- 5.0.0-beta2
- 5.0.0-beta1
- 4.x-dev
- 4.5.0
- 4.4.2
- 4.4.1
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 4.0.0-RC2
- 4.0.0-RC1
- 4.0.0-alpha1
- 3.10.1
- 3.10.0
- 3.9.1
- 3.9.0
- 3.8.0
- 3.7.1
- 3.7.0
- 3.6.5
- 3.6.4
- 3.6.3
- 3.6.2
- 3.6.1
- 3.6.0
- 3.5.1
- 3.5.0
- 3.5.0-RC1
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.6
- 3.3.5
- 3.3.4
- 3.3.3
- 3.3.2
- 3.3.1
- 3.3.0
- 3.3.0-beta2
- 3.3.0-beta
- 3.2.6
- 3.2.5
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.2
- 3.1.1
- 3.1.0
- 3.1.0-beta
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 3.0.0-RC2
- 3.0.0-RC1
- 3.0.0-beta3
- 3.0.0-beta2
- 3.0.0-beta1
- 3.0.0-alpha2
- 3.0.0-alpha1
- dev-master
This package is auto-updated.
Last update: 2026-04-08 16:49:28 UTC
README
A custom application skeleton for creating applications with CakePHP 5.x, enhanced with Willetts Technology's development tools and customizations.
This skeleton builds upon cakephp/app with additional features for streamlined development and deployment.
Tech Stack
| Layer | Technology |
|---|---|
| Framework | CakePHP 5.3 (PHP 8.4+) |
| Database | MySQL 8.4+ |
| Web Server | Nginx with PHP-FPM |
| Frontend | Bootstrap 5.3 via ButterCream plugin |
| Icons | Font Awesome 7 (CSS + webfonts) |
| JS Libraries | Vanilla JS (no jQuery), TomSelect, Inputmask |
| Build Tool | Gulp 5 (SCSS compilation, JS bundling, font installation) |
| Dev VM | Multipass via Innkeeper |
| Provisioning | Ansible playbooks (ansible/playbooks/development.yml) |
| Dev Services | Memcached, Mailpit (email testing), Chrony, SSL (self-signed) |
Custom Features & Enhancements
ButterCream Plugin
This skeleton includes QueenCityCodeFactory/butter-cream, a custom CakePHP plugin providing Bootstrap 5 integration and theme components.
Development Environment
- Innkeeper / Ansible provisioning - Complete playbooks and roles for automated development environment setup
- Pre-configured services: PHP 8.4+ with FPM, Nginx with SSL, MySQL, Memcached, Mailpit, Node.js (NVM), Chrony
Frontend Asset Pipeline
- Gulp 5 build system - Automated SCSS compilation, JavaScript bundling, and asset optimization
- Modern frontend stack: Bootstrap 5.3+, Font Awesome 7, TomSelect, Inputmask
- No jQuery - All JavaScript is vanilla JS using native DOM APIs and Bootstrap 5 APIs
Custom JavaScript Modules
Pre-built JavaScript utilities in assets/app/js/:
ajax-pagination.js- AJAX pagination, search forms, clear buttons, page-limit selectsapp-core.js- Core initialization (tooltips, popovers, masks, TomSelect, FormatTime)app-util.js- Shared utilities (HTML/attribute escaping)bulk-select.js- Table row select-all / bulk action checkboxesclipboard.js- Clipboard API wrapperdark-mode.js- Bootstrap 5.3 light/dark/auto theme toggledependent-selects.js- Cascading AJAX-powered dependent dropdownsformat-time.js- UTC-to-local time conversion usingIntl.DateTimeFormatmodal-confirm.js- Bootstrap 5 confirmation modals for CakePHP helperspoptart.js- Bootstrap 5 toast notification systemsession-monitor.js- Session timeout monitoring with in-page re-logintmp-file-upload.js- Temporary file upload with progress bars
Enums (src/Enum/)
PHP 8.4 native backed enums with a shared LabeledEnum interface and HasLabeledOptionsTrait trait:
Priority- low, medium, high, critical (with Bootstrap badge colors)Status- draft, active, inactive, archived (with Bootstrap badge colors)UsState- All 50 US states + DCCanadianProvince- All 13 Canadian provinces and territories
Enums provide options() for Form select helpers, values() for inList() validation, and label()/color() for display.
Custom SCSS Components
Organized styles in assets/app/scss/:
- Action dropdowns, button groups, custom buttons (xs sizes, square buttons)
- Callouts, cards, form enhancements, navigation
- Filter drawer, responsive layout, PDF-specific styles
- Template-specific styles
Additional Configuration
- Enhanced .gitignore for development environment
- Crontab management
- Development-specific SSL configuration
The framework source code can be found here: cakephp/cakephp.
Quick Start
See docs/development-environment.md for full setup instructions.
- Clone this repository and configure:
cp config/app_local.example.php config/app_local.php
- Launch the development environment:
innkeeper up
- Install dependencies and build assets:
innkeeper exec composer install innkeeper exec npm install innkeeper exec gulp
Frontend Assets
Build with Gulp:
innkeeper exec gulp # Build all (lint, compile, fonts, cache-bust) innkeeper exec gulp styles # Rebuild CSS only innkeeper exec gulp scripts # Lint + rebuild JS only innkeeper exec gulp fonts # Reinstall font files innkeeper exec gulp watch # Build then watch for changes
Documentation
- docs/development-environment.md - Local setup walkthrough
- docs/database.md - Database configuration (Docker / VM MySQL)
- docs/frontend-assets.md - Gulp pipeline, SCSS, JS, vendor libraries
- docs/innkeeper.md - Innkeeper CLI reference
- docs/migrations.md - Migration creation, consolidation, cleanup
- CHANGELOG.md - Version history and notable changes
Configuration
Read and edit the environment specific config/app_local.php and set up the
'Datasources' and any other configuration relevant for your application.
Other environment agnostic settings can be changed in config/app.php.
The layout includes:
- Responsive navigation
- Custom button styles and components
- Card and callout components
- Form enhancements
- PDF-optimized styles
- Mobile-responsive design
Maintenance
Updating
Since this skeleton includes custom modifications on top of the upstream CakePHP/app, updates should be done carefully:
-
Fetch the latest upstream changes:
git fetch upstream 5.x
-
Review the changes before merging:
git log HEAD..upstream/5.x
-
Merge upstream changes:
git merge upstream/5.x
-
Test thoroughly, particularly:
- Custom controller and view modifications
- ButterCream plugin compatibility
- Asset compilation
- Ansible playbooks
Dependencies
- PHP: 8.4 or higher
- CakePHP: 5.3+
- Node.js: 20+ (managed via NVM in the VM)
- Composer: Latest version
Credits
- Built on CakePHP
- Customized by Willetts Technology, Inc.
- Maintained by QueenCityCodeFactory