.. Copyright 2012, 2013 Reahl Software Services (Pty) Ltd. All rights reserved.
 
==========
 Features
==========

.. toctree::
   :hidden:

   tabbedpanel
   validation
   layout
   pageflow
   persistence
   accesscontrol
   security
   i18n
   enduserfunctionality
   tools

The best way to get a feel for what Reahl is, is to take a tour of
some of its features. Here is a quick description of some, with links
to examples.


Work on a conceptual level
==========================

Work in terms of the high-level concepts you want to think about. The
low-level implementation details are hidden and dealt with behind the
scenes.

:doc:`See example <tabbedpanel>`.


Deal with user input - once and only once
=========================================

Define input validation in one place, and with minimal effort. It is
no longer necessary to let these tasks complicate an otherwise simple
web application.

:doc:`See example <validation>`.


Layout
======

Get a canned look and programming support for layout: Positioning
elements on a web page or having to design what they look like are
problems which a programmer should not need to solve repeatedly.

:doc:`See example <layout>`.


Reacting to user events
=======================

Structure page flow neatly: A summary of the pages comprising your web
application and how users can be transitioned amongst them is explicitly
programmed as part of a Reahl application.

:doc:`See example <pageflow>`.


Persistence
===========

Existing, mature Python tools for dealing with persistent models of
your problem domain are integrated with Reahl.

:doc:`See example <persistence>`.


Access control
==============

Hide or grey out certain user interface elements in response
to changing user rights or other domain-specific access control rules.

:doc:`See example <accesscontrol>`.


Security considerations
=======================

Take comfort in the knowledge that the access control rules you
specify are not only used for user convenience in the browser, but are
also enforced server side to guard against malicious users who
manipulate HTML or JavaScript.

:doc:`Read more <security>`.


Internationalisation
====================

Customise your system to display user interface elements differently,
depending on the local language and customs of a user.

:doc:`See example <i18n>`.

Off-the-shelf functionality
===========================

Build separate re-usable components that contain end-user functionality
complete with user interfaces and re-use these components in other web
applications. Using such components, you don't have to re-write every
application from scratch.

:doc:`Read more <enduserfunctionality>`.


Tool support
============

Reahl includes command line tools for various common tasks needed in a
development or production environment. For the programmer, there is
also scaffolding to help with testing.

:doc:`Read more <tools>`.

