A skeleton to quickly cook some gourmet CakePHP web apps.
NOTE: Platform is in beta, still missing a couple more packages but ready to help you quickly get started with your CakePHP 3 application.
Put simply, the official app skeleton is very basic (and rightfully so).
Platform, while replicating the official app skeleton as much as possible, distinguishes itself by a few structural changes, some pre-installed/configured libraries/plugins and some 'best practices'.
- cakephp/cakephp to power the application.
- cakephp/migrations - the official CakePHP migrations shell.
- friendsofcake/bootstrap-ui to Bootstrap*-ify* CakePHP.
- friendsofcake/crud to quickly get things going.
- gourmet/email to better create/manage emails.
- gourmet/faker to generate fixture and seed data.
- gourmet/robo to run build or other tasks using Robo.
- josegonzalez/dotenv to easily manage environment variables.
- markstory/asset_compress to handle asset compression, minification, etc.
- mobiledetect/mobiledetectlib.
- cakephp/bake - the official CakePHP bake tool.
- cakephp/cakephp-codesniffer - the official CakePHP code standard sniffs.
- cakephp/codeception the official CakePHP module for Codeception
- cakephp/debug_kit - the official CakePHP debugging tool.
- codeception/specify BDD code blocks for PHPUnit & Codeception.
- codeception/verify BDD assertion library for PHPUnit.
- d11wtq/boris
- gourmet/whoops to beautify errors and exceptions (only in debug mode).
Assets are installed using robloach/component-installer:
It is assumed that you have the following installed globally:
- Composer - PHP package manager
If (or once) you have them all installed, run:
composer create-project -s dev gourmet/platform [app_name]
This will create the app_name project folder and download all dependencies.
Platform's configuration is broken into 'scopes':
- application
- asset_compress
- cache
- database
- dispatcher
- error
- log
- paths
- plugin
- routes
- security
- session
This makes configuration a little more organized (compared to a single file) and easily accessible using your IDE's fuzzy finder (try typing 'log' in the fuzzy finder, the first matching file should the log config file).
To reduce the # of requires, a build process should concatenate all these and use the resulting file in production. It has yet to be implemented.
To enable debug
mode without having to modify any file:
touch .debug
or use the DEBUG
environment variable.
To keep things DRY and not re-invent the wheel, ansible-galaxy
(the Ansible
package manager) is used. To install the roles:
ansible-galaxy install --role-file ansible/requirements.yml --force
For more, read [Ansible's official documentation].
A Vagrantfile
is included to make it easy to start a local VM using the
Ansible provisioner. Modify it to suit your needs, but the defaults should be
a good start in most cases. They assume:
Box: trusty64
Box Url:
Memory: 512MB
CPUs: 1
Synced Folders: ./ -> /vagrant (using NFS)
The ansible
provisioner is the preferred method but if you don't have it installed
locally, no worries. A shell provisioner will install Ansible on the VM and run the
playbook.
All you need to do is:
vagrant up
To manually run the playbook (after an initial vagrant up
):
ansible-playbook ansible/provision.yml \
--private-key=.vagrant/machines/default/virtualbox/private_key \
-i .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory \
-u root
Sometimes, running the above command will trigger the following error:
fatal: [default] => SSH Error: Host key verification failed.
In those cases, just make sure that your ~/.ssh/known_hosts
- Use monolog/monolog to handle all types of logging. See #2033.
- Add link to capcake deployments.
- Add link to rocketeer deployments.
Platform uses semantic versioning:
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
Copyright (c) 2015, Jad Bitar and licensed under The MIT License.