{% extends "isis-template.html" %} {% block content %}

Domain Driven Applications, Quickly

Apache Isis™ is a framework for rapidly developing domain-driven apps in Java. Write your business logic in entities, domain services or view models, and the framework dynamically generates a representation of that domain model as a webapp or a RESTful API.

Learn more »

UI "for free"

Isis dynamically builds a generic UI directly from the underlying domain objects. This makes for extremely rapid prototyping and a short feedback cycle, perfect for agile development. The UI can also be extended for specific use cases, and can be themed using Bootstrap.

View details »

Domain-Driven

The core of an Isis application are the domain objects, either persisted entities or view models. Business rules can be associated directly with domain objects, or can be factored out into separate services. Isis performs dependency injection everywhere to ensure that the application remains decoupled.

View details »

Add-ons (non ASF)

Isis has a large number of github-hosted add-on modules for security, auditing, command profiling, mail merge and other cross-cutting concerns. It also has a number of UI extensions for maps, calendars and so on. All are open source and designed for out-of-the-box use or to fork as you require.

View details »


A typical application built with Apache Isis. Like all Isis apps, the UI is dynamically built from the domain model.

You can learn more about this particular application here. The app is also open source, so you can check out its source code on github.


Start developing your own Isis application using our simpleapp archetype:

    mvn archetype:generate  \
        -D archetypeGroupId=org.apache.isis.archetype \
        -D archetypeArtifactId=simpleapp-archetype \
        -D archetypeVersion=1.8.0 \
        -D groupId=com.mycompany \
        -D artifactId=myapp \
        -D version=1.0-SNAPSHOT \
        -B

... and this short tutorial should give you an idea as to how Apache Isis dynamically builds the UI:

{% endblock %}