Silverstripe
The word “project” is used to refer to the overall site (what is referred to when running composer create-project, and is also used to refer to the back-end/code side of the Project (the project-directory). I’ll use the capitalized version of “Project” to refer to the former, and lower-case version “project” to refer to the later.
There are two general parts to a Project. The theme and the project. The theme is everything that is involved with rendering the UI of the site, while the project is the code and configuration that supports the site - it does the back-end work.
When setting up a personal art / photographic website (art.rainshowers.org), I searched and tried out a huge number of web tools and CMS platforms. In the end I decided to work with Silverstripe CMS. For me it had a good balance between having the features and third-party support I wanted, without having so much hidden away and so much complexity that I couldn’t see how anything worked.
Items that were important for me
see: /home/ken/Documents/silverstripe_vendor_folders.ods
Path Description app/ app/_config app/_config/assets.yml app/_config/theme.yml app/_config/mimevalidator.yml app/_config/mysite.yml app/_config/email.yml app/_config.php app/src app/src/Page.php app/src/PageController.php app/templates app/templates/Layout app/templates/Includes app/.htaccess public/ web-root public/index.
note: use $ grip silverstripe_files-and-folders.md to live preview .md in a browser tab. see: /home/ken/Documents/silverstripe_vendor_folders.ods
Modules in Silverstripe are considered folders that contain either a _config.php file or a _config folder, along with a composer.json file. The composer.json file normally contains a Type property, shown below in the tables.
Libraries Path (all that contain composer.json) Type (* indicates assumed) Description (taken from composer.json) IsModule Notes /vendor/doctrine/instantiator library A small, lightweight utility to instantiate objects in PHP without invoking their constructors /vendor/doctrine/lexer library PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.
The server Setting up a local server that matches as closely as possible the hosting server can help reduce the amount of deployment issues that have to be solved. In my case my host uses Ubuntu, MySQL, Apache2, and PHP, along with the mpm-itk module for apache2 (see http://mpm-itk.sesse.net/ and notes below). In addition, PHP modules are requirements of SilverStripe. So starting with a fresh Ubuntu (because that is what my web-host runs) installation: