A real-time messaging platform built with Django, Django Channels, WebSockets, and a responsive JavaScript interface.
ChatsUp is a full-stack chat application focused on fast, private communication. It supports one-to-one conversations, group chats, friend requests, user profiles, real-time notifications, online presence, and message delivery states.
The backend is powered by Django and Django Channels, while the frontend uses server-rendered templates with custom CSS and JavaScript for a smooth chat experience across desktop and mobile screens.
- Real-time private messaging with WebSockets.
- Group chat creation, membership, invitations, and owner controls.
- Friend requests and friend management.
- Online and offline presence indicators.
- Message read and delivery status.
- User registration, login, logout, profile editing, and password reset flows.
- Email verification support.
- Responsive layout for desktop and mobile usage.
- SEO-ready
robots.txtandsitemap.xmltemplates. - Environment-based settings for public deployment.
- Backend: Django, Django Channels, Daphne
- Database: SQLite for local development, PostgreSQL-ready through
DATABASE_URL - Realtime: WebSockets with Django Channels
- Frontend: Django Templates, JavaScript, CSS
- Media: Django media storage for user avatars and project assets
ChatsUp/
|-- accounts/ # Authentication, profiles, friend requests, email verification
|-- chat/ # Conversations, messages, groups, WebSocket consumers
|-- chatsup_project/ # Django settings, ASGI/WSGI, root URLs
|-- media/ # Public project media assets
|-- static/ # Shared static assets
|-- templates/ # Global templates such as robots.txt and sitemap.xml
|-- manage.py
|-- requirements.txt
`-- .env.example
git clone https://github.com/your-username/ChatsUp.git
cd ChatsUppython -m venv .venvWindows PowerShell:
.\.venv\Scripts\Activate.ps1macOS/Linux:
source .venv/bin/activatepip install -r requirements.txtCopy the example environment file:
cp .env.example .envWindows PowerShell:
Copy-Item .env.example .envThen update .env with your local or production values.
python manage.py migrateIf the repository does not include generated migration files in your branch, create them first:
python manage.py makemigrations
python manage.py migratepython manage.py createsuperuserpython manage.py runserverOpen the app at:
http://127.0.0.1:8000/
| Variable | Description | Example |
|---|---|---|
DJANGO_SECRET_KEY |
Secret key used by Django | change-me-before-deploy |
DJANGO_DEBUG |
Enables debug mode | True locally, False in production |
DJANGO_ALLOWED_HOSTS |
Comma-separated allowed hosts | localhost,127.0.0.1,your-domain.com |
DJANGO_CSRF_TRUSTED_ORIGINS |
Comma-separated trusted origins | https://your-domain.com |
SITE_URL |
Public site URL used for SEO metadata | https://your-domain.com |
DATABASE_URL |
Optional PostgreSQL connection URL | postgres://user:pass@host:5432/db |
EMAIL_BACKEND |
Django email backend | django.core.mail.backends.console.EmailBackend |
EMAIL_HOST_USER |
SMTP username | [email protected] |
EMAIL_HOST_PASSWORD |
SMTP password or app password | your-password |
- Keep
.env, local databases, virtual environments, compiled Python files, and uploaded user avatars out of Git. - Set
DJANGO_DEBUG=Falsein production. - Use a strong
DJANGO_SECRET_KEYin production. - Add your production domain to
DJANGO_ALLOWED_HOSTS. - Add your HTTPS origin to
DJANGO_CSRF_TRUSTED_ORIGINS. - Use PostgreSQL or another production-ready database through
DATABASE_URL. - Serve static and media files with your deployment platform or a dedicated storage service.
This repository is prepared for public GitHub usage. Local-only files such as db.sqlite3, .env, .venv, __pycache__, compiled Python files, collected static files, and user-uploaded avatars should not be committed.
This project is licensed under the MIT License. See the LICENSE file for details.



