Card Stories - Developer Introduction

Architecture
Three main components:
 * Client (user interactions): HTML5/CSS, jQuery
 * Server pages (authentication, user accounts, billing...): Django/Python
 * Web service (gameplay logic): Twisted/Python.

Web service (Twisted)

 * Kept small, centered around the core gameplay rules
 * Extra features are added as plugins (email notification, authentication interface with Django...) through an event notification interface.

Server pages (Django)

 * Use of server pages kept to the minimum (mainly useful for Facebook authentication & Open Graph requests)
 * Sends mostly static HTML pages - interactions are handled by the client

Client (jQuery)

 * Implemented as a jQuery plugin
 * No HTML is generated by the plugin - manipulation of HTML templates & metadata included in the DOM
 * Animations are produced with jQuery effects and PNG sprite sequences

Misc

 * Asynchronous code - heavy use of deferreds (Python & jQuery)
 * Live updates of client through long poll implementation
 * Unit tests: 100% coverage both JS (QUnit) & Python code to ensure code stability on the long term.

Deployment

 * Versioning: git - all source code and assets are hosted publicly on Gitorious (AGPLv3 & CC-BY-SA)
 * Linux distribution packages for server installation, accepted in official Debian repository (testing) and on Ubuntu PPAs.
 * Webservers: apache, nginx