Readme Β· MD Copy
A modern, full-featured support ticket management interface β inspired by tools like Linear and Zendesk. Built with React, TypeScript, and Tailwind CSS.
- Ticket Management β Create, update, delete, and prioritize tickets with a fluid 3-panel layout
- Real-time Status Updates β Change ticket status and priority with instant UI feedback via React Query mutations
- Smart Filtering β Filter tickets by view (My Tickets, High Priority, Unassigned, Past Due) and search by title or ID
- Reply Composer β Public replies and private comments with a rich toolbar UI
- Analytics Dashboard β Ticket volume trends, status/priority breakdown, resolution time distribution, and agent performance β all built with Recharts
- Ticket Properties Panel β Assignee, reporter, project, type, due date, tags, and linked tickets
- Delete with Confirmation β AlertDialog-guarded destructive actions
| Layer | Tech |
|---|---|
| Framework | React 18 + TypeScript |
| Build tool | Vite |
| Styling | Tailwind CSS + CSS custom properties |
| Components | shadcn/ui (Radix UI primitives) |
| Data fetching | TanStack React Query v5 |
| Charts | Recharts |
| Routing | React Router v6 |
| Backend | Express.js (Node) |
| Icons | Lucide React |
# Frontend
cd helpdesk-ui
npm install
npm run dev# Backend (optional β app falls back to mock data without it)
cd helpdesk-ui/server
npm install
node index.jsSet your API URL in helpdesk-ui/.env:
VITE_API_URL=http://localhost:3001/api/tickets
src/
βββ components/
β βββ helpdesk/ # Domain components (TicketList, TicketDetail, etc.)
β βββ ui/ # shadcn/ui base components
βββ data/
β βββ mockData.ts # Ticket data, types, analytics data
βββ lib/
β βββ api.ts # Axios API client
βββ pages/
βββ Index.tsx # Main tickets view
βββ Analytics.tsx # Analytics dashboard
Built to explore React architecture patterns, component composition, and data-driven UI design. The project demonstrates state management with React Query, compound component patterns, and building consistent design systems with Tailwind CSS custom tokens.