A full-stack helpdesk ticketing system with a React frontend and Node.js/Express/MongoDB backend. The app allows users to sign up, log in, and manage support tickets securely via a RESTful API.
- User authentication (JWT-based signup/login)
- Create, view, update, and delete support tickets
- Assign tickets to users
- Ticket status management (open, in progress, closed)
- RESTful API with Swagger docs
- Rate limiting, security headers, and CORS
- React frontend (template, ready for customization)
- Frontend: React (Create React App)
- Backend: Node.js, Express.js, MongoDB (Mongoose)
- Authentication: JWT
- API Docs: Swagger (OpenAPI)
- Other: Helmet, CORS, express-rate-limit
helpdesk-app/
client/ # React frontend
server/ # Express backend
tests/ # API HTTP request examples
requirements.txt # Setup instructions for Node/MongoDB
- Node.js (LTS recommended)
- MongoDB (local or cloud)
cd server
npm installCreate a .env file in server/ with:
PORT=3000
MONGODB_URI=mongodb://localhost:27017/helpdesk
TOKEN_SECRET=your_jwt_secret
cd ../client
npm install- macOS:
brew services start mongodb-community - Windows: Use MongoDB Community installer
cd server
npm run dev # or: make devcd client
npm start- Backend: http://localhost:3000/api
- Frontend: http://localhost:3000/ (or another port if 3000 is in use)
- API Docs: http://localhost:3000/api-docs
POST /api/auth/signup— Register a new userPOST /api/auth/login— Login and receive JWT
POST /api/tickets— Create ticketGET /api/tickets— List all ticketsGET /api/tickets/:id— Get ticket by IDPUT /api/tickets/:id— Update ticketPATCH /api/tickets/:id— Partial updateDELETE /api/tickets/:id— Delete ticket
See tests/api.http for example requests.
POST /api/auth/signup
{
"email": "user@example.com",
"password": "s3cret123"
}
POST /api/auth/login
{
"email": "user@example.com",
"password": "s3cret123"
}
// Response: { "token": "..." }POST /api/tickets
Authorization: Bearer <token>
{
"title": "Cannot log in",
"description": "User gets error when trying to log in."
}- Backend scripts:
npm run dev(nodemon),npm start - Frontend scripts:
npm start,npm test,npm run build - Makefile in
server/for quick start - API docs auto-generated at
/api-docs
- Fork & clone the repo
- Create a feature branch
- Commit and push your changes
- Open a pull request
MIT (add a LICENSE file if needed)