Modify abstract view to render templates in corresponding directory.
Implement example view.
Create stubs for migration and upgrade console commands.

Register services and routes.
Create abstract migration class.

Begin filling out logic of create migration task.
Merge branch 'views-and-templates' into upgrades-and-migrations
Adjust abstract view to recognize views in the Synapse directory.
Set default timezone so date() doesn't throw a warning.
Implement Create Migration command so that migration files are created.

Remove the concept of migration groups.
Create view and template for a migration file.
Inject the view into the create migration command.
Add DocBlocks for create migration view and command.
Implement create upgrade console command.

Create view and template for upgrade files.
Create initial abstract upgrade class.

Add missing DocBlock in abstract migration.
Move migration and upgrade commands into separate service providers.
Create run migration logic.

Inject database adapter into command in order to pass into migration/upgrade.
Fix syntax error.
Add missing argument.
Create test migration.

Ignore hidden "dot" files.
Move rollback functionality into migration itself.

Provide examples for executing queries, both those that can be rolled back and those that cannot.
Move app version to bootstrap.
Begin implementing run upgrade console command.

Inject DbAdapter into upgrade::execute().
Inject app version into console command.
Require upgrade files manually.

Detect if the database is already up to date.
Correct abstract upgrade signature.
Include sample code for upgrade creation.
Get current database version correctly.

Record version upgrades in the database.
Modify migrations:run console command to prevent running migrations that were already run.

Add comments as documentation.
Set protected timestamp property on migration classes for storing in the database.
Output helpful messages to the console.
Pad console messages with newlines.