• I've tried to stick to the Laravel best-practices, unless absolutely unavoidable
  • Data access is done through a Repository pattern/layer, in App\Repositories
  • Business logic/rules that touch multiple Repositories and/or Models go into Service classes - App\Services

To do an initial setup of the composer deps and install the DB

git clone
cd phpvms
make install

By default, the Makefile calls the system-wide composer. If your host requires a certain path or name for composer, add COMPOSER= to the front of the make command, e.g:

COMPOSER=composer.phar make install

For development, copy the included env.php.example to env.php file. By default, it uses sqlite instead of mysql. This makes it much easier to be able to clear the database and new fixtures.

The easiest way to load locally is to install Laravel Valet (if you're running a Mac). Once you install it, go to your phpvms directory, and run:

cp env.php.example env.php
php artisan key:generate
make install   # this will install everything
valet link phpvms

Now going to should work. If you want to use mysql, follow the valet directions on installing mysql (brew install mysql) and then update the env.php file to point to the mysql.

The default username and password are "" and "admin". To see the available users in the development environment, see this file

To reset the database/clear cache, use this command.

make reload-db

You can run the reload-db command as much as you want. If you log in using the default login (, this won't log you out, it'll just reload the database with all the sample data (from app/Database/seeds/sample.yml)