Skip to content

Repository files navigation

Ticket Management System

A full-stack Ticket Management System developed during my Java Backend Internship at Teknopark İstanbul.

The project focuses on backend architecture, secure authentication, database migrations, containerization, API integration, and frontend-backend communication using Java, Spring Boot, React, Tailwind CSS, SQL Server, Flyway, Docker, and Maven.


Overview

This project was developed to gain practical experience with production-oriented Java backend development and modern full-stack application architecture.

The backend applies layered architecture and microservice-oriented design principles, while the frontend communicates with backend services through REST APIs.

Key engineering areas covered in the project include:

  • Java and Spring Boot backend development
  • Layered and microservice-oriented architecture
  • REST API development and integration
  • JWT-based authentication and authorization
  • Access and refresh token management
  • Password hashing and secure credential handling
  • Microsoft SQL Server integration
  • Flyway database migrations
  • Docker containerization
  • Docker Compose orchestration
  • React and Tailwind CSS frontend development
  • Maven dependency and project management

Tech Stack

Backend

  • Java
  • Spring Boot
  • REST APIs
  • Maven
  • JWT Authentication

Frontend

  • React
  • Tailwind CSS

Database

  • Microsoft SQL Server
  • Flyway

DevOps & Tools

  • Docker
  • Docker Compose
  • Git
  • GitHub

Architecture

The application was designed using layered architecture principles to keep responsibilities separated and the codebase maintainable.

Typical backend responsibilities are separated into layers such as:

Controller
   ↓
Service
   ↓
Repository
   ↓
Database

The project also applies microservice-oriented design principles, allowing application responsibilities to be separated into independently manageable backend components.

This approach provided practical experience with:

  • Separation of concerns
  • Modular backend design
  • API-based service communication
  • Dependency management
  • Maintainable application structure

Authentication & Security

Authentication and authorization were implemented using JWT-based security.

The security implementation includes:

  • Access tokens
  • Refresh tokens
  • Password hashing
  • Protected API endpoints
  • Authentication and authorization workflows
  • Secure frontend-backend communication

The access and refresh token structure allows short-lived access tokens to be renewed without requiring the user to authenticate again for every session.


Database & Flyway

The project uses Microsoft SQL Server as its relational database.

Database schema changes are managed with Flyway migrations, providing a version-controlled and repeatable database evolution process.

Using Flyway makes it easier to:

  • Track database schema changes
  • Reproduce database structures across environments
  • Apply migrations consistently
  • Keep application and database versions synchronized

Docker

The application was containerized using Docker.

The project includes Docker-based workflows using:

  • Dockerfile
  • Docker Compose

Containerization provides a consistent development and deployment environment and simplifies running application dependencies together.

A typical workflow is:

docker compose up --build

Depending on the local environment and repository configuration, database credentials or environment variables may need to be configured before starting the containers.

To stop the containers:

docker compose down

Backend Setup

Requirements

Make sure the following tools are installed:

  • Java
  • Maven
  • Microsoft SQL Server
  • Docker / Docker Desktop

Clone the repository:

git clone https://github.com/alperrte/Ticket-Management-System.git
cd Ticket-Management-System

Navigate to the backend module containing pom.xml.

Build the project:

mvn clean install

Run the Spring Boot application:

mvn spring-boot:run

Alternatively, the project can be started through the configured Docker environment.


Frontend Setup

Make sure Node.js and npm are installed.

Navigate to the frontend application directory and install dependencies:

npm install

Start the development server:

npm run dev

The React frontend communicates with the Spring Boot backend through REST APIs.


API Integration

The frontend is integrated with backend REST APIs for application operations and authentication workflows.

The project provided hands-on experience with:

  • Designing backend API endpoints
  • Sending and receiving JSON data
  • Authentication headers
  • JWT token handling
  • Error handling
  • Frontend-backend integration

Screenshots

Application screenshots can be added under a structure such as:

docs/
└── screenshots/
    ├── login.png
    ├── dashboard.png
    └── tickets.png

Then they can be displayed in the README using:

![Login Screen](docs/screenshots/login.png)

![Dashboard](docs/screenshots/dashboard.png)

Internship Context

This project was developed during my Java Backend Internship at Teknopark İstanbul.

The main goal was to gain practical experience with:

  • Java backend development
  • Spring Boot
  • REST API design
  • Application security
  • SQL databases
  • Database migrations
  • Docker
  • Layered architecture
  • Microservice-oriented architecture
  • React integration
  • Maven-based project management

What I Practiced

During development, I worked with:

  • Backend architecture and modular design
  • JWT authentication flows
  • Access and refresh token handling
  • Password security
  • REST API integration
  • SQL Server database development
  • Flyway migration management
  • Docker containers
  • Docker Compose
  • React frontend integration
  • Maven dependency management

Author

Alper Temiz

Software Engineering Student
Java Backend & Full-Stack Development


Repository

https://github.com/alperrte/Ticket-Management-System

About

Java Mikro Servis Mimarisi Projesi

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages