A full-stack Issue Tracker application for managing software development issues across multiple repositories and users, built as a school project at Karel de Grote Hogeschool.
Technical Highlights
Multi-Profile Architecture
Four distinct persistence implementations:
- map: In-memory HashMap storage
- jdbc: Plain JDBC with H2
- dev: JPA with H2 in-memory database
- prod: JPA with PostgreSQL
JPA Inheritance
Demonstrates advanced JPA capabilities with SINGLE_TABLE inheritance strategy for Issue/BugReport entities with discriminator columns for polymorphic queries.
Entity Relationships
- User ↔ Repository: One-to-Many bidirectional
- Repository ↔ Issue: One-to-Many bidirectional
- User ↔ Issue: Many-to-Many (assignees)
Features
- CRUD operations for Users, Repositories, and Issues
- Bug tracking with specialized BugReport entity
- Internationalization (English and Dutch)
- Role-based access (ADMIN, MAINTAINER, CONTRIBUTOR, VIEWER)
- Severity tracking (LOW, MEDIUM, HIGH, CRITICAL)
- Custom exception handling with styled error pages
- Responsive Bootstrap 5 UI with card layouts
What I Learned
This project deepened my understanding of enterprise Java development, including Spring's dependency injection, JPA relationships, and proper layered architecture (presentation, business, data layers).