- Introduction
- System Architecture
- Installation Guide
- Configuration
- User Guide
- Developer Guide
- Techinical Architecture
- Troubleshooting
AMUqBot is a comprehensive query management system designed specifically for Aligarh Muslim University (AMU). It provides a modern, efficient platform for handling academic queries, document management, and real-time discussions.
- User Authentication: Secure login system with role-based access control
- Document Management: Upload, store, and manage academic documents
- Query System: Submit, track, and manage academic queries
- Real-time Communication: WebSocket-based discussion system
- Responsive Design: Mobile-friendly interface using Tailwind CSS
- Backend Framework: Django 5.2
- Frontend: Tailwind CSS
- Database: SQLite3
- Real-time Communication: Django Channels
- Server: Daphne (ASGI server)
- Template Engine: Jinja2
AMUqBot/
├── amu_query_bot/ # Main Django project
│ ├── core/ # Core application
│ │ ├── models.py # Database models
│ │ ├── views.py # View logic
│ │ └── urls.py # URL routing
│ ├── documents/ # Document management
│ ├── users/ # User management
│ ├── templates/ # HTML templates
│ └── static/ # Static files
├── docs/ # Documentation
└── requirements.txt # Python dependencies
- Python 3.x
- Node.js and npm
- Git
-
Clone the Repository
git clone https://github.com/yourusername/AMUqBot.git cd AMUqBot -
Set Up Virtual Environment
python -m venv .venv # Windows .venv\Scripts\activate # Unix/MacOS source .venv/bin/activate
-
Install Dependencies
pip install -r requirements.txt npm install
-
Database Setup
cd amu_query_bot python manage.py migrate python manage.py createsuperuser -
Run Development Server
python manage.py runserver
Create a .env file in the project root with the following variables:
DEBUG=True
SECRET_KEY=your-secret-key
DATABASE_URL=sqlite:///db.sqlite3
The project uses SQLite by default. For production, configure your preferred database in settings.py.
-
Student
- Submit queries
- Upload documents
- Participate in discussions
-
Faculty
- Respond to queries
- Manage documents
- Moderate discussions
-
Admin
- Manage users
- System configuration
- Access all features
- Log in to your account
- Navigate to "New Query"
- Fill in the query details
- Attach relevant documents
- Submit
- Access the document section
- Upload new documents
- Organize in folders
- Share with relevant users
- Join a discussion room
- Send messages in real-time
- Share files and links
- Use @mentions for specific users
- Fork the repository
- Create a feature branch
- Set up pre-commit hooks
- Follow coding standards
- Follow PEP 8 guidelines
- Use meaningful variable names
- Write docstrings for functions
- Include type hints
python manage.py testAMUqBot is built using a modern web architecture that emphasizes scalability, maintainability, and real-time capabilities.
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Client Layer │ │ Application │ │ Data Layer │
│ (Frontend) │◄───►│ Layer (Django) │◄───►│ (Database) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
▲ ▲ ▲
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ WebSockets │ │ Task Queue │ │ File Storage │
│ (Channels) │ │ (Celery) │ │ (Media) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Framework: Tailwind CSS
- State Management: Alpine.js
- Real-time Updates: WebSocket client
- Build System: Webpack
- Framework: Django 5.2
- ASGI Server: Daphne
- Task Queue: Celery
- Caching: Redis
- WebSockets: Django Channels
- Primary Database: SQLite3 (Development)
- Production Database: PostgreSQL
- Caching Layer: Redis
- Search Engine: Elasticsearch (Optional)
- Authentication: Django Authentication System
- Authorization: Role-Based Access Control (RBAC)
- Data Encryption: AES-256
- HTTPS: TLS 1.3
- Web Server: Nginx
- Application Server: Daphne
- Process Manager: Supervisor
- Containerization: Docker
- CI/CD: GitHub Actions
- User submits query through frontend
- Request validated by Django middleware
- Query stored in database
- Notification sent through WebSocket
- Email notification sent (optional)
- WebSocket connection established
- Messages routed through Django Channels
- Redis backend for message persistence
- Real-time updates to connected clients
- Page Caching: 5 minutes
- API Response Caching: 1 minute
- Static Asset Caching: 1 week
- Database Query Caching: 15 minutes
- Indexed fields
- Query optimization
- Connection pooling
- Regular maintenance
- Horizontal scaling
- Round-robin distribution
- Health checks
- Failover configuration
- Application: New Relic
- Server: Prometheus
- Logging: ELK Stack
- Error Tracking: Sentry
- Response time
- Error rates
- User sessions
- Resource utilization
- Database performance
- Daily database backups
- Weekly full system backups
- Real-time file replication
- Off-site storage
- Point-in-time recovery
- Database restoration
- File system recovery
- Service restoration
- Git flow branching model
- Feature branches
- Release branches
- Hotfix branches
- PEP 8 compliance
- Type checking
- Unit testing
- Integration testing
- Code review process
- CSRF protection
- XSS prevention
- SQL injection protection
- Rate limiting
- Input validation
- Firewall configuration
- SSL/TLS encryption
- Regular security audits
- Vulnerability scanning
- Access control lists
-
Database Migration Errors
python manage.py makemigrations python manage.py migrate --run-syncdb
-
Static Files Not Loading
python manage.py collectstatic
-
WebSocket Connection Issues
- Check Daphne server status
- Verify ASGI configuration
- Check firewall settings
- Check the GitHub Issues
- Contact the development team
- Join the community forum
Please read PR practices for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub: SuhelKhanCA
- LinkedIn: Suhel Khan
- Twitter: Suhel Khan
- Email: [email protected]






