Files structure

Let's take a look at how are directories organized in a typical Cherrycake App setup, and the file naming conventions.
/
/modules
/classes
/config
/patterns
/public
/

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.

/modules

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:

namespace CherrycakeApp\Modules;
class Home extends \Cherrycake\Module {
[...]
}

Must be saved in a file here:

/modules/Home/Home.class.php

/classes

Contains your classes, each in one file named in the syntax:

/classes/<ClassName>.class.php

The file name must match the class name exactly, and it is recommended to follow the naming conventions. For example, the following class:

namespace CherrycakeApp;
class User extends \Cherrycake\Item {
[...]
}

Must be saved in a file here:

/classes/User.class.php

/config

Contains the configuration files for your modules, if they need one. The syntax of this files is:

/config/<ModuleName>.config.php

For example, the configuration file for the module Home must be saved in a file here:

/config/Home.config.php

Check the Module config files documentation for more information

This directory also holds the configuration files for Janitor Tasks.

/patterns

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.

/public

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.

/
/usr
/errors
/install
/vendor
/

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

/usr

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.

/errors

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.

/install

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.

/vendor

This is the usual directory managed by Composer to hold all the dependency libraries, including the Cherrycake engine itself.