A clean, responsive Customer Support Ticket Management System built with React 19, Tailwind CSS v4, and DaisyUI. Manage customer tickets from open to resolved — all in one focused interface.
🔗 Live Demo: customer1-support-zone.netlify.app
- View Tickets — All customer tickets displayed in a responsive card grid
- Create Tickets — New ticket form with validation (Title, Description, Customer, Priority)
- Edit Tickets — Inline edit mode inside the detail modal (Open & In-Progress tickets)
- Delete Tickets — Delete with a two-step confirmation to prevent accidents
- Ticket Details Modal — Click any ticket card to view full details and take actions
- Search — Real-time search by ticket title
- Filter by Priority — All / High / Medium / Low
- Filter by Status — All / Open / In-Progress
- Sort — Newest / Oldest / Priority (Ascending/Descending)
- Reset Filters — One-click reset for all active filters
- Add to Task — Move open tickets to the Task Status panel (In-Progress)
- Complete Tasks — Mark in-progress tickets as Resolved with one click
- Resolved Task List — View all resolved tickets in the sidebar
- Add Notes — Write comments/notes on any ticket (press Enter or click Add)
- Delete Notes — Remove individual notes with the × button
- Persistent Notes — Notes saved to localStorage per ticket
- Status Breakdown — Progress bars for Open / In-Progress / Resolved with percentages
- Priority Breakdown — Progress bars for High / Medium / Low with percentages
- Smart Alert — Warning when High priority tickets need immediate attention
- Live Counters — Banner shows real-time Total / In-Progress / Resolved counts
- Count Badges — Live ticket count badges on Customer Tickets, Task Status, Resolved Task sections
- Dark Mode Toggle — Smooth Light/Dark theme switching with localStorage persistence
- CSV Export — Download all tickets (Open + In-Progress + Resolved) as a
.csvfile - Keyboard Shortcuts —
NNew Ticket,DDark Mode,EscClose Modal - Toast Notifications — Instant feedback on every action via React-Toastify
- Fully Responsive — Works on mobile, tablet, and desktop
- About Us — Team info, company stats, and background
- Our Mission — Core values and product philosophy
- Contact Sales — Contact details and reasons to choose CS
- Products & Services — Full feature breakdown with descriptions
- Customer Stories — Real customer testimonials
- Download Apps — Web, iOS, and Android availability
- Privacy Policy — Data handling, storage, and cookie policy
- Terms & Conditions — Usage terms and legal information
- Join Us — Open roles and career opportunities
- All tickets, task status, resolved tasks, notes, and theme saved in localStorage
- Data survives page refresh and browser restarts
| Key | Action |
|---|---|
N |
Open New Ticket modal |
D |
Toggle Dark / Light mode |
Esc |
Close any open modal |
Shortcuts are disabled when typing inside an input or textarea field.
| Technology | Version | Purpose |
|---|---|---|
| React | 19.2 | UI & state management |
| Vite | 7.3 | Build tool & dev server |
| Tailwind CSS | 4.2 | Utility-first styling |
| DaisyUI | 5.5 | UI component library |
| React-Toastify | 11.0 | Toast notifications |
Customer-Support-Zone/
├── public/
│ └── favicon.svg
├── src/
│ ├── assets/
│ │ ├── vector1.png
│ │ └── vector2.png
│ ├── components/
│ │ ├── Banner.jsx # Stats cards + Dashboard breakdown
│ │ ├── Footer.jsx # Site footer
│ │ ├── MainSection.jsx # Ticket grid + Task Status sidebar
│ │ ├── Navbar.jsx # Top nav: logo, dark mode, export, shortcuts
│ │ ├── NewTicketModal.jsx # New ticket creation modal
│ │ └── TicketDetailModal.jsx # Ticket detail, edit, notes, delete modal
│ ├── data/
│ │ └── tickets.json # Initial ticket seed data
│ ├── App.jsx # Root component & all state management
│ ├── index.css # Global styles & CSS variables (light/dark)
│ └── main.jsx # App entry point
├── index.html
├── package.json
├── vite.config.js
└── netlify.toml
- Node.js v18+
- npm v9+
# Clone the repository
git clone https://github.com/Shawon-Mahmud07/Customer-Support-Zone.git
# Navigate to project folder
cd Customer-Support-Zone
# Install dependencies
npm install
# Start development server
npm run devThen open http://localhost:5173 in your browser.
npm run buildThe output will be in the dist/ folder.
Open Ticket
│
│ "Add to Task" button
▼
In-Progress (Task Status panel)
│
│ "Complete" button
▼
Resolved (Resolved Task list)
State Flow:
- All state lives in
App.jsx(single source of truth) tickets→ full ticket list (Open + In-Progress)taskStatus→ currently in-progress ticketsresolvedTasks→ completed ticketsticketNotes→ notes/comments per ticket (keyed by ticket ID)- Child components receive data via props and trigger updates via callback functions
The project includes a netlify.toml for zero-config deployment:
[build]
command = "npm run build"
publish = "dist"Just connect your GitHub repo to Netlify — it will build and deploy automatically on every push.
| Concept | Where Used |
|---|---|
useState |
Tickets, task status, modal, dark mode, edit/delete states |
useEffect |
localStorage persistence, keyboard shortcuts, theme sync |
useMemo |
Filtered & sorted ticket list optimization |
| Props & Callbacks | Parent → child data flow |
| Conditional Rendering | Empty states, edit mode, confirm delete, modal visibility |
| Event Handling | onClick, onChange, onKeyDown |
| List Rendering | Ticket cards, task items, notes, resolved tasks |