Annotation Interface CmsPlugin


@Retention(RUNTIME) @Target(TYPE) @Documented public @interface CmsPlugin
Marks a class as a pluggable CMS/e-commerce application specification.

CMS specifications annotated with this annotation are automatically discovered and loaded by the CloudForge CMS deployment system via Java ServiceLoader. This enables support for content management systems, e-commerce platforms, and social networking applications without modifying core code.

Usage example

@CmsPlugin(
    value = "wordpress",
    category = "cms",
    displayName = "WordPress",
    description = "PHP-based CMS and blogging platform",
    phpVersion = "8.2",
    defaultCpu = 1024,
    defaultMemory = 2048,
    supportsOidc = true,
    oidcMethod = "OpenID Connect Generic Plugin",
    requiresDatabase = true,
    supportedDatabases = {"mysql", "mariadb"},
    supportsS3Media = true,
    supportsObjectCache = true,
    supportsMultisite = true
)
public class WordPressApplicationSpec implements CmsSpec {
    // Implementation
}

CMS categories

  • cms: Content Management Systems (WordPress, Joomla, Drupal, Concrete5, TYPO3)
  • ecommerce: E-commerce Platforms (WooCommerce, Magento, PrestaShop, OpenCart, Shopware)
  • social: Social Networking (Dolphin/UNA, HumHub, Elgg, phpFox)
  • forum: Forum Software (phpBB, Discourse, Flarum, MyBB, XenForo)
  • wiki: Wiki Platforms (MediaWiki, DokuWiki, BookStack)
  • lms: Learning Management (Moodle, Canvas, Chamilo)
