Home > Backend Development > Python Tutorial > CollabSphere Part Setting Up a Modular Django Chat Application

CollabSphere Part Setting Up a Modular Django Chat Application

Barbara Streisand
Release: 2024-11-29 01:33:12
Original
895 people have browsed it

CollabSphere Part Setting Up a Modular Django Chat Application

Hey developers! Welcome to the first CollabSphere series. In this post, we'll set up CollabSphere with a modular architecture, separating our application into distinct components: users, rooms, and chat.

Let's dive in!

Project Structure and Initial Setup

Setting Up the Virtual Environment

# create a folder named `CollabSphere`
mkdir CollaSphere 
cd CollaSphere

# Create a new virtual environment
python -m venv .venv

# Activate the virtual environment
# For Windows
.venv\Scripts\activate
# For macOS/Linux
source .venv/bin/activate

# Install required packages
pip install django djangorestframework channels
pip install python-dotenv  # for environment variables
Copy after login

Creating django project

# Create a new Django project
django-admin startproject collabsphere .
mkdir apps
cd apps

# Create our main chat, users, and room application
python manage.py startapp chat
python manage.py startapp users
python manage.py startapp rooms


Copy after login

Project Configuration

# collabSphere/settings.py

import os
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # Third-party apps
    'rest_framework',
    'channels',

    # Local apps
    'apps.users.apps.UsersConfig',
    'apps.rooms.apps.RoomsConfig',
    'apps.chat.apps.ChatConfig',
]

# Custom user model
AUTH_USER_MODEL = 'users.User'

# Update app directories
import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

Copy after login

Creating requirements.txt for our dependencies requirements

# command
pip freeze > requirements.txt


asgiref==3.8.1
Django==5.1.3
djangorestframework==3.15.2
python-decouple==3.8
sqlparse==0.5.2
typing_extensions==4.12.2
pillow == 11.0.0
channels
Copy after login

URL Configuration

# collabSphere/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('apps.users.urls')),
    path('rooms/', include('apps.rooms.urls')),
    path('chat/', include('apps.chat.urls')),
]


This will be our path to our applications
Copy after login

Project Organization

Here's our final project structure:

CollabSphere/
├── apps/
│   ├── users/
│   │   ├── migrations/
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── forms.py
│   │   ├── models.py
│   │   ├── urls.py
│   │   └── views.py
│   ├── rooms/
│   │   ├── migrations/
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── models.py
│   │   ├── urls.py
│   │   └── views.py
│   └── chat/
│       ├── migrations/
│       ├── __init__.py
│       ├── admin.py
│       ├── apps.py
│       ├── consumers.py
│       ├── models.py
│       ├── urls.py
│       └── views.py
├── collabSphere/
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── static/
├── docs/
├── tests/
├── manage.py
└── requirements.txt
Copy after login

Key Benefits of This Structure

  • Separation of Concerns: Each app handles its specific functionality
  • Maintainability: Easier to maintain and debug code
  • Scalability: Can easily add new features or modify existing ones
  • Reusability: Apps can be reused in other projects
  • Testing: Easier to write and organize tests

Next Steps

In the next post, we'll cover:

  • User model (extending Django's AbstractUser)
  • Custom user registration
  • Login/logout views
  • User profiles

Resources

Django documentation

collabsphere github link

That’s all for today. We’ll see you in our next series!

The above is the detailed content of CollabSphere Part Setting Up a Modular Django Chat Application. For more information, please follow other related articles on the PHP Chinese website!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template