A real-time chat support system built with Django for CSCI 1100 course assistants to provide live help to students. See it deployed at: https://classmanager.co/chat/
- Student Interface: Students can initiate chat sessions without authentication
- Technician Dashboard: Course assistants can view and join waiting chats
- Multi-technician Support: Multiple assistants can collaborate on a single chat
- File Attachments: Support for images, documents, code files, and more
- Schedule Management: Configure support hours and special schedule overrides
- Session-based Access: Students can reconnect to their chats using browser sessions
- Real-time Updates: Auto-refreshing chat interfaces with notification sounds
- Backend: Django 5.1.7+
- Database: SQLite (development) / PostgreSQL (production)
- Server: Gunicorn + Nginx (production)
- Frontend: Bootstrap 5.3 with custom CSS
- File Storage: Local filesystem with automatic cleanup
support_chat/
├── accounts/ # User management and authentication
├── chat/ # Core chat functionality
├── static/ # CSS, JavaScript, images
├── templates/ # HTML templates
├── media/ # Uploaded files (generated)
├── manage.py # Django management script
├── dev_runserver.sh # Development server launcher
└── support_chat/ # Project settings
├── settings.py # Production settings
└── settings_dev.py # Development settings
- Clone the repository
git clone <repository-url>
cd support_chat- Create a virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate- Install dependencies
pip install -r requirements.txt- Run migrations
python manage.py migrate --settings=support_chat.settings_dev- Create a system manager account
python manage.py create_system_manager \
--settings=support_chat.settings_dev \
username \
email@etsu.edu \
password \
"First" \
"Last" \
"System Manager" \
"Computing"- Initialize default schedule (optional)
python manage.py init_schedule --settings=support_chat.settings_dev- Run the development server
./dev_runserver.sh
# Or manually:
python manage.py runserver --settings=support_chat.settings_dev- Access the application
- Student interface: http://localhost:8000/
- Staff login: http://localhost:8000/accounts/login/
- Admin interface: http://localhost:8000/admin/
python manage.py create_system_manager [--settings=support_chat.settings_dev] \
username email@etsu.edu password "First" "Last" "Job Title" "Departments"# Business hours (9 AM - 4:30 PM, Mon-Fri)
python manage.py init_schedule [--settings=support_chat.settings_dev]
# Extended hours (9 AM - 6 PM, Mon-Fri)
python manage.py init_schedule --extended-hours [--settings=support_chat.settings_dev]
# Finals week (9 AM - 7 PM, Mon-Fri)
python manage.py init_schedule --finals-week [--settings=support_chat.settings_dev]
# Force overwrite existing schedule
python manage.py init_schedule --force [--settings=support_chat.settings_dev]# Delete closed chats older than 7 days (dry run)
python manage.py cleanup_old_chats --dry-run [--settings=support_chat.settings_dev]
# Actually delete them
python manage.py cleanup_old_chats [--settings=support_chat.settings_dev]
# Custom retention period
python manage.py cleanup_old_chats --days 30 [--settings=support_chat.settings_dev]- Full administrative access
- Can create and manage technician accounts
- Can configure support schedules
- Can create schedule overrides for holidays/special events
- Can join and manage all chats
- Can view waiting chats on the dashboard
- Can join and respond to student chats
- Can upload files and use quick responses
- Can close completed chats
- No account required (session-based)
- Can start chat sessions
- Can send messages and upload files
- Can leave chats voluntarily
Located in settings.py and settings_dev.py:
- Maximum file size per upload: 5 MB
- Maximum total size per message: 25 MB
- Maximum files per message: 10
- Supported file types: Images, documents, code files, archives
- Session duration: 24 hours
- Sessions persist across browser restarts
- Students can reconnect using the same session
- Configure weekly support hours by day
- Set special hours for holidays/events
- Override regular schedule for specific dates
- Real-time availability status on landing page
python manage.py test --settings=support_chat.settings_devThe dev_runserver.sh script automatically uses development settings:
./dev_runserver.shWhen making model changes:
python manage.py makemigrations --settings=support_chat.settings_dev
python manage.py migrate --settings=support_chat.settings_devDo-whatever-you-want license :P

