Skip to content

A full-stack, role-based ticket management system for tracking, assigning, and resolving customer support requests. Built with ASP.NET Core and React.

Notifications You must be signed in to change notification settings

yusufuznn/TicketManagementSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Ticketly

ticketly

A modern and user-friendly ticket management system. This project is designed for tracking customer support requests, assigning staff, and analyzing performance.

πŸš€ Features

User Roles

  • Customer: Create and track tickets
  • Staff: Manage assigned tickets
  • Manager: Manage all tickets and assign staff
  • Admin: Full system administration

Core Features

  • βœ… Ticket creation and management
  • βœ… Staff assignment and transfer
  • βœ… Comment system
  • βœ… File attachments
  • βœ… Timeline tracking
  • βœ… Filtering and search
  • βœ… Statistics and reporting
  • βœ… CSV export
  • βœ… JWT-based security

πŸ› οΈ Technologies

Backend

  • ASP.NET Core 9.0
  • Entity Framework Core
  • PostgreSQL
  • JWT Authentication
  • BCrypt (for password hashing)

Frontend

  • React 18
  • TypeScript
  • Modern CSS
  • Responsive Design

πŸ“Έ Screenshots

login

login page

register

register page

musHp

customer homepage

ticketDetail

ticket creation, listing and details

persHp

staff homepage

persPanel

staff page

adminHp

Β admin homepage

adminPanel

admin page

πŸ“¦ Installation

Requirements

  • .NET 9.0 SDK
  • Node.js 18+
  • PostgreSQL

Backend Setup

  1. Create the database:
# Create a PostgreSQL database
createdb ticket_system
  1. Install backend dependencies:
cd backend/TicketSystem.API
dotnet restore
  1. Configure the connection string: Update the PostgreSQL connection string in appsettings.json:
{
  "ConnectionStrings": {
    "DefaultConnection": "Host=localhost;Database=ticket_system;Username=your_username;Password=your_password"
  }
}
  1. Apply database migrations:
dotnet ef database update
  1. Start the backend:
dotnet run

Frontend Setup

  1. Install frontend dependencies:
cd frontend
npm install
  1. Start the frontend:
npm start

πŸ”§ Configuration

JWT Settings

Configure JWT options in backend/TicketSystem.API/appsettings.json:

{
  "Jwt": {
    "Key": "your-super-secret-key-here-minimum-16-characters",
    "Issuer": "TicketSystem",
    "Audience": "TicketSystemUsers",
    "ExpireMinutes": 60
  }
}

CORS Settings

Update the frontend URL in Program.cs:

policy.WithOrigins("http://localhost:3000")

πŸ“ Project Structure

ticket-system/
β”œβ”€β”€ backend/
β”‚   └── TicketSystem.API/
β”‚       β”œβ”€β”€ Controllers/     # API endpoints
β”‚       β”œβ”€β”€ Entities/        # Database models
β”‚       β”œβ”€β”€ Migrations/      # EF Core migrations
β”‚       └── Program.cs       # Application configuration
└── frontend/
    └── src/
        β”œβ”€β”€ components/      # React components
        β”œβ”€β”€ pages/           # Page components
        β”œβ”€β”€ services/        # API services
        β”œβ”€β”€ utils/           # Utility functions
        └── contexts/        # React contexts

πŸ” Security

  • JWT-based authentication
  • Password hashing with BCrypt
  • Role-based authorization
  • CORS protection
  • Input validation

πŸ“Š API Endpoints

Auth

  • POST /api/Auth/login β€” User login
  • POST /api/Auth/register β€” User registration
  • POST /api/Auth/change-password β€” Change password

Tickets

  • GET /api/Ticket β€” List all tickets
  • GET /api/Ticket/my β€” List user’s tickets
  • POST /api/Ticket β€” Create new ticket
  • PUT /api/Ticket/{id} β€” Update ticket
  • DELETE /api/Ticket/{id} β€” Delete ticket

Statistics

  • GET /api/Ticket/statistics β€” General statistics
  • GET /api/Ticket/personel-stats β€” Staff performance
  • GET /api/Ticket/export-csv β€” Export as CSV

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to your branch (git push origin feature/amazing-feature)
  5. Create a pull request

πŸ“’ Contact

Email: yusfuzn@hotmail.com

About

A full-stack, role-based ticket management system for tracking, assigning, and resolving customer support requests. Built with ASP.NET Core and React.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published