Java Backend Developer

Cleaning Services Management System

A backend-driven management system for cleaning service businesses, built to organise client records, property details, service visits and job lifecycle tracking in one structured application.

Java Spring Boot MySQL Thymeleaf REST API Business operations

Project overview

This project was designed as an operational management platform for cleaning companies that need more than a simple spreadsheet. The system supports structured client management, property ownership records, scheduled cleaning visits and status tracking from the initial booking through to completion.

The application combines a server-rendered admin interface with a REST API layer. This makes it practical for office-based management while keeping the architecture open for future integrations, such as a mobile app for cleaners or an external booking form.

Problem solved

Cleaning service businesses often manage clients, addresses, bookings and job notes across disconnected tools. This creates duplication, scheduling mistakes and weak visibility over which jobs are booked, active or completed.

The goal of this application was to model the core business workflow directly in the backend: a client can own multiple properties, each property can have scheduled service visits, and each job can move through a controlled lifecycle. This reduces ambiguity and gives the business a stronger foundation for future automation.

Key features

  • Client and property management with support for multiple properties per client.
  • Service scheduling flow for planned cleaning visits.
  • Conflict detection to reduce double-booking and operational mistakes.
  • Job lifecycle state model: booked, in progress and completed.
  • Full CRUD operations for clients, properties and service records.
  • Server-rendered admin interface built with Thymeleaf.
  • REST API layer prepared for future mobile or external integrations.
  • Transactional bulk operations for safer client and property updates.
  • Audit logging for ownership changes and job completion events.

Architecture

The system follows a layered Spring Boot structure with clear separation between controllers, services, persistence logic and view templates. Web controllers serve the admin interface, while REST endpoints expose selected operations for integration scenarios.

MySQL is used as the relational database because the domain has naturally structured relationships: clients, properties, jobs, visits and lifecycle events. JPA and Hibernate handle persistence while service-layer transactions keep multi-step operations consistent.

Backend responsibilities

  • Validate client, property and job data before persistence.
  • Protect business rules such as ownership relationships and booking conflicts.
  • Keep state transitions predictable and auditable.
  • Expose stable REST endpoints for future clients.

Technical decisions

The project uses server-side rendering with Thymeleaf because the primary use case is an internal management panel, where reliability and fast page delivery are more important than a complex frontend stack. Bootstrap provides a straightforward responsive UI layer without adding unnecessary frontend complexity.

The backend keeps the business workflow in the service layer rather than spreading rules across templates or controllers. This makes the application easier to test, easier to extend and safer to connect to future mobile or automation clients.

Technical challenges

  • Designing the client-property relationship so that one customer can manage multiple service locations.
  • Preventing scheduling conflicts before they affect real operations.
  • Keeping job status changes controlled instead of allowing arbitrary updates.
  • Maintaining a clean split between web views and REST API responsibilities.
  • Preparing the application for future mobile access without rebuilding the backend.

Technology stack

Java, Spring Boot, Spring MVC, MySQL, Thymeleaf, Bootstrap, JPA, Hibernate and REST API design.

This page is part of Robert Grodzki's software development portfolio and presents the project as a technical case study.