Documentation overview¶
Introduction¶
Although many of the Reahl packages can be used independently, the following introductory materials cover all Reahl packages written in terms of a user of the Reahl web framework (reahl-web):
The Getting started guide will enable you to install all the Reahl packages, and start experimenting.
To start learning all of Reahl in earnest, you can work through the web application tutorial.
The programmer’s guide contains information on how we work and how the internals of Reahl is structured.
The main components of Reahl are illustrated in the figure below:
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 discussed 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 discussed under Web framework.
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 discussed in Domain functionality.
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 discussed in detail in Development tools
API Reference¶
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.