Epaster

Introduction

Emencia uses the Epaster tool for web projects along with our techniques and procedures. It’s mostly based on Python Paste and buildout to allow for the distribution of projects easy to install anywhere.

Its goal is to automatically create and initialize the project’s structure so you don’t lose time assembling the different parts.

For now, it is only used to build Django projects through the emencia-paste-django package.

Structure

Finally, Epaster will build you a project that is designed to be use with some software and components, below you can find a simple diagram to resume their interaction.

digraph environment {
    /* Define some default styles */
    node [shape=box, fillcolor=lightblue2, color=lightblue3, style=filled];
    edge [color=lightblue4];

    /* Define all the entities label */
    epaster [label="Epaster", shape=egg];
    buildout_env [label="Buildout", shape=note];
    django [label="Django Framework", shape=component];
    foundation [label="Foundation5", shape=component];
    eggs [label="Installed Eggs", shape=note];
    recipes [label="Buildout recipes", shape=note];
    scss [label="SCSS", shape=component];
    apps_sources [label="Development apps", shape=note];
    nginx_conf [label="Nginx Config", shape=folder];
    monit_conf [label="Monit Config", shape=folder];
    django_instance [label="django-instance", shape=folder];
    django_cms [label="DjangoCMS", shape=component];
    zinnia [label="Zinnia blog", shape=component];
    monit [label="Monit", shape=egg];
    nginx [label="Nginx", shape=egg];

    /* Entities cluster for Virtualenv */
    subgraph cluster_virtualenv {
        style=rounded;
        color=lightgrey;
        fontcolor="lightslategray";
        node [style=filled,color=white];
        label = "VirtualEnv";

        buildout_env -> {eggs apps_sources recipes};
        eggs -> django;
        recipes -> {django_instance nginx_conf monit_conf};
        django -> {django_cms zinnia};
        django_instance -> django;
        nginx_conf -> django_instance;
        monit_conf -> django_instance;
    }

    /* Entities cluster for SCSS */
    subgraph cluster_scss {
        style=rounded;
        color=lightgrey;
        fontcolor="lightslategray";
        node [style=filled,color=white];
        scss -> foundation;
        label = "Compass";
    }

    /* Root entities */
    epaster -> {buildout_env scss} [color=midnightblue];
    monit -> monit_conf [color=midnightblue];
    nginx -> nginx_conf [color=midnightblue];
}