:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

This is an link:https://causeway.apache.org[Apache Causeway] application to demonstrate the programming model for the various features provided by the framework.

On the left hand side of each web page you'll find the feature, and on the right hand side you'll find an explanation of the feature with code examples.

== Page Layout

This is as good place as any to explain the page layout of an Apache Causeway webapp:

* At the top is the menu bar.
+
This consists of a *primary menu* (on the left) containing the actions provided by the app's domain service, a *secondary menu* (on the right) which typically contains supporting services provided by the framework itself (eg "Prototyping") or extensions, and the *tertiary menu* for login/logout and inspecting the configuration.

* In the centre (where you're looking now) is the domain object being displayed.
+
This will have an *icon* and *title*, for identification by the user.
A typical web page for a domain objects will show scalar fields for each of the object's *properties*, table grids for each of the object's *collections*, and buttons to represent the *actions*.
Properties and collections are the object's state, actions are the object's behaviour.
(This home page object has two properties, each of type `AsciiDoc`.
The `welcome` property - what you are reading now - is on the left, the `description` property on the right).
+
If running in prototype mode then there are a number of actions contributed by the framework (their label is in _italics_) so you can dig into the internal implementation.

* At the bottom is a menu bar with credits, and to allow the user to *switch theme*.

Click into the application and try things out.

[CAUTION]
====
The demo app uses an in-memory database, so any changes made will be lost when the app is stopped.
====

== Getting Help and Assistance

There is plenty of documentation on our link:https://causeway.apache.org/docs/${CAUSEWAY_VERSION}/about.html[website].
Also subscribe to our link:https://causeway.apache.org/docs/${CAUSEWAY_VERSION}/support/mailing-list.html[mailing list] or join our link:https://causeway.apache.org/docs/${CAUSEWAY_VERSION}/support/slack-channel.html[Slack channel].
