Reahl comprises several different sets of components that can be used independently of one another:
For a web-centric introduction to all the components used:
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).
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.
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.
reahl-browsertools is an abstracted interface to WebDriver including a programmatic way of composing XPaths. See its documentation for more detail.
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 (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.
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 devtools/introduction.
reahl-component: Infrastructure for component-based development.
reahl-web: The Reahl web framework.
reahl-domain: Domain functionality for use with the web framework.
reahl-browsertools: Composable XPaths and an interface to WebDriver.
reahl-tofu: Class-based Fixtures and other testing tools.
reahl-stubble: Stub classes that break tests if they are out of sync with the real class.
Other tools: Other development tools.