Code Monkey home page Code Monkey logo

django_private_chat2's Introduction

Django Private Chat2

https://badge.fury.io/py/django_private_chat2

https://travis-ci.org/Bearle/django_private_chat2

https://codecov.io/gh/Bearle/django_private_chat2

New and improved https://github.com/Bearle/django-private-chat

Chat app for Django, powered by Django Channels, Websockets & Asyncio

screenshot

Documentation

The full documentation will be at https://django_private_chat2.readthedocs.io.

Quickstart

Install django_private_chat2:

pip install django_private_chat2

Add it to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'django_private_chat2.apps.DjangoPrivateChat2Config',
    ...
)

Add django_private_chat2's URL patterns:

from django_private_chat2 import urls as django_private_chat2_urls


urlpatterns = [
    ...
    url(r'^', include(django_private_chat2_urls)),
    ...
]

Add django_private_chat2's websocket URLs to your asgi.py:

django_asgi_app = get_asgi_application()
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
from django_private_chat2 import urls
application = ProtocolTypeRouter({
    "http": django_asgi_app,
    "websocket": AuthMiddlewareStack(
        URLRouter(urls.websocket_urlpatterns)
    ),
})

Important:

django_private_chat2 doesn't provide any endpoint to fetch users (required to start new chat, for example) It's up to you to do so. The example app does it in urls.py so feel free to copy the handler from there if you wish.

Support

django_private_chat2 is tested against python3.6, python3.7, python3.8, python3.9 with Django 3.0, Django 3.1 and Django 3.2.

You can view the builds here:

https://travis-ci.com/github/Bearle/django_private_chat2/builds/

Please file an issue if you have any problems with any combination of the above.

Features

Django-related

-:white_check_mark: Fully-functional example app

-:white_check_mark: Uses Django admin

-:white_check_mark: Supports pluggable User model (and accounts for non-integer primary keys, too)

-:white_check_mark: Doesn't require Django Rest Framework (views are based off django.views.generic)

-:white_check_mark: Configurable via settings

-:white_check_mark: Fully translatable

-:white_check_mark: Uses Django storage system & FileField for file uploads (swappable)

Functionality-related

-:white_check_mark: Soft deletable messages

-:white_check_mark: Read/unread messages

-:white_check_mark: Random id (send message first, write to database later)

-:white_check_mark: Supports text & file messages

-:white_check_mark: Gracefully handles errors

-:white_check_mark: Support 'typing' statuses

-:white_check_mark: Upload the file first, send the message later (async uploads) - potential for file ref re-use later

... and more

Example app frontend features

  1. Auto reconnected websocket
  2. Toasts about errors & events
  3. Send text messages
  4. Search for users
  5. Create new chat with another user
  6. Online/offline status
  7. Realtime messaging via websocket
  8. Last message
  9. Auto-avatar (identicon) based on user id
  10. Connection status display
  11. Typing... status
  12. Message delivery status (sent, received, waiting, etc.)
  13. Message history
  14. Persistent chat list
  15. Read / unread messages
  16. Unread messages counters (updates when new messages are received)
  17. Send file messages (upload them to server)

TODO

Frontend (example app) & backend

  1. Pagination support on frontend
    1. For messages
    2. For dialogs
  2. Example app only - user list
    1. ✅ Endpoint
    2. ✅ UI
  3. ✅ New dialog support
  4. Online's fetching on initial load
  5. Last message
    1. ✅ In fetch
    2. ✅ In new dialog
    3. ✅ On arriving message
  6. ✅ Read / unread/ unread count
  7. Last seen
  8. Send photo
  9. ✅ Send file
  10. Reply to message
  11. Delete message
  12. Forward message
  13. Search for dialog (username)
    1. ✅ Frontend (local)
    2. Server based - won't do, out of the scope of the project
  14. ✅ Fake data generator (to test & bench) - done via factories in tests
  15. Cache dialogs (get_groups_to_add) - ?
  16. Move views to async views - ?
  17. Add some sounds
    1. New message
    2. New dialog
    3. Sent message received db_id
  18. Optimize /messages/ endpoint
  19. ✅Some tests
  20. Full test coverage
  21. Migration from v1 guide
  22. Documentation

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install tox
(myenv) $ tox

Development commands

pip install -r requirements_dev.txt
invoke -l

Credits

Tools used in rendering this package:

Paid support

If you wish to have professional help from the authors of django_private_chat2, or simply hire Django experts to solve a particular problem, please contact us via email tech at bearle.ru or Bearle in telegram

django_private_chat2's People

Contributors

delneg avatar zagrebelin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.