Author: Alain Poirier




Nagare is a components based framework: a Nagare application is a composition
of interacting components each one with its own state and workflow kept on the
server. Each component can have one or several views that are composed to
generate the final web page. This enables the developers to reuse or write
highly reusable components easily and quickly.

Thanks to Stackless Python, Nagare is also a continuation-based web framework
which enables to code a web application like a desktop application, with no
need to split its control flow in a multitude of controllers and with the
automatic handling of the back, fork and refresh actions from the browser.

Its component model and use of the continuation come from the famous
`Seaside <>`_ Smalltalk framework.

Python is a great language and Nagare makes full use of it:

  - the views of the components are Python methods rendering a DOM tree,
    built in programmatic XHTML or from a template,
  - the control flow of the components is coded in Python, thanks to the
  - data management in DBMS using SQLAlchemy or its declarative layer Elixir,
  - if a Python function is given instead of an expected Javascript code, Nagare
    automatically generates a translation from Python to Javascript.

Furthermore Nagare integrates the best tools and standard from the Python world.
For example:

  - WSGI: binds the application to several possible publishers,
  - lxml: generates the DOM trees and brings to Nagare the full set of
    XML features (XSL, XPath, Schemas ...),
  - setuptools: installs, deploys and extends the Nagare framework and the
    Nagare applications too,
  - PEAK Rules: generic methods are heavily used in Nagare, to associate views
    to components, to define security rules, to translate Python
    code to Javascript ...
  - WebOb: for its Request and Response Objects.

Using Nagare frees the developer from the classic burden of web programming:

  - No more manual URL mapping. Nagare directly associates a Python callback
    to a link or a field of a form.
  - No global session object. All the states of all components are kept on
    the server.
  - Easy development with Nagare own Python multi-threaded server including
    automatic reloading and possible clustering deployment using a memcached
  - Automatic conversion of the parameters received to Unicode and automatic
    generation of UTF-8 encoded web pages. Nagare is a full Unicode framework.
  - Possible automatic generation of, always 100% valid, XHTML or HTML according
    to the browser capability.
  - Transparent Ajax rendering of a component, without any Python or Javascript
    code to add.

.. wikiname: NagareFeatures


For a standard installation, read the ``docs/quickstart.txt`` document.

Read ``docs/framework_installation.txt`` to install the
`latest <>`_
development version from the `Mercurial repository <>`_
or to create a Nagare developer installation.