/aemdesign-aem-core

An implementation of AEM.Design component concepts

Primary LanguageJavaScriptApache License 2.0Apache-2.0

AEM.Design Core

build_status Quality Gate Status codecov Maven Central github license github issues github last commit github repo size github repo size github release CodeFactor Visit AEM.Design Gitter

A set of standardized components for AEM 6.4+ that can be used to speed up development of websites.

Documentation

You will require a latest version of aemdesign-aem-compose that has the base dialog's configuration content.

Development

If you're curious about how the next generation of components looks like, a tech preview is made available in the develop branch.

Contributing

Contributions are welcome! Read the Contributing Guide for more information.

Available Components

Detailed table of component can be found here Component List

Component Category Link
Cloud Services / Rest Rest
Cloud Services / Salesforce API Salesforce API
Common / Redirection Notification Redirection Notification
Common / Static Content Include Static Content Include
Common / Timing Component Timing Component
Content / File Download Link File Download Link
Content / Embed Source Embed Source
Content / External External
Content / Link Link
Content / Content Reference Content Reference
Content / Content Fragment Content Fragment
Content / Content Template Content Template
Content / Table Table
Content / Rich Text Rich Text
Content / Tool Tip Tool Tip
Content / Page Author Page Author
Content / Page Date Page Date
Content / Page Description Page Description
Content / Page Tags Page Tags
Content / Page Title Page Title
Details / Generic Details Generic Details
Details / Contact Details Contact Details
Details / Event Details Event Details
Details / Location Details Location Details
Details / News Details News Details
Details / Page Details Page Details
Layout / Article Article
Layout / Aside Aside
Layout / Breadcrumb Breadcrumb
Layout / Columns Columns
Layout / Content Block Content Block
Layout / Content Block Lock Content Block Lock
Layout / Content Block Menu Content Block Menu
Layout / Content Tabs Content Tabs
Layout / Footer Footer
Layout / Header Header
Layout / Nav Bar Nav Bar
Layout / Container Container
Lists / Asset List Asset List
Lists / Contact List Contact List
Lists / Event List Event List
Lists / Lang Nav Lang Nav
Lists / List List
Lists / List Nav List Nav
Lists / Location List Location List
Lists / News List News List
Lists / Page List Page List
Lists / Search Results List Search Results List
Lists / Tag List Tag List
Lists / Nav List Nav List
Media / Audio Audio
Media / Image Image
Media / Video Video
Analytics / Analytics Data Layer Analytics Data Layer
Template / AEM.Design Base Page AEM.Design Base Page
Template / Cloud Config / AddThis AddThis
Template / Cloud Config / Google Analytics Google Analytics
Template / Cloud Config / Google Map Google Map
Template / Column / AEM.Design One Column Page AEM.Design One Column Page
Template / Column / AEM.Design Three Column Page AEM.Design Three Column Page
Template / Column / AEM.Design Two Column Page AEM.Design Two Column Page
Template / Common / Design Importer Design Importer
Template / Experience Fragment / AEM.Design Experience Fragment AEM.Design Experience Fragment
Widgets / AddThis / Addthis Button Addthis Button
Widgets / Online Media Online Media
Widgets / Search Box Search Box
Workflow / Process Payload Process Payload
Workflow / Project Task Manager Project Task Manager
Workflow / Project Update Project Update
Workflow / Rest Rest
Workflow / Salesforce API Salesforce API
Workflow / Send Email Send Email
Coral / Common/Form / Tag Field Tag Field
Coral / Datasources / Forms Forms
Coral / Datasources / Tags Tags
Coral / Foundation / Accordion Accordion
Coral / Widgets/Form / Asset Options Asset Options
Replication / Akamai Cache Flush Akamai Cache Flush

Component Versioning

The components' versioning scheme is documented on the AEM Core WCM Components' versioning policies wiki page.

Module Purpose

Following is a description of each repo and their purpose.

For more information see Project Artifacts

