A Django-based ticketing system for managing and tracking support issues, bug reports, and feature requests. This application helps teams organize their workflow by enabling them to create, assign, and track tickets throughout their lifecycle.
This ticketing system provides a comprehensive solution similar to Jira or other issue tracking platforms. It allows organizations to:
- Manage support requests from users or customers
- Track bugs and feature requests for software development
- Assign tasks to team members with appropriate deadlines
- Monitor the progress of issues through customizable statuses
- Generate reports and analytics on ticket resolution times and team performance
- User Authentication & Authorization: Secure login, registration, and role-based permissions
- Team Organization: User groups for team management and ticket assignment
- Rich Ticket Management:
- Create, update, and close tickets with detailed information
- Attach files for additional context (screenshots, logs, etc.)
- Add comments for team collaboration
- Track ticket history and changes
- Flexible Configuration:
- Customizable ticket statuses (Open, In Progress, Resolved, etc.)
- Priority levels for issue urgency
- Categorization by ticket types (Bug, Feature Request, Support, etc.)
- Notifications: Email alerts for ticket updates and assignments
- Search & Filtering: Comprehensive ticket filtering to find relevant issues
- Reporting Dashboard: Visualization of ticket statistics and team performance
- API Integration: REST API for connecting with other systems
- Python 3.8+
- Django 5.2+
- PostgreSQL database (recommended for production)
- Other dependencies in requirements.txt
This application is configured for deployment on Render. Key deployment considerations:
- PostgreSQL database setup on Render
- Static files served using WhiteNoise
- Environment variables for secure configuration
- Build script for automated deployment
-
Clone the repository:
git clone <repository-url> cd ticketing -
Create and activate 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:
cd myapp python manage.py makemigrations python manage.py migrate -
Create initial data:
python setup.pyThis creates default statuses, priorities, types, groups, and a superuser (admin/adminpassword).
-
Start the development server:
python manage.py runserver -
Visit http://127.0.0.1:8000 in your browser.
- Regular Users: Can create tickets, comment, view their own tickets, and tickets assigned to them
- Group Members: Can view and update tickets assigned to their groups
- Administrators: Full access to all functionality including user and group management
- Creating a Ticket: Users can submit new issues with details about the problem
- Assigning Tickets: Team leads can assign tickets to appropriate team members
- Updating Status: Assignees update ticket progress as they work on issues
- Adding Comments: Team members can collaborate through ticket comments
- Resolving Tickets: Once fixed, tickets can be marked as resolved or closed
The system provides a REST API for programmatic access:
- API endpoint:
/api/v1/ - API authentication: Token-based (
/api-token-auth/) - API documentation (Swagger UI):
/api/docs/(if configured)
Example API usage:
import requests
# Authenticate and get token
response = requests.post(
'http://localhost:8000/api-token-auth/',
data={'username': 'admin', 'password': 'adminpassword'}
)
token = response.json()['token']
# Use token to access API
headers = {'Authorization': f'Token {token}'}
tickets = requests.get('http://localhost:8000/api/v1/tickets/', headers=headers)
print(tickets.json())Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.