Creme is a free/open-source Customer Relationship Management software developed by Hybird (www.hybird.org).

It is designed with an entities/relationships architecture, and is highly configurable, which allows
to adapt Creme to many different work-flows. It provides apps (ie: modules) to manage:
    - Contacts & organisations.
    - Documents & folders.
    - Activities (meetings, phone calls, tasks...) with a calendar.
    - Products & services.
    - Invoices, quotes, sales orders & credit notes.
    - Opportunities.
    - Commercial actions.
    - Email campaigns.
    - Reports.
    - Tickets.
    - Alerts, todos & memos.
    - Geolocation.
    - ...

Creme has powerful tools to filter, search or import data ; it can also be used a CRM framework
you can use to code your own CRM.

Creme is coded in Python, and uses the Django web framework (http://www.djangoproject.com/) and
the JQuery javascript library (http://jquery.com/).

You can find more information on Creme on its official web site: http://cremecrm.com/

It's recommended to use a database engine which supports transactions :
 - PostGreSQL is probably the best choice for data-bases with 100,000+ entities.
 - SQLite support is principally done for developers, but it remains a solution
   for small data-bases (eg: a use as mono-user app with the server running of your computer).

You probably should use 'virtualenv' (for an upgrade from Creme 1.8, you should create a new
virtual env, in order to keep the old one working).

 - Python 3.5+
 - MySQL 5.7+ or PostGreSQL 9.5+ (or SQLite which is included with Python)
 - A web server compatible with Python, like Apache 2.4
 - Redis 3+
 - Java >= 1.4 (only needed to build the compressed version of CSS and JavaScript files at installation time)
 - These python packages :
   (exact versions of Python packages are indicated in the file 'creme/requirements.txt')
     - Mandatory :
         - Django 2.1
         - redis 2.10
         - python-dateutil 2.7
         - bleach 2.1
         - Pillow 5
         - django-formtools 2.1

     - Optional :
         - creme.creme_core:
             - xlrd (to import contacts and organisations from xls files)
             - xlwt (to export contacts and organisations as xls files)

         - creme.billing:
             - pdflatex (if you want PDF export -- you'll need 'Latex' too)

         - creme.graphs:
             - pygraphviz (seems unavailable on windows -- you'll need 'graphviz' too)

         - creme.crudity:
             - lcab (if you want Infopath forms exports and your server doesn't run on Windows)

Installation with 'pip':
    - If you use MySQL, you can use the file 'creme/requirements.txt' to install all the libraries
      needed by a classical installation with the command (better in a virtualenv):
        >> pip install -r creme/requirements.txt
    - If you want a customised installation, you'll have to install the package yourself,
      depending on which apps or SQL server you want. For PostGreSQL, install the package 'psycopg2':
        >> pip install psycopg2
    - Notice some of these python packages need system libraries to be installed.
      For example, here a list of Debian/Ubuntu packages you'll have to install before:
        - python-dev
        - mysql_config & libmysqlclient-dev (or libpq5 if you want to use PostGreSQL)
        - redis-server
        - libxslt1-dev
        - default-jre
        - libjpeg-dev
        - graphviz & graphviz-dev (if you want the optional app 'graphs')


Global remarks:
    - You should know how to install/deploy a Django application.
    - Upgrade note: if you already have a Creme installation, upgrade the version one by one
      (eg: do not try to upgrade from 1.7 to 2.0, upgrade to 1.8 and then 2.0).

Database configuration:
For a new install, you have to create a new database & a new DB user (who is allowed to create/drop tables, indices...).
For an upgrade from Creme 2.0, duplicate your existing DB.

See the file creme/settings.py and set your parameters in a new file called 'creme/local_settings.py'.
Here the minimal information you must fill :

    # -*- coding: utf-8 -*-

        'default': {
            'ENGINE':   'django.db.backends.mysql',  # NB: 'django.db.backends.postgresql' for PGSQL
            'NAME':     'name_of_your_db',           # <== TO BE REPLACED
            'USER':     'name_of_your_user',         # <== TO BE REPLACED
            'PASSWORD': 'password_of_the_user',      # <== TO BE REPLACED
            'HOST':     '',                          # Leave empty for localhost.
            'PORT':     '',                          # Leave empty for default port.

    # SECRET_KEY = ''  # <== TO BE FILLED & UN-COMMENTED (see below).
    LANGUAGE_CODE = 'en'  # Also available : 'fr'
    TIME_ZONE = 'Europe/Paris'  # See http://en.wikipedia.org/wiki/List_of_tz_zones_by_name

To generate the value of SECRET_KEY, run the following command in the root directory & copy its result:
    >> python manage.py build_secret_key

You can chose precisely the creme apps you want, by copying INSTALLED_CREME_APPS & commenting the unwanted apps ;
beware to only comment app in the 'optional' section, & respect the dependencies which are indicated.

The information from the section "EMAILS [internal]" of 'settings.py' should be overridden in
your 'local_settings.py' if you want that your users receive e-mails from Creme (ToDos, Alerts...).
But these information can be filled/changed later.

For an upgrade from Creme 1.8 :
 - Copy the file local_settings.py of your existing install :
   - do not forget to change NAME in order to use your duplicated DB.
   - do not remove apps in INSTALLED_CREME_APPS now (because they are installed in your DB) ;
     complete you installation & then un-install apps you do not want any more (see below).
 - Copy the sub-folders (& their content of course) of the folder creme/media/upload from your
   existing install to the one of your new install (if you did not use the app documents your may
   have nothing to copy).

Filling the DB tables:
Run the following commands in the root directory:
    >> python manage.py migrate
    >> python manage.py generatemedia
    >> python manage.py creme_populate

If you are upgrading from Creme 1.8, clean all existing sessions, for example like this:
    >> python manage.py shell
    > from django.contrib.sessions.models import Session
    > Session.objects.all().delete()

Note for MySQL users: you should load the time zone tables.
 - On Unix servers, it can be done with:
       >> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
 - For Windows environment, see https://stackoverflow.com/questions/14454304/convert-tz-returns-null


To run the development server, you just have to run this command:
    >> python manage.py runserver
You can then go to http://localhost:8000 & log in with root/root.

For a production deployment (Apache, Nginx...), you should read https://docs.djangoproject.com/en/1.11/howto/deployment/

In order to use the job system (eg: sending emails campaign, CSV import...), run the job manager too:
    >> python manage.py creme_job_manager


When you have a working installation, & want to remove an (optional) app, use the command 'creme_uninstall' which will
clean the DB. When it's done, you can comment the app in local_settings.py