Repo Notes
aemdesign-aem-author/ has all of the components and configurations that modify/update AEM
aemdesign-aem-common/ has all of the components code
aemdesign-aem-core-deploy/ monolith package for all projects
aemdesign-aem-services/ has all of the code that compiled and installed by common project

System Requirements

The latest version of the Core Components, require the below system requirements:

AEM Version 2.0.0
6.4 yes
6.5 yes

Installation

To install everything, excluding examples, the released aggregate package aemdesign-aem-core-deploy can be installed via the AEM Package Manager.

For more information about the Package Manager please have a look at How to Work With Packages documentation page.

Package Dependencies

Following packages are dependencies and should be installed on your AEM instance before installing AEM.Design:

Build

The project has the following requirements:

  • Java SE Development Kit 8 or Java SE Development Kit 11
  • Apache Maven 3.3.1 or newer

For ease of build and installation the following profiles are provided:

  • installdeploymentpackage - installs the deploy package/bundle to an existing AEM author instance

You can use helper script for ease of local deployment

  • deploy-local - deploy aemdesign-aem-core-deploy package to your local AEM instance running on port 4502
  • deploy-local-publish - deploy aemdesign-aem-core-deploy package to your local AEM instance running on port 4503

UberJar

This project relies on the AEM 6.4 cq-quickstart. This is publicly available on https://repo.adobe.com

For more details about the UberJar please head over to the How to Build AEM Projects using Apache Maven documentation page.

Include core components into your own project maven build

To add core components to your project, you will need to add it to your maven build. The released version of the framework are available on the public maven repository at https://repo1.maven.org/maven2/design/aem/aemdesign-aem-core-deploy/

To include the deploy package into your own project's maven build using maven you can add the dependency to your pom.xml like this

<dependency>
    <groupId>design.aem</groupId>
    <artifactId>aemdesign-aem-core-deploy</artifactId>
    <type>zip</type>
    <version>2.0.100</version>
</dependency>

and then add this subpackage to your sub package section

 <subPackage>
     <groupId>design.aem</groupId>
     <artifactId>aemdesign-aem-core-deploy</artifactId>
     <filter>true</filter>
 </subPackage>

inside the configuration of the content-package-maven-plugin.

Development Notes

Following section describes some of the development topics

Version Convention

Version numbers for Git Tags should follow semver format:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backwards-compatible manner, and
  • PATCH version when you make small incremental changes

Minimal core artifacts required for providing overridable AEM components.

aemdesign-aem-core-deploy module creates an aem package for deployment which contains:

  • aemdesign-aem-author
  • amedesign-aem-common

aemdesign-aem-common module embeds bundles:

  • aemdesign-aem-services

To build

To ensure the project builds correctly locally run:

mvn -Dvault.useProxy=false -DskipTests -e -U clean package

To deploy

To build and deploy the project to your local aem instance (default localhost:4502), in the project root run:

./deploy-local

To create a release

Releases are managed via the maven plugins versions-maven-plugin and maven-scm-plugin

Version numbers should follow the SemVer convention.

Release Versions

Release versions are automated and based on Tags in format MAJOR.MINOR and Commit count from Tag using the git describe command.

To test git versioning run

git describe

this will show you generated version message with latest tag and how many commits since tag.

If you get an error:

fatal: No annotated tags can describe

create a new tag for your current version MAJOR.MINOR, the rest will be automated:

git tag 2.1 -f -m "2.1"

To create a release all you need to do is create a tag MAJOR.MINOR on master branch and push it.

Version Convention

Version numbers for Git Tags should follow semver format:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backwards-compatible manner, and
  • PATCH version is automatically generated based on git commit count from last Tag

Please use MAJOR and MINOR version in Tags, PATCH version will be automatically added as a commit count since the last tag using the git describe.

Release history

Please review the change log for all version history.

Commit Signatures

Please ensure you have GPG setup and you sign all of your commits.