apache causeway

Build software that's
in step with your business

 Reviews  Quick Start    Docs   

Apache Causeway™ enables domain-driven application development by dynamically generating a UI and API for your Spring Boot™ apps. That means:

  • Productivity - your app is mostly business logic, with costly UI code eliminated.
  • Discovery - you can work hand-in-hand with your business domain experts, to understand the problem space and to explore and then select a solution within the solution space.
  • Ease of Use - your business users will find the app easy to learn, with the business concepts front and center
  • Simple Integration - you can integrate easily with other systems using the dynamically provided GraphQL and RESTful APIs, or by the automatically published domain events for async comms.
  • Clean Architecture - you will find it easy to maintain a clear separation of concerns within your app's internal architecture

And because Apache Causeway™ is open source, running on top of Spring Boot™, you won't be locked into a vendor nor even the framework; the clean separation of concerns means you could even lift-n-shift the domain logic of your app to run elsewhere if need be.

Quotes

We gathered together some quotes from current users of the framework. You can find out who said what here.

How it works

UI & APIs “for free”

Apache Causeway™ dynamically builds a generic user interface for end-users, and also a complete GraphQL API and a rich hypermedia RESTful API, with both behaviour and structure inferred from the underlying domain objects. This makes for extremely rapid prototyping and a short feedback cycle, perfect for agile development. The UI is themed using Bootstrap.

Domain-Driven

The core of an Apache Causeway™ 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. Apache Causeway performs dependency injection everywhere to ensure that the application remains decoupled and testable.

Add-ons

Apache Causeway™ includes a large number of 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 etc. All are open source and designed for out-of-the-box use or for you to modify as required.

Standing on the shoulders of giants

Apache Causeway™ is built on top of industry leading open source products, all licensed with the business-friendly licenses of either Apache™ Software License v2.0 or MIT.

Spring Boot™ is the de facto way to create stand-alone, production-grade Spring™-based applications.

Apache Wicket™ is an open source Java™ component oriented web application framework that powers thousands of web applications and websites.

Bootstrap™ is a powerful, extensible, and feature-packed frontend toolkit.

GraphQL Java is the Java™ implementation of the GraphQL specification.

RESTEasy™ is an implementation of the Jakarta™ RESTful Web Services specification for building RESTful Web Services and RESTful Java applications.

ByteBuddy™ is a code generation and manipulation library for creating and modifying Java™ classes during the runtime of a Java™ application.

EclipseLink™ is the reference implementation for JPA and a comprehensive open-source Java™ persistence solution addressing relational, XML, and database web services.

DataNucleus™ is the reference implementation for JDO, provides persistence and retrieval of data to a range of datastores using a range of APIs, with a range of query languages.

Project Lombok™ is a library that automatically plugs into your editor and build tools, spicing up your Java™.

Quick Start

Prereqs: v3.x: Java 17 and Maven 3.6+; v2.x: Java 11
We recommend you try out using Linux, MacOS or WSL2
(to avoid exceeding Windows' limits due to classpath length).


Try out ...

Try out the framework with the minimal helloworld starter app.

Run it locally using:

docker run -p 8080:8080 apache/causeway-app-helloworld:latest

Build from source (JPA or JDO) using:

APP=causeway-app-helloworld
VARIANT="3-jpa"   # or: "3-jdo" ; "2-jpa" ; "2-jdo"
curl https://codeload.github.com/apache/$APP/zip/v$VARIANT | jar xv
cd $APP-$VARIANT

mvn clean install -Dskip.staging -Dskip.nightly
mvn spring-boot:run

Develop your own ...

Develop your own app with the structured simpleapp starter app.

Run it locally using:

docker run -p 8080:8080 apache/causeway-app-simpleapp:latest

Build from source (JPA or JDO) using:

APP=causeway-app-simpleapp
VARIANT="3-jpa"   # or: "3-jdo" ; "2-jpa" ; "2-jdo"
curl https://codeload.github.com/apache/$APP/zip/v$VARIANT | jar xv
cd $APP-$VARIANT

mvn clean install -Dskip.staging -Dskip.nightly
mvn -pl webapp spring-boot:run

Learn and Explore...

You can also explore the Apache Causeway™ programming model through the reference app, which illustrates many of the framework's annotations and programming conventions.

docker run -p 8080:8080 apache/causeway-app-demo-jpa:latest    # or: ...-jdo:latest

NOTE: The online apps all scale to zero when not in use, so please allow up to a minute for it to restart if necessary.

Support

We provide support using either our Slack channel, or through mailing lists for support, use the links below to join. Most users prefer to use Slack, but we always make formal announcements on the users list; you can also browse the mailing list archives. If you find a problem, please raise a ticket on our JIRA, or ask a question on StackOverflow.