.. _web_getting_started:

Getting Started
===============

Just like any application or system built with circuits, a circuits.web
application follows the standard Component based design and structure
whereby functionality is encapsulated in components. circuits.web
itself is designed and built in this fashion. For example a circuits.web
Server's structure looks like this:

.. image:: ../images/CircuitsWebServer.png

To illustrate the basic steps, we will demonstrate developing
your classical "Hello World!" applications in a web-based way
with circuits.web

To get started, we first import the necessary components:

.. code-block:: python

   from circutis.web import Server, Controller


Next we define our first Controller with a single Request Handler
defined as our index. We simply return "Hello World!" as the response
for our Request Handler.

.. code-block:: python

   class Root(Controller):

      def index(self):
         return "Hello World!"


This completes our simple web application which will respond with
"Hello World!" when anyone accesses it.

*Admittedly this is a stupidly simple web application! But circuits.web is
very powerful and plays nice with other tools.*

Now we need to run the application:

.. code-block:: python

   (Server(8000) + Root()).run()


That's it! Navigate to: http://127.0.0.1:8000/ and see the result.

Here's the complete code:

.. code-block:: python
   :linenos:

   from circuits.web import Server, Controller

   class Root(Controller):

      def index(self):
         return "Hello World!"

   (Server(8000) + Root()).run()


Have fun!
