What's this project?
====================

It's a simple Django application which will automatically reload
your browser everytime Django Development Server is restarted or
any static file or template changes. Besides this,
if you connect multiple browsers and devices on your development server,
these will be all synchronized.

Quick start guide
=================

Before installing, you'll need to have a copy of
`Django <http://www.djangoproject.com>`_ already installed. For the
current release, Django 3 or newer is required.

For further information, consult the `Django download page
<http://www.djangoproject.com/download/>`_, which offers convenient
packaged downloads and installation instructions.


Installing
--------------------

Automatic installation using PyPI
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

type::

    pip install django3-livesync


Basic configuration and use
---------------------------

Once installed, you can add Django LiveSync to any Django-based
project you're working on. The default setup will enable the following features.

1. Every time django development server is reloaded, all connected browsers will automatically refresh.

2. Every time a static file or template is updated, all connected browsers will automatically refresh.

3. Your actions will be synchronized between all connected browsers and devices. Currently supports:

   * Page scroll.
   * Page reload.
   * Element click.
   * Form fields in general.

**IMPORTANT**: Currently, it was only tested against Google Chrome and Mozilla Firefox web browsers.


Configuration
--------------------

Installing the application
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Begin by adding ``livesync`` to the ``INSTALLED_APPS`` setting of
your project. By default, the daemon will start watching all your installed apps
template dirs.
You can also specify the following additional settings:

``LIVE_PORT``
    This is the number of the port on which live server will run.

``INCLUDED_APPS``
    This tells django livesync to only watch for changes in apps in this set.

``EXCLUDED_APPS``
    This tells django livesync to ignore changes on apps in this set.

Setup Middleware
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Add ``livesync.core.middleware.DjangoLiveSyncMiddleware`` to the ``MIDDLEWARE_CLASSES`` setting of your project.


**IMPORTANT NOTES**:

    1. If you have 'django.contrib.staticfiles' application installed, you must register 'django-livesync' before it, otherwise live server will not launch.

    2. Django LiveSync will only execute if DEBUG is set to True.

Example
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You might have something like the following in your Django settings file::

    DEBUG = True

    INSTALLED_APPS = (
        '...',
        'livesync',
        'django.contrib.staticfiles',
        '...',
    )

    DJANGO_LIVESYNC = {
    	'PORT': 9999 # this is optional and is default set to 9001.
    }

    MIDDLEWARE_CLASSES = (
        'livesync.core.middleware.DjangoLiveSyncMiddleware',
    )


Once you've done this, run ``python manage.py runserver`` as usual.
