blob: 69f86e7827ea2e23358651f29164e225451f7934 [file] [log] [blame]
#summary Melange Modules
#labels 2013DeveloperDoc
=Static Modules (How Melange Is Organized In Source Control Directories)=
==The "app" Top-Level Directory==
The "app" top-level directory contains all source control-based resources that will go into the code package that will be uploaded to App Engine as part of Melange's release. It contains several third-party code directories, the "soc" directory that contains Melange's first-party production code, and the configuration files and outermost scripts that mediate App Engine's interaction with Melange's code.
==app/soc==
app/soc is the root of Melange's first-party (authored by Melange developers) code. It is divided into:
* *cache*
** Melange's code that interacts with the App Engine memcache.
** Primarily used for XSRF tokens and determining which projects, organizations, and tasks are randomly featured on the home page.
* *content*
** Melange's static content (mostly images).
* *logic* (described below)
* *mapreduce*
** Melange's code for making changes to all instances of a given type of data.
* *middleware*
** Melange's code for interacting with Django's Middleware and Blobstore systems.
* *models* (described below)
* *modules* (described below)
* *tasks*
** Melange's code for interacting with App Engine's tasks system.
** Email sending is handled by this code.
* *templates*
** Melange's HTML templates.
** As of March 2013 the elimination of a "v2" layer of indirection is in progress in this directory.
* *views* (described below)
==Other Top-Level Directories==
* *mockup*
** Design assets from past site redesigns (mostly images and HTML).
* *scripts*
** First-party Melange code not included in the web application image of Melange.
* *tests*
** Tests and test utilities in a directory structure mirroring that of the top-level "app" directory.
* *thirdparty*
** Third-party code such as the App Engine SDK.
=Dynamic Modules (How Melange Is Organized During Execution)=
Add your content here. Format your content with:
* Text in *bold* or _italic_
* Headings, paragraphs, and lists
* Automatic links to other wiki pages