QuickDesk is a modern, full-stack help desk management system built with Django REST API backend and Next.js frontend. It provides a comprehensive solution for managing customer support tickets with role-based access control, real-time notifications, and email integration.
- Frontend: https://quickdesk-production.up.railway.app
- Backend API: https://attractive-transformation-production-c76f.up.railway.app
- Features
- Technology Stack
- System Architecture
- Installation
- Usage
- API Documentation
- Environment Variables
- Contributing
- License
- Multi-Role System: Customer, Agent, and Admin roles with specific permissions
- Ticket Management: Complete CRUD operations for support tickets
- Real-time Status Updates: Automatic status transitions based on actions
- Comment System: Public and internal comments with notifications
- File Attachments: Support for multiple file types with size limits
- Advanced Search: Full-text search with filters and sorting
- Dashboard Analytics: Role-specific statistics and performance metrics
- Authentication: Secure login/logout with session management
- Role-based Access Control: Different permissions for each user type
- User Profiles: Customizable user information and preferences
- Admin Controls: User management, role changes, and account status
- Auto-generated Ticket Numbers: Sequential ticket numbering (TICK-001, TICK-002...)
- Priority Levels: Low, Medium, High, Urgent with visual indicators
- Categories: Customizable ticket categories with color coding
- Status Tracking: Open, In Progress, Resolved, Closed
- Assignment System: Assign tickets to specific agents
- Voting System: Upvote/downvote tickets for priority assessment
- Email Notifications: Automated emails for ticket events
- In-app Notifications: Real-time notification system
- Comment Threading: Organized comment discussions
- Status Notifications: Automatic updates on status changes
- Modern Design: Clean, responsive UI with gradient backgrounds
- Dark Theme Support: Built-in dark/light theme switching
- Mobile Responsive: Optimized for all device sizes
- Intuitive Navigation: Role-specific navigation and quick actions
- All Tickets View: Agents can see all tickets, not just assigned ones
- Quick Status Updates: Dropdown menus for instant status changes
- Auto Status Change: When agents comment, tickets automatically move to "In Progress"
- Assignment Actions: Self-assign tickets or assign to other agents
- Performance Metrics: Response times, resolution rates, customer satisfaction
- User Management: Create, edit, and manage all users
- Category Management: Add and customize ticket categories
- Priority Management: Configure priority levels and settings
- System Statistics: Comprehensive analytics and reporting
- Email Configuration: Manage notification settings
- Framework: Django 5.2.4 + Django REST Framework
- Database: PostgreSQL (production) / SQLite (development)
- Authentication: Session-based with CSRF protection
- Email: SMTP with Gmail integration
- Deployment: Railway with Docker
- Framework: Next.js 15.2.4 with TypeScript
- Styling: Tailwind CSS + Radix UI components
- State Management: React Hooks + Context API
- Icons: Lucide React
- Deployment: Railway
- Hosting: Railway Platform
- Database: Railway PostgreSQL
- Static Files: WhiteNoise for Django
- CORS: Configured for cross-origin requests
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Frontend β β Backend β β Database β
β (Next.js) βββββΊβ (Django) βββββΊβ (PostgreSQL) β
β Port: 3000 β β Port: 8000 β β Railway β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β User Auth β β Email Service β β File Storage β
β (Session) β β (Gmail SMTP) β β (Local/Media) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- Python 3.8+
- Node.js 18+
- PostgreSQL (for production)
- Git
git clone https://github.com/venkatesh21bit/QuickDesk.git
cd QuickDesk# Navigate to backend directory
cd backend
# Create virtual environment
python -m venv .venv
# Activate virtual environment
# On Windows:
.venv\Scripts\activate
# On macOS/Linux:
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Copy environment file
copy .env.example .env # Windows
# cp .env.example .env # macOS/Linux
# Configure environment variables (see Environment Variables section)
# Edit .env file with your settings
# Run migrations
python manage.py migrate
# Create default data (categories, priorities)
python manage.py populate_defaults
# Create superuser
python manage.py createsuperuser
# Start development server
python manage.py runserver# Navigate to frontend directory (in new terminal)
cd frontend
# Install dependencies
npm install
# Copy environment file
copy .env.example .env.local # Windows
# cp .env.example .env.local # macOS/Linux
# Configure environment variables
# Edit .env.local with your settings
# Start development server
npm run dev- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- Admin Panel: http://localhost:8000/admin
- Create and view own tickets
- Add comments to own tickets
- Upload attachments
- View ticket history and status
- View all tickets (not just assigned ones)
- Assign tickets to themselves or other agents
- Update ticket status via dropdown menus
- Auto-status change: When agents comment, tickets automatically move to "In Progress"
- Add public and internal comments
- Access performance dashboard
- Full system access
- User management (create, edit, roles)
- Category and priority management
- System analytics and reporting
- Email configuration
- Navigate to "New Ticket"
- Fill in subject, description, category, priority
- Attach files if needed
- Submit ticket
- Receive email confirmation
- View all tickets in agent dashboard
- Use filters to find specific tickets
- Click "Update Status" dropdown to change status
- Assign tickets using "Assign to Me" button
- Add comments (automatically changes status to "In Progress")
- Monitor performance metrics
- Access admin panel for user management
- Create and manage categories/priorities
- View system-wide analytics
- Configure email settings
- Manage user roles and permissions
POST /api/auth/register/ # User registration
POST /api/auth/login/ # User login
POST /api/auth/logout/ # User logout
GET /api/auth/profile/ # Get user profile
PUT /api/auth/profile/ # Update user profileGET /api/tickets/ # List tickets
POST /api/tickets/ # Create ticket
GET /api/tickets/{id}/ # Get ticket details
PUT /api/tickets/{id}/ # Update ticket
POST /api/tickets/{id}/assign/ # Assign ticket
POST /api/tickets/{id}/update_status/ # Update ticket status
POST /api/tickets/{id}/vote/ # Vote on ticket
GET /api/tickets/search/ # Search ticketsGET /api/tickets/{id}/comments/ # List comments
POST /api/tickets/{id}/comments/ # Add commentGET /api/dashboard/stats/ # Get dashboard statistics
GET /api/admin/stats/ # Get admin statistics# Django Settings
SECRET_KEY=your-secret-key-here
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1,your-domain.com
# Database (PostgreSQL for production)
DATABASE_URL=postgresql://user:password@host:port/dbname
# OR for local PostgreSQL:
DB_HOST=localhost
DB_NAME=quickdesk_db
DB_USER=postgres
DB_PASSWORD=your-password
DB_PORT=5432
# Email Configuration
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-password
DEFAULT_FROM_EMAIL=QuickDesk <your-email@gmail.com>
# CORS Settings
CORS_ALLOWED_ORIGINS=http://localhost:3000,https://your-frontend-domain.com
# QuickDesk Settings
SITE_NAME=QuickDesk
SITE_URL=http://localhost:3000
ENABLE_EMAIL_NOTIFICATIONS=True
MAX_FILE_SIZE=10485760# API Configuration
NEXT_PUBLIC_API_URL=http://localhost:8000/api
NEXTAUTH_SECRET=your-nextauth-secret
NEXTAUTH_URL=http://localhost:3000- Enable 2-Factor Authentication on your Gmail account
- Generate App Password:
- Go to Google Account settings
- Security β 2-Step Verification
- App passwords β Generate password
- Use the generated password in
EMAIL_HOST_PASSWORD
- Connect your repository to Railway
- Add environment variables in Railway dashboard
- Railway will automatically detect Django and deploy
- Create new Railway service for frontend
- Connect same repository, set root directory to
frontend - Add environment variables
- Deploy
Update your environment variables for production:
- Set
DEBUG=False - Add production domains to
ALLOWED_HOSTSandCORS_ALLOWED_ORIGINS - Use production database URL
- Configure email settings with production SMTP
-
Database Connection Errors
- Ensure PostgreSQL is running
- Check database credentials
- Verify database exists
-
Email Not Sending
- Check Gmail app password
- Verify SMTP settings
- Ensure 2FA is enabled on Gmail
-
CORS Errors
- Add frontend domain to
CORS_ALLOWED_ORIGINS - Check
CSRF_TRUSTED_ORIGINSsettings
- Add frontend domain to
-
Authentication Issues
- Clear browser cookies
- Check session settings
- Verify CSRF token configuration
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Run tests:
python manage.py test(backend) - Commit changes:
git commit -am 'Add feature' - Push to branch:
git push origin feature-name - Create Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Django REST Framework and Next.js
- UI components from Radix UI
- Icons from Lucide React
- Deployed on Railway Platform
For support and questions:
- Email: venkatesh.k21062005@gmail.com
- GitHub Issues: Create an issue
QuickDesk - Making support ticket management quick and efficient! π