2017 © Pedro Peláez
 

project platform

Platform for CakePHP 3 web applications

image

gourmet/platform

Platform for CakePHP 3 web applications

  • Monday, February 22, 2016
  • by jadb
  • Repository
  • 4 Watchers
  • 16 Stars
  • 156 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 4 Open issues
  • 3 Versions
  • 2 % Grown

The README.md

Platform for CakePHP 3 Web Application

A skeleton to quickly cook some gourmet CakePHP web apps., (*1)

NOTE: Platform is in beta, still missing a couple more packages but ready to help you quickly get started with your CakePHP 3 application., (*2)

But Why?

Put simply, the official app skeleton is very basic (and rightfully so)., (*3)

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'., (*4)

Pre-installed packages

PHP packages

Development dependencies

CSS/JS assets

Assets are installed using robloach/component-installer:, (*5)

Get started

It is assumed that you have the following installed globally:, (*6)

If (or once) you have them all installed, run:, (*7)

composer create-project -s dev gourmet/platform [app_name]

This will create the app_name project folder and download all dependencies., (*8)

Configure

Platform's configuration is broken into 'scopes':, (*9)

  • application
  • asset_compress
  • cache
  • database
  • dispatcher
  • email
  • 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)., (*10)

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., (*11)

Quick Tips

To enable debug mode without having to modify any file:, (*12)

touch .debug

or use the DEBUG environment variable., (*13)

Provisioning

To keep things DRY and not re-invent the wheel, ansible-galaxy (the Ansible package manager) is used. To install the roles:, (*14)

ansible-galaxy install --role-file ansible/requirements.yml --force

For more, read [Ansible's official documentation]., (*15)

Local development

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:, (*16)

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., (*17)

All you need to do is:, (*18)

vagrant up

To manually run the playbook (after an initial vagrant up):, (*19)

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:, (*20)

fatal: [default] => SSH Error: Host key verification failed.

In those cases, just make sure that your ~/.ssh/known_hosts, (*21)

TODO

Versioning

Platform uses semantic versioning:, (*22)

Given a version number MAJOR.MINOR.PATCH, increment the:, (*23)

  • 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., (*24)

License

Copyright (c) 2015, Jad Bitar and licensed under The MIT License., (*25)

The Versions