Documentation

Car Service

A Spring Boot application for car service operations — a Thymeleaf web UI, OAuth2 login, invoicing with PDF export, and OpenFeign calls to a booking and a payment service. There is a clickable demo below, plus the generated Javadoc and Checkstyle report.

Live demo

The application's own templates and stylesheets, running in the browser against a seeded catalogue — so signing in, booking, paying and invoicing all work with no backend behind them. State lives in sessionStorage; reloading starts over on the sign-in screen.

Open the demo → Sign in as a customer or as an admin. Both accounts are on the sign-in screen. Watch the walkthrough → A silent screen recording of the whole demo, about four minutes.
Sign in, book a service, pay, download the invoice, and the admin area

Generated reports

Javadoc → API documentation for every package under springboot.bg.harisauto. Checkstyle report → Google style rules, enforced on every pull request. Source on GitHub → Repository, issues and pull requests.

Stack

ConcernChoice
LanguageJava 21
FrameworkSpring Boot 3.5.8, Spring Cloud 2025.0.3
ViewsThymeleaf
PersistenceSpring Data JPA — MySQL by default, H2 in dev
SecuritySpring Security, form login plus Google and GitHub OAuth2
Service callsOpenFeign to payment-service and booking-service
AIGoogle GenAI (gemini-2.5-flash) for the chatbot
Invoicesopenhtmltopdf, rendered from a Thymeleaf template
BuildMaven, Checkstyle (Google rules)

Running it

The dev profile needs no credentials — it uses a local H2 file database, MailHog for email, and placeholder keys.

CommandWhat it does
./mvnw spring-boot:run -Dspring-boot.run.profiles=devRuns on :8080 against H2
./mvnw spring-boot:runDefault profile — needs MySQL and the environment variables in .env.example
./mvnw testTest suite, on an in-memory database

The demo is not the running application. GitHub Pages serves static files, so it cannot host the real thing — that needs a JVM, MySQL, and the booking and payment services. The demo reproduces the UI faithfully, but OAuth2 sign-in, Stripe, PDF export and the Gemini chatbot are server-side and are stubbed. Everything on this site is rebuilt from the repository on each push to main.