Introduction to Clever Harold
-----------------------------

Clever Harold is a web development framework written in Python.  It
provides just about everything you need to write web applications, all
the while staying as far out of the way as possible.


Plays Well With Others
======================

In a Clever Harold project, you select the web server and the perfect
mix of components.  You use a single configuration file that defines
the URLs and components of your application.  Everything is
centralized for you in one file.

You choose the web servers for your application.  You can start
comfortably with a small, local server for development, then deploy
your application without change to Apache, lighttpd or some other
environment.

Because Clever Harold is a WSGI_ framework, you're free to include
other WSGI_ components in your application stack.  You can use the
middleware included in the framework, middleware and servers from
other sources, and of course you can write your own.


Powerful Publishing
===================

Clever Harold has a publisher component that renders templates and
executes code.  Typical fare for a framework, of course, but the
difference is that there are no required imports, subclasses, or
special return types.  You write code and templates and reference
their directories in your project configuration file, and the
framework does the rest.

The publishers use your site layout defined in your project
configuration.  In your templates and views, you do not explicitly
reference a layout, but rather let the publisher include your rendered
content inside the application layout.  It's another case of repeating
less and reusing more.


Database, ORM:  Optional
========================

Clever Harold doesn't own your data model, you do.  In fact, the
framework doesn't require you to use any database or ORM at all.

But if you want one, the framework includes adapters for connecting
your databases to your application.  The default project includes
samples to get you started with data models using DBAPI, SQLAlchemy,
SQLAlchemy ActiveMapper,and SQLObject.  

The data adapters work with multiple data models, and the adapters
themselves can be declared multiple times in your project.  This
provides a great way to mix and match database types, connections, and
models.

When you define an adapter in your project configuration, the
framework can build (create, drop, populate, etc.) your models using a
script command.  There's also a command for starting an interactive
interpreter with your models loaded and connected.


Useful User Interface
=====================

When you create a Clever Harold project, the framework installs a copy
of the Mollio HTML and CSS templates.  This gives you a great starting
point for your own interface, and is completely usable for showing off
your application to clients and peers.


.. raw:: html  

   <center>

.. image::  /static/images/default_app_thumb.png

`Full Size`_

.. _Full Size:  /static/images/default_app.png

.. raw:: html 

   </center>


Further Reading
---------------

- `Clever Harold Tutorial`_
- WSGI_


.. _Clever Harold Tutorial: /documentation/tutorial
.. _WSGI:  http://www.python.org/dev/peps/pep-0333
