Following is a quick technical overview of the project. 

Gïelese is split into two major parts, the client and the server. The server is
very simple, and mainly serves media, but also maintains account information
and tracks user progression and grading, in addition it maintains some of the
application configuration information.

The Gïelese client is more complex. It:

# renders exercises for users
# downloads and syncs the media and exercise databases, allowing for offline play
# tracks user progression, and chooses exercises based on existing progression

!! Stack

! Server

The server uses Python, with the Flask web framework, and data is stored in
mongodb. Linguistic data is stored in XML, with references to media files and
rendered into JSON. The media is either served directly, or packaged with the
client for mobile apps.

In addition to using mongodb for user account information, Sqlite is used
temporarily during the media install process to package media information into
JSON.

We use Gunicorn to handle serving FastCGI data to the web server, which in this
case is nginx. 

Dependencies are tracked in ''requirements.txt'', with which you should use
''virtualenv'' and ''pip'' to install and manage a local environment.

See [Server Development|ServerDevelopment.html] for more information.

! Client

The client is built in Coffeescript, a superset of JavaScript which is compiled
using node.js. Templates render into HTML5. The client uses Backbone.js to
manage views, and Brunch.io to handle building, JS compression, and other
tasks.

Dependencies are tracked in ''package.json'', with which you should use ''npm''
(a part of Node.js) to install and manage the environment.

See [Client Development|ClientDevelopment.html] for more information.

! Client + PhoneGap

Phonegap is used to manage the build process. 

See [Building the Gielese Apps|BuildingTheGieleseApps.html] for more information.