A modern, secure, and responsive support ticket management system built with Django
AidFlow is a professional-grade ticket management system designed for efficient customer support workflows. Built with security and user experience in mind, it provides a clean, intuitive interface for creating, tracking, and resolving support requests.
- π« Complete Ticket Lifecycle Management - Create, view, edit, reply, and resolve tickets
- π€ User Authentication & Authorization - Secure login system with role-based access
- π Advanced Search - Quickly find tickets by title or content
- π Status Tracking - Visual indicators for ticket progress (Open, Pending, Closed)
- β‘ Priority System - Organize by urgency (Urgent, High, Medium, Low)
- π·οΈ Category Management - Group tickets by department or issue type
- π¬ Ticket Replies - Threaded conversation system for ticket resolution
- π Security First - CSRF protection, XSS prevention, SQL injection safeguards
- π± Fully Responsive - Mobile-first design that works on all devices
- π§ͺ 99% Test Coverage - 544 statements tested with comprehensive unit tests
- π¨ Clean UI/UX - Minimalist interface with professional styling
- β‘ Performance Optimized - Efficient database queries and caching
| Category | Technology |
|---|---|
| Backend | Django 4.x, Python 3.8+ |
| Database | SQLite (dev), PostgreSQL (prod-ready) |
| Frontend | HTML5, CSS3 (Grid/Flexbox), Vanilla JavaScript |
| Security | Django Auth, CSRF Tokens, Password Hashing |
| Testing | Django TestCase, Coverage.py (99%) |
| Icons | Font Awesome 6 |
| Typography | Anton SC, Segoe UI |
- Python 3.8 or higher
- pip package manager
- Virtual environment (recommended)
- Git
- Clone the repository
git clone https://github.com/santtos0x1/aidflow.git
cd aidflow- Create and activate virtual environment
# Create venv
python -m venv venv
# Activate on Windows
venv\Scripts\activate
# Activate on macOS/Linux
source venv/bin/activate- Install dependencies
pip install -r requirements.txt- Configure environment variables (optional)
# Create .env file
cp .env.example .env
# Edit with your settings
SECRET_KEY=your-secret-key-here
DEBUG=True
DATABASE_URL=sqlite:///db.sqlite3- Run database migrations
python manage.py makemigrations
python manage.py migrate- Create superuser (admin account)
python manage.py createsuperuser- Load initial data (optional)
python manage.py loaddata initial_data.json- Run development server
python manage.py runserverπ Application is now running at: http://127.0.0.1:8000/
- Navigate to
/tickets/or click "Get Started" - Click the "New Ticket" button
- Fill in the form:
- Title: Brief description of the issue
- Description: Detailed explanation
- Category: Select appropriate category
- Priority: Choose urgency level
- Click "Register Ticket"
- View All Tickets: Home page displays all your tickets in card layout
- Search Tickets: Use the search bar to filter by title
- View Details: Click "Detail" button for full information
- Edit Ticket: Update status, priority, or add notes
- Reply to Ticket: Add responses or solutions
- Delete Ticket: Remove unwanted tickets (confirmation required)
Access the Django admin at /admin/ to:
- Manage users and permissions
- Create categories and priorities
- View system-wide ticket statistics
- Moderate ticket content
class Ticket(models.Model):
uuid = UUIDField(primary_key=True)
title = CharField(max_length=200)
description = TextField()
category = ForeignKey(Category)
status = ForeignKey(Status)
priority = ForeignKey(Priority)
creation_date = DateTimeField(auto_now_add=True)
updated_at = DateTimeField(auto_now=True)
created_by = ForeignKey(User)
solution = TextField(blank=True)- Category: Categorize tickets (e.g., Technical, Billing, General)
- Priority: Urgency levels (Urgent, High, Medium, Low)
- Status: Ticket states (Open, Pending, Closed, Solved)
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET | / |
Landing page | β |
| GET | /tickets/ |
List all user tickets | β |
| GET | /tickets/new/ |
Display ticket creation form | β |
| POST | /tickets/new/ |
Create new ticket | β |
| GET | /tickets/search/?q=query |
Search tickets | β |
| GET | /tickets/<uuid>/ |
View ticket details | β |
| GET | /tickets/<uuid>/edit/ |
Display edit form | β |
| POST | /tickets/<uuid>/edit/ |
Update ticket | β |
| GET | /tickets/<uuid>/reply/ |
Display reply form | β |
| POST | /tickets/<uuid>/reply/ |
Add reply to ticket | β |
| POST | /tickets/<uuid>/delete/ |
Delete ticket | β |
# Run all tests
python manage.py test
# Run specific app tests
python manage.py test tickets
# Run with coverage report
coverage run --source='.' manage.py test
coverage report
coverage html # Generate HTML report- Overall Coverage: 99% (544/549 statements)
- Models: 97%
- Views: 100%
- Forms: 100%
- URLs: 100%
- β CSRF Protection - Token-based form validation
- β XSS Prevention - Input sanitization and output escaping
- β SQL Injection - Parameterized queries via Django ORM
- β Authentication - Login required decorators on sensitive views
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/awesome-feature
- Commit your changes
git commit -m 'Add awesome feature' - Push to the branch
git push origin feature/awesome-feature
- Open a Pull Request
- Write tests for new features (maintain 99% coverage)
- Follow PEP 8 style guidelines
- Update documentation for API changes
- Add type hints where applicable
- Keep commits atomic and well-described
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Santos0x1
- GitHub: @santtos0x1
- Django Software Foundation for the amazing framework
- Font Awesome for the icon library
- The open-source community for inspiration and tools
- β Core Features Complete
- β 99% Test Coverage
- π§ User Authentication (In Progress)
β If you found this project useful, please consider giving it a star! β
Made with β€οΈ using Django

