Documentation overview

Introduction

Reahl comprises several different sets of components that can be used independently of one another:

A visual depiction of Reahl components and how they depend on each other.

See also

For a web-centric introduction to all the components used:

Component framework

The component framework contains the infrastructure that enables Reahl’s brand of component-based development. It also allows a programmer to build domain models that are annotated with information used by user interface code.

The core of the Reahl component framework is implemented in reahl-component. Support for different databases or ORM tools is implemented in separate components: reahl-postgresqlsupport, reahl-sqlalchemysupport, reahl-sqllitesupport and reahl-mysqlsupport.

All of these components are introduced under the heading of Component framework (reahl-component).

Web framework

The web framework provides the tools for developing applications with web-based user interfaces.

The core of the web framework is written such that it is independent of the technology used for object persistence. This core is in the reahl-web component. The web framework does use some objects that are persisted though – an implementation of these using SqlAlchemy’s declarative is provided in reahl-web-declarative.

These components are introduced in the web application tutorial.

End-user functionality

The end-user functionality included in the distribution of Reahl is split into two components: reahl-domain and reahl-domainui.

The reahl-domain component contains the domain models and logic, whereas reahl-domainui provides the related web user interfaces.

Simple support for sending emails is provided by reahl-mailutil.

All these are also introduced in the web application tutorial.

Browser tools

reahl-browsertools is an abstracted interface to WebDriver including a programmatic way of composing XPaths. See its documentation for more detail.

Tofu

The reahl-tofu component contains our test Fixture framework and extensions that bolt it onto pytest. It also contains a small collection of other test utilities. See its documentation for more detail.

Stubble

Stubble (in reahl-stubble) enables one to write stub classes that will break if the interfaces of the classes they stub should change. See its documentation for more detail.

Other tools

We do all development inside a docker image. The reahl-workstation component is meant to be installed on your main workstation. It contains a stripped-down version of the reahl command containing commands that help deal with whats inside the docker image.

Infrastructure is provided in reahl-dev and reahl-webdev for dealing with Reahl components using an extensible command line tool. This includes a web server for development purposes and a number of special tofu Fixtures that are useful when developing Reahl.

The development tools are introduced in Other tools.

API Reference