Get Involved with Django Chatter!

We’d highly appreciate contributions to this project! The source code is currently hosted on GitHub. If you caught a bug or have suggestions, we welcome pull requests and issues!

Currently, Ahmed Ishtiaque is the primary maintainer for this project. If you have any questions or suggestions, feel free to reach out to him as well.

Get Started

To start developing Chatter, follow the following steps:

  • Install Python 3 if you don’t have it already.

  • Clone the GitHub Repo.

  • Spawn up a new virtual environment, cd into your working directory and run

    $ pip install -r dev-requirements.txt
    

    This will install all the prerequisites needed to run Chatter.

  • If you don’t have Redis, you can install it from their Download page.

  • Since we’re phasing into implementing multitenancy support on Chatter with django-tenants, we will be using PostgreSQL as the database. Install PostgreSQL from PostgreSQL.

    After this, create user for chatter database:

    • Open the postgres terminal:

      $ sudo su - postgres
      
    • Connect to your psql server:

      $ psql
      
    • Run the following commands (don’t miss the semi-colons):

      $ CREATE DATABASE chatter;
      $ CREATE USER chatteradmin WITH PASSWORD 'chatter';
      $ ALTER ROLE chatteradmin SET client_encoding TO 'utf8';
      $ ALTER ROLE chatteradmin SET default_transaction_isolation TO 'read committed';
      $ ALTER ROLE chatteradmin SET timezone TO 'America/New_York';
      $ GRANT ALL PRIVILEGES ON DATABASE chatter TO chatteradmin;
      $ \q
      

      The instructions should be pretty intuitive. This is a replication of the detailed PostgreSQL install guide on DigitalOcean.

    • Exit the postgres session:

      $ exit
      
  • Run migrations:

    $ python manage.py makemigrations django_chatter
    $ python manage.py migrate
    
  • Create public tenant to enable multitenancy testing support with django-tenants:

    $ python manage.py shell
    
    from tenants.models import Client, Domain
    
    # create your public tenant
    tenant = Client(schema_name='public',
                  name='Schemas Inc.')
    tenant.save()
    
    # Add one or more domains for the tenant
    domain = Domain()
    domain.domain = 'localhost' # don't add your port or www here! on a local server you'll want to use localhost here
    domain.tenant = tenant
    domain.is_primary = True
    domain.save()
    
  • Run the tests:

    $ pytest
    

    All tests in the master branch should pass.

  • Create a superuser for chatter:

    $ python manage.py createsuperuser
    
  • Run the development server:

    $ python manage.py runserver
    
  • (Optional) if you want to streamline the login/logout mechanisms, feel free to add a login.html file to django_chatter/templates/registration folder. This should give you a form to log in. Django’s template for that is pretty adequate.

The following is a list of features and hooks that we plan on bringing to Chatter:

Features Yet to Come

  • Add a “Create Group” option for users on the templates
  • Add ‘Seen by user x’ functionality
  • Add time to when messages were sent