========
CMS Ella
========

Zadání
------

Redakční systém, který bude umět pracovat s články, fotogaleriemi, anketami, komentáři
a dalšími typy objektů, které jsou běžné u internetových magazínu.
Celý systém bude využívat Python_ framework Django_ a bude publikován jako Open source.

.. _Python: http://www.python.org/
.. _Django: http://www.djangoproject.com/


Nejdůležitější vlastnosti
-------------------------

Lehká rozšiřitelnost
~~~~~~~~~~~~~~~~~~~~
Veškeré obsahové objekty (články, ankety, kometáře, ...) budou stavěny jako samostatné moduly a jejich umístění na stránkách
bude prováděno stejným způsobem bez ohledu na typ vkládaného objektu podle principu polymorfismu.

Pro přidání nového typu objektu bude stačit dodat sadu HTML šablon a zaregistrovat případné speciální akce,
které se k tomuto objektu váží (například odeslání komentáře či hlasování v anketě).

Systém hezkých a dynamických URL
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
K jednotlivým objektům bude možné dynamicky registrovat další URL,
díky kterým půjde například přidat komentář či prohlédnout objekt z galerie.
Tyto URL, stejně jako zbytek systému budou lokalizované. Systém tedy bude moci být nasazen v jakémkoliv jazyce,
a bude takzvaně optimalizovaný pro vyhledávače.

Více domén s různým obsahem na jedné instalaci
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Objekty bude možné sdílet napříč jednotlivými weby.

Prioritizace a dynamické umísťování objektů
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Redaktoři budou moci kontrolovat, kdy se daný objekt objeví na webu, v jaké kategorii a s jakou prioritou.
Pomoci tohoto systému bude možné publikovat jeden objekt i ve více kategoriích (ty mohou sídlit na různých doménách)
- detail objektu však bude vždy náležet jedné kategorii.

U některých stránek (homepage, stránka kategorie) bude k dispozici nástroj na rozmísťování objektů do konkrétních pozic
- redaktor pak bude moci rozhodnout, který objekt má být v daný okamžik prezentován na jaké pozici.

Řešení importů a exportů
~~~~~~~~~~~~~~~~~~~~~~~~
Ella bude schopna exportovat svůj obsah ve formě RSS a ATOM feedu.
Rovněž bude schopna takové feedy z jiných webu zpracovávat, ukládat a zobrazovat.

Rychlé vytváření dalších specializovaných magazínu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nasazení nového magazínového webu by mělo znamenat pouze vytvoření HTML šablon a konfiguraci systému.

Zvládání vysoké zátěže
~~~~~~~~~~~~~~~~~~~~~~
Systém Ella by měl dobře zvládat vysokou zátěž, tedy návštěvnost kolem několika set tisíc zobrazení denně.
Bude toho dosaženo pomoci několika úrovni cachování, včetně automatické invalidace cache
při změně objektu či podobjektu (například foto v článku).

Úzkým hrdlem celého systému tak z počátku nebude databáze, jako u většiny systémů, ale frontendové stroje,
které budou plně záměnné a bude je tak možno přidávat bez zásahu do zbytku systému.


Podporované objekty v základní verzi
------------------------------------

Obsahové objekty
~~~~~~~~~~~~~~~~
uspořádané do kategorií

 * Článek
 * Galerie
 * Test
 * Soutěž

Ostatní objekty
~~~~~~~~~~~~~~~
tyto lze buď navázat na, či začlenit do libovolného objektu

 * Anketa
 * Foto
 * Komentáře

Objekty z externích aplikací
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Tagy_

.. _Tagy: http://code.google.com/p/django-tagging/


Obhajoba
--------

Obhajoba projektu bude zahrnovat demonstraci běžící instalace systému,
na kterém poběží několik magazínu s větší zátěží (několik set tisíc návštěv denně).

