Let's take a look at how are directories organized in a typical Cherrycake App setup, and the file naming conventions.
The root of your Cherrycake App directory. Can be placed anywhere in your server, a usual choice would be /var/www/AppName
In its most basic form, it contains at least one important file:
composer.json
Cherrycake uses composer to manage dependencies. Modify this file to add your own dependencies if needed. To make your Cherrycake application work, the dependency tin-cat/cherrycake-engine is required.
Contains your modules, each one in a subdirectory named in the syntax:
/modules/<ModuleName>
In that subdirectory, your module must go inside a file named in the syntax:
/modules/<ModuleName>/<ModuleName>.class.php
It is recommended that modules follow the naming conventions. For example, the following module:
This directory also holds the configuration files for Janitor Tasks.
Contains the HTML files to be used by the Patterns module. This directory can be set to anything else by changing the directory config key of the Patterns module.
This is the directory that gets exposed publicly by an HTTP server like NGINX. It must have at least an index.php file to load the Cherrycake engine and attend requests.
Check out the Getting started section to learn how to build this index file, or use the readily provided with the Skeleton or Docker methods.
Other files and directories
There are some other non-required files and directories in a typical Cherrycake app, you'll find some of them there if you create your Cherrycake App using a boilerplate like the Cherrycake Skeleton.
If you've used the Cherrycake Skeleton to start your app, you'll also find this files in your app's root directory:
cherrycake
An executable script that allows you to perform a cli call to the Cherrycake application from the server command line.
LICENSE_Cherrycake
This contains the license disclaimer for the Cherrycake engine, please keep this file untouched in all your Cherrycake projects.
cli.php
A PHP script to launch a cli request to the Cherrycake application. This PHP file is used by the cherrycake script.
load.php
A convenience loader for the Cherrycake engine, used by any other scripts that need to run the Cherrycake engine, like cli.php, or public/index.php
Usually, this directory is used to store files uploaded by the users of an app. For example: If your app allows your users to upload their profile images, this is where you could be saving them using the Image core class.
This directory holds the HTML files the Errors shows to the browser when errors occur. You change this to a different directory by setting the patternNames key in the Errors module configuration file.
Some Cherrycake modules make use of the database. This directory contains the SQL files needed to create the database tables needed for those Cherrycake modules.
For example, if you plan to use the Session module to manage your web app user sessions, you'll need to create the cherrycake_session table in your database by using the script session.sql you'll find in this directory.
This is the usual directory managed by Composer to hold all the dependency libraries, including the Cherrycake engine itself.