Project Management

Apex brings version control and repository management directly into the framework, not only providing a unified solution for end-to-end development and maintenance of online operations, but also provides direct access to the skills and talents of the developer community.

Not only are Apex systems a collection of SVN based repositories that come together to form a robust monolithic operation, but also has support for full project management including staging environments and syncing to the production system.


Create Project

You onboard a new client, agree on the specs, and are ready to begin development. Creating a new project is as simple as, doing a base install of Apex then run the apex project create command.

This process can take four simple commands on your local machine:


composer create-project apex/apex domain.com
cd domain.com
./apex --image users
apex project create my-client --staging

The above will complete a base install of the apex/users installation image providing a base development environment, and proceed to create a new project. This results into two new URLs, the repository itself on https://code.apexpl.io/ and the staging environment at http://project.username.apexpl.dev/.


Development

Once the project is created, simply develop as you normally would. When ready, simply run the command:


apex commit [-m message]

This will commit all modifications made to the system to the repository on code.apexpl.io, plus sync all modifications to the staging environment on apexpl.dev including database migrations and configuration changes.


Deployment

Deploying to production is also extremely simple, and instead of installing with the --image flag, you simply install with the ``project flag. For example:


composer create-project --no-dev apex/apex domain.com
cd domain.com
./apex --project username/my-client

Simple as that, and the project is now fully installed.


Sync with Production

You may also wish to sync all commits with the production server after successful run of unit tests, which is also quite simple. Preferably before installation of production, within the local development system run the commands:


apex install svn-sync
apex commit -m "Installed svn-sync package"

Once the svn-sync package is installed, install production as mentioned in the above section. Then on production run the command:


apex project sync

This will provide the URL to a web hook, which you update the ~/etc/MyClient/package.yml file on the local development system with by adding the section:


web_hooks:
  - URL_TO_WEB_HOOK
Save the file and run the command:

apex package update my-client

That's it. Now all commits made from your local development system will upload to the repository, plus sync to both, the staging environment and the production system including database migrations and configuration changes.


Getting Support

As you can see from above, Apex makes it simple and straight forward to develop, deploy, and manage your projects. Please note, the above is only for project development, and not package development. If you ever have any questions, issues or feedback for Apex, please don'te hesitate to post on the /r/apexpl sub-Reddit for a prompt and helpful response.