Project Schema
Project configuration defines deployable environments stored in projects/<id>.json.
Schema
json
{
"id": "string",
"name": "string",
"domain": "string",
"server_id": "string",
"base_path": "string",
"project_type": "string",
"component_ids": [],
"api": {},
"database": {},
"local_environment": {},
"remote_files": {},
"remote_logs": {},
"table_prefix": "string",
"protected_table_patterns": [],
"unlocked_table_patterns": [],
"shared_tables": [],
"table_groupings": [],
"sub_targets": [],
"component_groupings": [],
"tools": {},
"extensions": {}
}Fields
Required Fields
id(string): Unique project identifiername(string): Human-readable project namedomain(string): Project domain nameserver_id(string): ID of linked server configurationbase_path(string): Remote server base path for project files
Optional Fields
project_type(string): Project type identifier (e.g.,"wordpress")component_ids(array): List of component IDs linked to this projectapi(object): API client configurationbase_url(string): API base URLenabled(boolean): Whether API client is enabled
database(object): Database connection settingshost(string): Database hostport(number): Database port (default: 3306)name(string): Database nameuser(string): Database userpassword(string): Database password (stored in keychain)use_ssh_tunnel(boolean): Connect via SSH tunnel
local_environment(object): Local development environmentdomain(string): Local domainsite_path(string): Local site path
remote_files(object): Remote file managementremote_logs(object): Remote log managementtable_prefix(string): Database table prefix (e.g.,"wp_")protected_table_patterns(array): Patterns for protected tables (cannot be deleted)unlocked_table_patterns(array): Patterns for unlocked tables (allow dangerous operations)shared_tables(array): List of shared table names across multi-site installationstable_groupings(array): Groupings for organizing tablesid(string): Unique grouping identifiername(string): Grouping namepatterns(array): Glob patterns matching tables in this groupmember_ids(array): Explicit table IDs in this groupsort_order(number): Display sort order
sub_targets(array): Sub-target paths for multi-component sitescomponent_groupings(array): Groupings for organizing componentsid(string): Unique grouping identifiername(string): Grouping namemember_ids(array): Component IDs in this group
tools(object): Project-specific tool configurations- Keys are tool identifiers (e.g.,
"newsletter","bandcamp_scraper") - Values are tool-specific setting objects
- Keys are tool identifiers (e.g.,
extensions(object): Extension-specific settings for this project- Keys are extension IDs
- Values are extension setting objects
Example
json
{
"id": "extrachill",
"name": "Extra Chill",
"domain": "extrachill.com",
"server_id": "production",
"base_path": "/var/www/extrachill",
"project_type": "wordpress",
"component_ids": [
"extrachill-theme",
"extrachill-api"
],
"api": {
"base_url": "https://extrachill.com/wp-json",
"enabled": true
},
"database": {
"host": "localhost",
"port": 3306,
"name": "extrachill_db",
"user": "extrachill_user",
"use_ssh_tunnel": true
},
"local_environment": {
"domain": "extrachill.local",
"site_path": "/Users/dev/Sites/extrachill"
},
"remote_files": {
"pinned_files": [
{
"id": "wp-config",
"path": "wp-config.php"
}
]
},
"remote_logs": {
"pinned_logs": [
{
"id": "debug",
"path": "wp-content/debug.log",
"tail_lines": 100
}
]
},
"table_prefix": "wp_",
"table_groupings": [
{
"id": "wordpress-core",
"name": "WordPress Core",
"patterns": ["wp_*"],
"member_ids": [],
"sort_order": 0
}
],
"extensions": {
"wordpress": {
"settings": {
"wp_cli_path": "/usr/local/bin/wp"
}
}
}
}Storage Location
Projects are stored as individual JSON files under the OS config directory:
base_url(string): API base URLenabled(boolean): Whether API client is enabled
Security Notes
Database passwords should not be stored directly in project JSON files. Use the homeboy auth command to store credentials securely in the OS keychain. Homeboy automatically retrieves credentials during database operations.
Related
host(string): Database hostport(number): Database port (default: 3306)name(string): Database nameuser(string): Database userpassword(string): Database password (stored in keychain)use_ssh_tunnel(boolean): Connect via SSH tunnel