Developer Documentation

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.