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.
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
- Java
- Spring Boot
- REST APIs
- Maven
- JWT Authentication
- React
- Tailwind CSS
- Microsoft SQL Server
- Flyway
- Docker
- Docker Compose
- Git
- GitHub
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 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.
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
The application was containerized using Docker.
The project includes Docker-based workflows using:
DockerfileDocker Compose
Containerization provides a consistent development and deployment environment and simplifies running application dependencies together.
A typical workflow is:
docker compose up --buildDepending 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 downMake 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-SystemNavigate to the backend module containing pom.xml.
Build the project:
mvn clean installRun the Spring Boot application:
mvn spring-boot:runAlternatively, the project can be started through the configured Docker environment.
Make sure Node.js and npm are installed.
Navigate to the frontend application directory and install dependencies:
npm installStart the development server:
npm run devThe React frontend communicates with the Spring Boot backend through REST APIs.
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
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:

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
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
Alper Temiz
Software Engineering Student
Java Backend & Full-Stack Development
- GitHub: https://github.com/alperrte
- LinkedIn: https://www.linkedin.com/in/alpertemizz/