A modern full-stack web application designed to streamline support ticket management with AI-powered analysis and real-time collaboration. Built with a React.js frontend and Node.js backend, the system automatically analyzes incoming tickets using Google's Gemini AI to determine priority levels, generate summaries, and provide helpful resources for efficient resolution.
π Frontend: https://ticket-iq.vercel.app
π§ Backend API: https://ticket-iq.onrender.com
π API Documentation: https://ticket-iq.onrender.com/api-docs
- Automatic Priority Assessment: AI analyzes ticket content to determine urgency levels (low, medium, high, critical)
- Intelligent Summarization: Generates concise summaries of complex technical issues
- Resource Recommendations: Provides relevant documentation links and helpful notes for moderators
- Skill Matching: Identifies technical skills required for ticket resolution
- Secure Authentication: JWT-based authentication with refresh token support
- Role-Based Access Control: Admin and user roles with appropriate permissions
- User Profiles: Comprehensive user management with email verification
- Protected Routes: Client-side route protection based on authentication status
- Real-time Updates: Live ticket status updates using WebSocket connections
- Ticket Assignment: Smart assignment system for moderators and technicians
- Status Tracking: Complete ticket lifecycle management (TODO β IN_PROGRESS β ASSIGNED β DONE)
- Advanced Filtering: Filter tickets by status, priority, and assignment
- Live Notifications: Instant updates on ticket progress and assignments
- Progress Tracking: Live toast notifications for ticket analysis and assignment
- RESTful API: Well-structured backend API with comprehensive endpoints
- Background Jobs: Handles asynchronous tasks such as ticket analysis, email notifications, and scheduled maintenance using Inngest for reliable job processing.
- Data Validation: Input validation and sanitization for security
- Error Handling: Comprehensive error handling with custom error classes
- Rate Limiting: API rate limiting for enhanced security
- API Documentation: Swagger/OpenAPI documentation for easy integration
Please note that all ticket information, user data, and communication within the web application will be securely stored in MongoDB. These data points will be handled responsibly and will not be misused in any way.
For users signing in with email, only your email address and profile information will be visible to administrators for ticket assignment purposes, while your password is securely hashed using bcrypt and remains inaccessible.
AI Analysis: Ticket content is processed by Google's Gemini AI to provide intelligent analysis and recommendations. This processing is done securely and no sensitive data is retained by the AI service beyond the analysis session.
Real-time Communication: WebSocket connections are used for real-time updates and are secured with proper authentication mechanisms.
Your privacy and data security are paramount. All sensitive information is encrypted in transit and at rest.
Clone the project
git clone https://github.com/AdhamElRouby/Ticket-IQ.gitGo to the project directory
cd Ticket-IQNavigate to the server directory
cd serverInstall server dependencies
npm installCreate environment file and add your variables
cp .env.example .envRequired environment variables:
MONGODB_URI- Your MongoDB connection stringJWT_SECRET- Secret key for JWT tokensJWT_REFRESH_SECRET- Secret key for refresh tokensGEMINI_API_KEY- Google Gemini AI API keyEMAIL_SERVICE- Email service configurationINNGEST_EVENT_KEY- Inngest event key for background jobs
Start the development server
npm run devStart the Inngest development server (in a separate terminal)
npm run inngest-devNavigate to the client directory
cd clientInstall client dependencies
npm installStart the development server
npm run devThe application will be available at:
- Frontend:
http://localhost:5173 - Backend:
http://localhost:3000 - API Documentation:
http://localhost:3000/api-docs
I welcome contributions to this project! Feel free to submit pull requests and suggest improvements. If you have any questions or need assistance, donβt hesitate to contact me at adhamelrouby@aucegypt.edu.
This project is licensed under the MIT License.
