.. _pyck-project-structure:

Structure of a PyCK Project
===========================

Here is the structure of a typical PyCK project (as though of till now) assuming a project named **combined_apps** and one pluggable application named **blog** ::

    combined_apps/
    |-- CHANGES.txt
    |-- MANIFEST.in
    |-- README.txt
    |-- combined_apps                         (The main project folder containing all the code)
    |   |-- __init__.py                   (Project's init file containing initialization code and routes)
    |   
    |   |-- apps                          (This folder contains any pluggable apps)
    |   |   |-- __init__.py               (This file contains enabled apps list and some utility stuff)
    |   |   `-- blog                      (A sample blog app that is pluggable)
    |   |       |-- __init__.py          (Apps initialization code & the application_routes function)
    |   |       |-- controllers          (The controllers folder containing all the controllers for the app)
    |   |       |   |-- __init__.py
    |   |       |-- models               (Application's models) 
    |   |       |   |-- __init__.py
    |   |       |-- scripts              (Other scripts including the populate script containing the populate_app function)
    |   |       |   |-- __init__.py
    |   |       |   |-- populate.py
    |   |       |-- static               (Application specific static media like images, css, javascript, etc)
    |   |       |-- templates            (Application's template - normally (but not compulsarily) in mako templating language) 
    |   |       `-- tests                (Application's Tests)
    |   |           |-- __init__.py
    |   |-- controllers                  (Main project's controllers)
    |   |   |-- __init__.py
    |   |-- models                       (Main project's models)
    |   |   |-- __init__.py
    |   |-- scripts                      (Main project's scripts including the populate script) 
    |   |   |-- __init__.py
    |   |   |-- populate.py
    |   |-- static                       (Main proejct's static media)
    |   |-- templates                    (Main project's templates)
    |   `-- tests                        (Main project's tests)
    |       |-- __init__.py
    |-- combined_apps.db                 (Project's DB if using sqlite)
    |-- combined_apps.egg-info           (Project's egg/setup related files)
    |-- development.ini                  (Project's configuration for development setup)
    |-- production.ini                   (Project's configuration for production deployment) 
    |-- setup.cfg                        (Configuration for the setup script)
    `-- setup.py                              (Project's setup script)

