Software Engineer (Career Transition)
Java & Backend Projects
Java projects evolving from console workflows into a packaged desktop application with persistence (SQLite), search/sort UX, unit tests, and packaging.
Back to ProjectsMore Java & backend work
This tracker is built in stages (1–5). Each stage adds a concrete feature: persistence, UI, database, tests, and packaging.
- Job Application Tracker (Stages 1–5) — console → Swing UI → SQLite → Search/Sort + tests + packaging.
- Other Java / backend experiments
Job Application Tracker
A staged Java project that progresses from a console tracker to a packaged desktop application.
- Stage 1: Console CRUD + status workflow + CSV export.
- Stage 2: CSV load/save persistence.
- Stage 3: Swing desktop UI (Add/Update/Delete + filter + CSV controls).
- Stage 4: SQLite persistence (JDBC + schema/init).
- Stage 5: Search + sort controls, basic unit tests (JUnit 5).
- Architecture: UI/Entry → Service → Repository → Persistence (CSV → SQLite via JDBC).
- Core stack: Java 17+, Maven, Swing UI, SQLite (sqlite-jdbc).
- Data model:
JobApplication+ApplicationStatusenum (typed workflow). - Quality: validation + clearer UI messaging; JUnit 5 tests for service/repository behavior.
- Distribution: packaged for macOS using
jpackage(DMG).
Helpdesk Ticket Triage System
A staged helpdesk ticketing project focused on backend fundamentals: a structured ticket lifecycle, repository patterns, and API design. Built in phases to evolve from a console workflow into a REST-backed system.
- Stage 1: Console CRUD + ticket workflow + basic search + SQLite persistence.
- Stage 2: Spring Boot REST API + Swagger/OpenAPI docs + in-memory repository + Bean Validation + centralized error handling + Bruno API testing.
- Stage 3: Spring Data JPA persistence + H2 database + H2 Console + Actuator health endpoint (DB-backed CRUD).
- API Layer: Spring MVC
TicketControllerexposes CRUD endpoints under/api/tickets. - OpenAPI: Swagger UI generated via springdoc OpenAPI for interactive endpoint documentation and testing.
- DTO Mapping: Request/response DTOs mapped via
TicketMapperto keep the domain model clean. - Workflow: Status + priority modeled with typed enums (
TicketStatus,Priority). - Storage (Stage 2):
TicketRepository+InMemoryTicketRepositoryfor memory-backed storage. - Persistence (Stage 3): Spring Data JPA repository backed by an H2 database for real CRUD persistence.
- H2 Console: Inspect the database directly at
/h2-console(confirm rows exist / updates persist). - Validation: Bean Validation on request DTOs to reject invalid payloads early.
- Error Handling: Centralized exception mapping via
GlobalExceptionHandlerreturning consistentApiErrorJSON. - API Testing: Bruno collection for repeatable local CRUD requests using a
{{baseUrl}}environment variable. - Observability: Spring Boot Actuator health endpoint at
/actuator/health.