{"id":31129092,"url":"https://github.com/adhamelrouby/ticket-iq","last_synced_at":"2026-04-14T14:31:17.461Z","repository":{"id":314650631,"uuid":"1056295152","full_name":"AdhamElRouby/Ticket-IQ","owner":"AdhamElRouby","description":"🎫 AI-powered support ticket system with MERN stack, using Google Gemini AI to analyze tickets, prioritize issues, generate summaries, and send real-time notifications","archived":false,"fork":false,"pushed_at":"2025-09-24T01:39:05.000Z","size":8272,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-24T03:27:45.706Z","etag":null,"topics":["background-jobs","expressjs","gemini-api","inngest","inngest-agent-kit","mui-material","nodejs","reactjs","real-time-notifications","redux-toolkit","rest-api","socket-io","tailwindcss","typescript","web-development"],"latest_commit_sha":null,"homepage":"https://ticket-iq.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AdhamElRouby.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-13T19:35:07.000Z","updated_at":"2025-09-24T01:39:08.000Z","dependencies_parsed_at":"2025-09-13T21:30:01.752Z","dependency_job_id":"652f5786-d508-4e2b-85e1-a5bfde956a23","html_url":"https://github.com/AdhamElRouby/Ticket-IQ","commit_stats":null,"previous_names":["adhamelrouby/ticket-iq"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AdhamElRouby/Ticket-IQ","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdhamElRouby%2FTicket-IQ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdhamElRouby%2FTicket-IQ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdhamElRouby%2FTicket-IQ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdhamElRouby%2FTicket-IQ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AdhamElRouby","download_url":"https://codeload.github.com/AdhamElRouby/Ticket-IQ/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdhamElRouby%2FTicket-IQ/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31801221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T11:13:53.975Z","status":"ssl_error","status_checked_at":"2026-04-14T11:13:53.299Z","response_time":153,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["background-jobs","expressjs","gemini-api","inngest","inngest-agent-kit","mui-material","nodejs","reactjs","real-time-notifications","redux-toolkit","rest-api","socket-io","tailwindcss","typescript","web-development"],"created_at":"2025-09-18T01:52:33.885Z","updated_at":"2026-04-14T14:31:17.455Z","avatar_url":"https://github.com/AdhamElRouby.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ticket IQ: AI Ticket Management System\n\nA 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.\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"./assets/demo.gif\" alt=\"App Demo\"\u003e\n\n\u003c/div\u003e\n\n## 🚀 Live Deployment\n\n**🌐 Frontend**: [https://ticket-iq.vercel.app](https://ticket-iq.vercel.app)  \n**🔧 Backend API**: [https://ticket-iq.onrender.com](https://ticket-iq.onrender.com)  \n**📚 API Documentation**: [https://ticket-iq.onrender.com/api-docs](https://ticket-iq.onrender.com/api-docs)\n\n## Tech Stack\n\n- \u003cimg src=\"https://img.shields.io/badge/-HTML5-E34F26?logo=HTML5\u0026logoColor=white\u0026style=flat\" alt=\"html5\"\u003e\n- \u003cimg src=\"https://img.shields.io/badge/-CSS3-1572B6?logo=CSS3\u0026logoColor=white\u0026style=flat\" alt=\"css3\"\u003e\n- \u003cimg src=\"https://img.shields.io/badge/-TypeScript-3178C6?logo=TypeScript\u0026logoColor=white\u0026style=flat\" alt=\"TypeScript\"\u003e\n- \u003cimg src=\"https://img.shields.io/badge/-React-61DAFB?logo=React\u0026logoColor=black\u0026style=flat\" alt=\"React.js\"\u003e\n- \u003cimg src=\"https://img.shields.io/badge/-Redux-764ABC?logo=Redux\u0026logoColor=white\u0026style=flat\" alt=\"Redux\"\u003e\n- \u003cimg src=\"https://img.shields.io/badge/-Node.js-339933?logo=Node.js\u0026logoColor=white\u0026style=flat\" alt=\"Node.js\"\u003e\n- \u003cimg src=\"https://img.shields.io/badge/-Express.js-000000?logo=Express\u0026logoColor=white\u0026style=flat\" alt=\"Express.js\"\u003e\n- \u003cimg src=\"https://img.shields.io/badge/-MongoDB-47A248?logo=MongoDB\u0026logoColor=white\u0026style=flat\" alt=\"MongoDB\"\u003e\n- \u003cimg src=\"https://img.shields.io/badge/-Socket.io-25c2a0?logo=Socket.io\u0026logoColor=white\u0026style=flat\" alt=\"Socket.io\"\u003e\n\n## Features\n\n### 🤖 AI-Powered Ticket Analysis\n- **Automatic Priority Assessment**: AI analyzes ticket content to determine urgency levels (low, medium, high, critical)\n- **Intelligent Summarization**: Generates concise summaries of complex technical issues\n- **Resource Recommendations**: Provides relevant documentation links and helpful notes for moderators\n- **Skill Matching**: Identifies technical skills required for ticket resolution\n\n### 👥 User Management \u0026 Authentication\n- **Secure Authentication**: JWT-based authentication with refresh token support\n- **Role-Based Access Control**: Admin and user roles with appropriate permissions\n- **User Profiles**: Comprehensive user management with **email verification**\n- **Protected Routes**: Client-side route protection based on authentication status\n\n### 🎫 Advanced Ticket Management\n- **Real-time Updates**: Live ticket status updates using WebSocket connections\n- **Ticket Assignment**: Smart assignment system for moderators and technicians\n- **Status Tracking**: Complete ticket lifecycle management (TODO → IN_PROGRESS → ASSIGNED → DONE)\n- **Advanced Filtering**: Filter tickets by status, priority, and assignment\n\n### ⚡ Real-time Notifications\n- **Live Notifications**: Instant updates on ticket progress and assignments\n- **Progress Tracking**: Live toast notifications for ticket analysis and assignment\n\n### 🔧 Technical Features\n- **RESTful API**: Well-structured backend API with comprehensive endpoints\n- **Background Jobs**: Handles asynchronous tasks such as ticket analysis, **email notifications**, and scheduled maintenance using Inngest for reliable job processing.\n- **Data Validation**: Input validation and sanitization for security\n- **Error Handling**: Comprehensive error handling with custom error classes\n- **Rate Limiting**: API rate limiting for enhanced security\n- **API Documentation**: Swagger/OpenAPI documentation for easy integration\n\n## Privacy Terms\n\nPlease 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.\n\nFor 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.\n\n**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.\n\n**Real-time Communication**: WebSocket connections are used for real-time updates and are secured with proper authentication mechanisms.\n\n**Your privacy and data security are paramount.** All sensitive information is encrypted in transit and at rest.\n\n## Run Locally\n\nClone the project\n\n```bash\ngit clone https://github.com/AdhamElRouby/Ticket-IQ.git\n```\n\nGo to the project directory\n\n```bash\ncd Ticket-IQ\n```\n\n### Backend Setup\n\nNavigate to the server directory\n\n```bash\ncd server\n```\n\nInstall server dependencies\n\n```bash\nnpm install\n```\n\nCreate environment file and add your variables\n\n```bash\ncp .env.example .env\n```\n\nRequired environment variables:\n- `MONGODB_URI` - Your MongoDB connection string\n- `JWT_SECRET` - Secret key for JWT tokens\n- `JWT_REFRESH_SECRET` - Secret key for refresh tokens\n- `GEMINI_API_KEY` - Google Gemini AI API key\n- `EMAIL_SERVICE` - Email service configuration\n- `INNGEST_EVENT_KEY` - Inngest event key for background jobs\n\nStart the development server\n\n```bash\nnpm run dev\n```\n\nStart the Inngest development server (in a separate terminal)\n\n```bash\nnpm run inngest-dev\n```\n\n### Frontend Setup\n\nNavigate to the client directory\n\n```bash\ncd client\n```\n\nInstall client dependencies\n\n```bash\nnpm install\n```\n\nStart the development server\n\n```bash\nnpm run dev\n```\n\nThe application will be available at:\n- Frontend: `http://localhost:5173`\n- Backend: `http://localhost:3000`\n- API Documentation: `http://localhost:3000/api-docs`\n\n## Contributing\n\nI welcome contributions to this project! Feel free to submit pull requests and suggest improvements. \nIf you have any questions or need assistance, don’t hesitate to contact me at adhamelrouby@aucegypt.edu.\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadhamelrouby%2Fticket-iq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadhamelrouby%2Fticket-iq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadhamelrouby%2Fticket-iq/lists"}