Since:
3.1.0
See Also:
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    CMS identifier used in deployment configuration.
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    CMS category for grouping and discovery.
    int
    Default Fargate CPU units when not specified in deployment context.
    Docker Hub image or registry path for the official container image.
    Default EC2 instance type when not specified in deployment context.
    int
    Default Fargate memory in MB when not specified in deployment context.
    Brief description of the CMS platform's purpose.
    Human-readable display name for the CMS.
    OIDC integration method description.
    Required PHP version for this CMS.
    boolean
    Whether this CMS requires an external database (RDS).
    Supported database engines for this CMS.
    boolean
    Whether this CMS supports EC2 deployment.
    boolean
    Whether this CMS supports Fargate deployment.
    boolean
    Whether multi-site/multi-store functionality is supported.
    boolean
    Whether Redis/Memcached object caching is supported.
    boolean
    Whether this CMS supports OIDC authentication integration.
    boolean
    Whether S3 media offloading is supported.
    Official website URL for the CMS.
  • Element Details

    • value

      String value
      CMS identifier used in deployment configuration.

      This value is used in deployment-context.json to specify which CMS to deploy:

      {
        "applicationId": "wordpress",
        "runtimeType": "FARGATE"
      }
      

      Examples: "wordpress", "woocommerce", "magento", "drupal", "joomla", "prestashop", "dolphin", "moodle", "mediawiki"

      Returns:
      the CMS identifier (lowercase, kebab-case)
    • category

      String category
      CMS category for grouping and discovery.

      Standard categories:

      • cms - Content management systems
      • ecommerce - E-commerce platforms
      • social - Social networking platforms
      • forum - Forum and discussion boards
      • wiki - Wiki and documentation platforms
      • lms - Learning management systems
      Returns:
      the CMS category (default: "cms")
      Default:
      "cms"
    • displayName

      String displayName
      Human-readable display name for the CMS.

      Used in CLI tools, logging, and documentation.

      Examples: "WordPress", "Magento 2", "Drupal", "Dolphin"

      Returns:
      the display name (defaults to capitalized value if empty)
      Default:
      ""
    • description

      String description
      Brief description of the CMS platform's purpose.

      Examples:

      • "PHP-based CMS and blogging platform"
      • "Adobe Commerce-compatible e-commerce platform"
      • "Social networking and community platform"
      Returns:
      the CMS description
      Default:
      ""
    • phpVersion

      String phpVersion
      Required PHP version for this CMS.

      Common versions:

      • "8.2" - WordPress 6.4+, Magento 2.4.6+, Drupal 10
      • "8.1" - PrestaShop 8.x, Joomla 5
      • "8.0" - Legacy support
      Returns:
      PHP version string (default: "8.2")
      Default:
      "8.2"
    • defaultCpu

      int defaultCpu
      Default Fargate CPU units when not specified in deployment context.

      Recommended values by CMS type:

      • Simple CMS (WordPress, Joomla): 1024 (1 vCPU)
      • E-commerce (WooCommerce, PrestaShop): 2048 (2 vCPU)
      • Enterprise (Magento): 4096 (4 vCPU)
      Returns:
      default CPU units (256, 512, 1024, 2048, 4096)
      Default:
      1024
    • defaultMemory

      int defaultMemory
      Default Fargate memory in MB when not specified in deployment context.

      Recommended values by CMS type:

      • Simple CMS: 2048 MB
      • E-commerce: 4096 MB
      • Enterprise: 8192 MB
      Returns:
      default memory in MB
      Default:
      2048
    • defaultInstanceType

      String defaultInstanceType
      Default EC2 instance type when not specified in deployment context.

      Recommended types:

      • t3.small - Simple CMS, low traffic
      • t3.medium - E-commerce, moderate traffic
      • t3.large - Enterprise, high traffic
      • m5.large - Production e-commerce
      Returns:
      EC2 instance type (default: "t3.small")
      Default:
      "t3.small"
    • supportsOidc

      boolean supportsOidc
      Whether this CMS supports OIDC authentication integration.

      OIDC support enables single sign-on with:

      • AWS Cognito
      • IAM Identity Center
      • External OIDC providers (Okta, Auth0, etc.)
      Returns:
      true if OIDC integration is supported (default: false)
      Default:
      false
    • oidcMethod

      String oidcMethod
      OIDC integration method description.

      Examples:

      • "OpenID Connect Generic Plugin" (WordPress)
      • "miniOrange OAuth module" (Magento)
      • "Native OpenID Connect module" (Drupal)
      • "OAuth2 module" (Dolphin)
      Returns:
      description of OIDC integration method
      Default:
      "plugin"
    • requiresDatabase

      boolean requiresDatabase
      Whether this CMS requires an external database (RDS).

      Most CMS platforms require a database. Exceptions might include flat-file CMS systems like Grav or Statamic.

      Returns:
      true if external database is required (default: true)
      Default:
      true
    • supportedDatabases

      String[] supportedDatabases
      Supported database engines for this CMS.

      Common engines:

      • "mysql" - MySQL 8.0+
      • "mariadb" - MariaDB 10.6+
      • "postgres" - PostgreSQL 14+ (Drupal, some enterprise CMS)
      Returns:
      array of supported database engine identifiers
      Default:
      {"mysql", "mariadb"}
    • supportsS3Media

      boolean supportsS3Media
      Whether S3 media offloading is supported.

      S3 media storage enables:

      • Horizontal scaling (multiple instances)
      • CDN integration
      • Reduced EFS/EBS storage costs
      Returns:
      true if S3 media storage is supported (default: false)
      Default:
      false
    • supportsObjectCache

      boolean supportsObjectCache
      Whether Redis/Memcached object caching is supported.

      Object caching improves performance by caching:

      • Database query results
      • Computed page fragments
      • Session data
      Returns:
      true if object caching is supported (default: false)
      Default:
      false
    • supportsMultisite

      boolean supportsMultisite
      Whether multi-site/multi-store functionality is supported.

      Multi-site features:

      • WordPress Multisite Network
      • Magento Multi-store
      • Drupal Multi-site
      • PrestaShop Multi-shop
      Returns:
      true if multi-site is supported (default: false)
      Default:
      false
    • supportsFargate

      boolean supportsFargate
      Whether this CMS supports Fargate deployment.

      Most PHP CMS platforms support Fargate containerization.

      Returns:
      true if Fargate is supported (default: true)
      Default:
      true
    • supportsEc2

      boolean supportsEc2
      Whether this CMS supports EC2 deployment.

      EC2 deployment provides more flexibility for complex configurations and legacy requirements.

      Returns:
      true if EC2 is supported (default: true)
      Default:
      true
    • websiteUrl

      String websiteUrl
      Official website URL for the CMS.

      Used for documentation and reference links.

      Returns:
      CMS official website URL
      Default:
      ""
    • defaultImage

      String defaultImage
      Docker Hub image or registry path for the official container image.

      Examples:

      • "wordpress:php8.2-fpm-alpine"
      • "magento/magento-cloud-docker-php:8.2-fpm"
      • "drupal:10-php8.2-fpm-alpine"
      Returns:
      container image reference
      Default:
      ""