Dope Game Core

1.1.0 2018-02-28 23:45 UTC


PDS Skeleton Codeship Status for CodyErekson/Nucleus VERSION LICENSE

A Slim based PHP application scaffolding.

This is more than a framework, thus the word "scaffolding." Nucleus is a fully functional out-of-the-box web application. All you need to do is build your environment, define values in config/.env, run the database migrations and seeds, then your app is ready to go!

The major components and relevant documentation are below:


  • PHP >= 7.1
  • Composer
  • NPM
  • MariaDB 10.1.30 or equivalent


php composer create-project chillem/nucleus [your-directory-name]

That command will create a new directory and clone Nucleus into it. Next you need to point a virtual host to the public/ directory and ensure that logs/ is writeable by your web server user.

Fetch the required NPM modules:

npm install

Copy config/env.dist to config/.env and edit that file with all of your required configuration values.

Next run the initial database migration to create the schema and populate some initial data:

php vendor/bin/phinx migrate -e development

If you want to insert the data that I initially use (some users and role associations) run the following:

php vendor/bin/phinx seed:run -s GlobalSettings

php vendor/bin/phinx seed:run -s Users

php vendor/bin/phinx seed:run -s Roles

php vendor/bin/phinx seed:run -s RoleUser

Use the CLU utility to deploy the default template:

bin/nucleate build

Finally, update composer.json to reflect your application's details.

CLI Utility

v1.0.1-beta introduces a new semi-experimental feature -- a CLI command runner. The first functionality provider is that of a wrapper around those CLI scripts provided by other packages.

To run Phinx commands:

bin/nucleate db migrate -e development

To run PHPUnit:

bin/nucleate test

To run PHPCS:

bin/nucleate cs -n --standard=PSR1,PSR2 src/

bin/nucleate csfix -n --standard=PSR1,PSR2 src/

Anything else is passed directly through to the command runner. Commands are defined in src/Helpers/Commands and extend the BaseCommand class.

More information about commands can be found here: (Note: I have chosen to use the nomenclature "command" rather than "task" for the sake of consistency.)