π Support Ticket System
A simple full-stack support ticketing system built with React (frontend) and Node.js + Express (backend). Users can log in, submit support tickets, view their ticket history per product, and receive email confirmations. Admin also gets notified via email when a ticket is created.
π Features
π User login (hardcoded for now, can be extended with DB later)
π Create support tickets with:
Product name
Title
Description
Category (General, Technical, Billing)
Priority (Low, Medium, High)
π© Email notifications (sent to both user and admin)
ποΈ View ticket history by product (popup modal)
β³ Loading spinner on ticket submission
π Logout option
π οΈ Tech Stack
Frontend: React (CRA), Fetch API
Backend: Node.js, Express.js, Nodemailer
Email Service: Gmail SMTP
Styling: Basic CSS (custom spinner)
π Project Structure Support-Ticket-System/ βββ client/ # React frontend β βββ src/ β β βββ App.js # Main React app β β βββ App.css # Styling (spinner, UI tweaks) β β βββ index.js # Entry point β βββ package.json # React dependencies β βββ server/ # Node.js backend β βββ index.js # Express server & routes β βββ package.json # Backend dependencies β βββ config.json # Email configuration β βββ README.md # Project documentation
βοΈ Installation
-
Clone the repo git clone https://github.com/your-username/support-ticket-system.git cd support-ticket-system
-
Setup backend cd server npm install
Run backend:
node index.js
Server should start at: π http://localhost:5000
- Setup frontend cd ../client npm install
Run frontend:
npm start
App should open at: π http://localhost:3000
π Login Credentials
For now, login is hardcoded (can be extended with DB):
User Email: [email protected]
Password: password123
π§ Email Configuration
Backend uses Nodemailer with Gmail.
Check server/config.json (or put in package.json for now):
"Email": { "Username": "[email protected]", "Password": "ensfuzffghnszohk", "SmtpServer": "smtp.gmail.com", "Port": 587 }
Replace Username & Password with your Gmail and App Password.
Both admin and user get an email when a ticket is created.
πΌοΈ Screenshots
β Login page
β Create ticket form
β Ticket list with "View History" popup
β Spinner on submit
π§ Future Enhancements
Database integration (MongoDB / SQL) for persistent tickets
User registration & authentication (JWT / OAuth)
Admin dashboard for managing tickets
File attachments