The Incode Platform provides a number of modules for use with the Apache Isis framework. These are all released as ready-to-use binaries.

The platform also provides a "quickstart" Maven archetype which can be used to quickly set up your own pre-configured applications.

There are also a number of companion/supporting websites, accessible from the "Other Resources" menu, above.

Quickstart

The quickstart app is a Maven archetype intended to be used as a starting point for new applications.

mvn archetype:generate  \
    -D archetypeGroupId=org.incode.platform.archetype \
    -D archetypeArtifactId=quickstart-archetype \
    -D archetypeVersion=1.16.2 \
    -D groupId=com.mycompany \
    -D artifactId=myapp \
    -D version=1.0-SNAPSHOT \
    -B

Like the Apache Isis framework’s own simpleapp archetype, the application provides a SimpleObject to adapt and copy, along with supporting unit tests, integration tests and BDD (cucumber) specs.

The application generated from the archetype is also preconfigured with the dependencies for all of the modules available in the Incode Platform, with auditing, command profiling, message publishing, security, flywaydb, quartz scheduler and (feature) togglz enabled by default. The application also configures the Jolokia servlet to allow consoles such as hawt.io to monitor the internal state of the webapp.

Modules

Select the modules you need and use them "out of the box", or fork the repo and use the source code as a starting point to meet your own requirements. Most modules are independent of others, with the README for each explaining how to configure your application to use it.

The modules fall into six broad categories, summarised in the table below:

(Sub)domains Extensions Libraries Metamodel
Facets
SPI
Implementations
Wicket Components

Parent POM

The org.incode:incode-parent parent POM declares all of the platform modules. It can either be inherited from, or added as a dependency:

<dependencyManagement>
    <dependencies>
        <group>org.incode</group>
        <artifactId>incode-parent</artifactId>
        <version>1.6.2</version>               (1)
        <scope>import</scope>
        <type>pom</type>
    </dependencies>
</dependencyManagement>

Interim Releases

Interim releases of the modules are available at https://repo.incode.cloud.

To use interim releases, add this profile:

<profile>
    <id>incode-cloud-maven</id>
    <activation>
        <property>
            <name>!skip.incode-cloud-maven</name>
        </property>
    </activation>
    <repositories>
        <repository>
            <id>incode-cloud-maven</id>
            <url>https://repo.incode.cloud/repository/maven/</url>
            <name>Incode Cloud (maven)</name>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </snapshots>
            <layout>default</layout>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>incode-cloud-maven</id>
            <name>Incode Cloud (maven)</name>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </releases>
            <url>https://repo.incode.cloud/repository/maven/</url>
            <layout>default</layout>
        </pluginRepository>
    </pluginRepositories>
</profile>

Alternatively, inherit from either org.incode:incode-parent or from its parent, org.incode:incode-build; the latter declares this Maven repository.