Joinery runs on Ubuntu 20.04 LTS (tested), and probably similar versions of Linux with slightly different setup syntax. Also designed with PHP 8.3 and Postgres 12.
File Structure
- adm - Location of core admin files. Filenames are admin_xxxx.php
- ajax - One-off files that are ajax endpoints. No filename pattern.
- api - Files that handle the api service.
- data - Location of the models. Filenames are xxxx_class.php
- includes - Important system and includes files. No filename pattern.
- logic - Controller logic. Filename pattern is xxxx_logic.php
- migrations - Location of migrations that are run if referenced in the migrations.php file. No filename pattern.
- plugins - Location of Plugins. Each plugin has its own folder and must have a unique name.
- theme - Installed themes. Each theme has its own folder and must have a unique name.
- utils - Random files that do many different things.
- views - View files for front end display. Profile pages are in a subdirectory "/profile".
- serve.php - Master file which handles all url logic
Plugins Structure
Plugins are placed in the /plugin directory. Files in the plugin directory override core files if they have the same name.
- admin - Directory where plugin admin pages are placed
- ajax - Ajax endpoints accessible by joinery core
- includes - Include files accessible by joinery core
- data - Where to place the object files (Models)
- logic - Directory for plugin logic files (Controllers)
- migrations - Location of migrations that are run if referenced in the migrations.php file. No filename pattern.
- views - View files (View)
There is also a serve.php file which contains the logic for url structure and is called from the main serve.php.
Settings
Settings are managed by admin_settings.php, and also a file in your plugin under /admin/ that must have the phrase admin_settings in the name (example: admin_settings_items.php). New settings are added either manually, or in the migrations.php file.