# dcane4ever/carwash_springboot architecture

> Architecture diagram of the GitHub repository dcane4ever/carwash_springboot, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dcane4ever/carwash_springboot
- Repository: https://github.com/dcane4ever/carwash_springboot

## Overview

This appears to be a car-wash booking web application with customer-facing pages and an admin area for managing bookings, customers, prices, and reports. The sampled browser scripts show admin booking updates, price edits, report exports, and verification-email resends; the tree suggests the corresponding Java services and persistence layers. Backend source and templates were not provided, and the README is empty, so backend responsibilities and most connections are inferred from filenames and are left unconnected rather than asserted.

Main entry points: [`src/main/java/com/Carwash/test/controller/AdminController.java`](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/controller/AdminController.java) (Admin routes), [`src/main/resources/static/js/admin-bookings.js`](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/admin-bookings.js) (Bulk booking updates), [`src/main/resources/static/js/admin-prices.js`](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/admin-prices.js) (Price editing), [`src/main/resources/static/js/admin-reports.js`](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/admin-reports.js) (Report charts and export)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer experience"]
  node_welcome["Welcome page<br/>[Welcome.html]"]
  node_account["Login and registration<br/>[Register.html]"]
  node_dashboard["Customer dashboard<br/>[dashboard.html]"]
  node_booking_history["Booking history"]
  node_modify_booking["Modify booking"]
  node_registration_client["Registration interactions<br/>[register.js]"]
  node_dashboard_client["Package price display<br/>[dashboard.js]"]
  node_modify_client["Modification confirmation<br/>[modify-booking.js]"]
end

subgraph group_admin["Administration"]
  node_admin_pages["Admin pages"]
  node_booking_updates["Bulk booking updates<br/>[admin-bookings.js]"]
  node_price_edits["Price editing<br/>[admin-prices.js]"]
  node_report_view["Report charts and export<br/>[admin-reports.js]"]
  node_customer_admin["Customer management<br/>[admin-customers.js]"]
end

subgraph group_backend["Application backend"]
  node_admin_controller["Admin routes"]
  node_welcome_controller["Welcome routes"]
  node_user_service["User management"]
  node_email_service["Email delivery<br/>[EmailService.java]"]
  node_booking_stats["Booking statistics"]
  node_report_service["Report generation<br/>[ReportService.java]"]
  node_session["Session handling"]
  node_password["Password encoding"]
end

subgraph group_data["Domain and persistence"]
  node_booking["Booking records<br/>[Booking.java]"]
  node_user["User and role<br/>[User.java]"]
  node_price["Service prices<br/>[ServicePrice.java]"]
  node_booking_repo[("Booking repository")]
  node_user_repo[("User repository")]
  node_price_repo[("Price repository")]
end

node_visitor(("Customer or admin"))

node_visitor -->|"updates bookings"| node_booking_updates
node_booking_updates -->|"POST bulk update"| node_admin_controller
node_visitor -->|"edits prices"| node_price_edits
node_price_edits -->|"POST price update"| node_admin_controller
node_visitor -->|"exports reports"| node_report_view
node_report_view -->|"requests CSV export"| node_admin_controller
node_visitor -->|"resends verification"| node_registration_client

click node_welcome "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/Welcome.html"
click node_account "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/Register.html"
click node_dashboard "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/dashboard.html"
click node_booking_history "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/booking-history.html"
click node_modify_booking "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/modify-booking.html"
click node_admin_pages "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/admin-dashboard.html"
click node_admin_controller "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/controller/AdminController.java"
click node_welcome_controller "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/WelcomeController.java"
click node_user_service "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/service/UserServiceImpl.java"
click node_email_service "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/service/EmailService.java"
click node_booking_stats "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/service/BookingStatsService.java"
click node_report_service "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/service/ReportService.java"
click node_session "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/util/SessionManager.java"
click node_password "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/util/PasswordEncoder.java"
click node_booking "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/model/Booking.java"
click node_user "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/model/User.java"
click node_price "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/model/ServicePrice.java"
click node_booking_repo "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/repository/BookingRepository.java"
click node_user_repo "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/repository/UserRepository.java"
click node_price_repo "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/repository/ServicePriceRepository.java"
click node_booking_updates "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/admin-bookings.js"
click node_price_edits "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/admin-prices.js"
click node_report_view "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/admin-reports.js"
click node_customer_admin "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/admin-customers.js"
click node_registration_client "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/register.js"
click node_dashboard_client "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/dashboard.js"
click node_modify_client "https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/modify-booking.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_welcome,node_account,node_dashboard,node_booking_history,node_modify_booking,node_registration_client,node_dashboard_client,node_modify_client toneBlue
class node_admin_pages,node_booking_updates,node_price_edits,node_report_view,node_customer_admin toneAmber
class node_admin_controller,node_welcome_controller,node_user_service,node_email_service,node_booking_stats,node_report_service,node_session,node_password toneMint
class node_booking,node_user,node_price,node_booking_repo,node_user_repo,node_price_repo toneRose
class node_visitor toneIndigo
```

## Components

### Customer experience

- [Welcome page](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/Welcome.html): `src/main/resources/templates/Welcome.html`
- [Login and registration](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/Register.html): `src/main/resources/templates/Register.html`
- [Customer dashboard](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/dashboard.html): `src/main/resources/templates/dashboard.html`
- [Booking history](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/booking-history.html): `src/main/resources/templates/booking-history.html`
- [Modify booking](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/modify-booking.html): `src/main/resources/templates/modify-booking.html`
- [Registration interactions](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/register.js): `src/main/resources/static/js/register.js`
- [Package price display](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/dashboard.js): `src/main/resources/static/js/dashboard.js`
- [Modification confirmation](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/modify-booking.js): `src/main/resources/static/js/modify-booking.js`

### Administration

- [Admin pages](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/templates/admin-dashboard.html): `src/main/resources/templates/admin-dashboard.html`
- [Bulk booking updates](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/admin-bookings.js): `src/main/resources/static/js/admin-bookings.js`
- [Price editing](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/admin-prices.js): `src/main/resources/static/js/admin-prices.js`
- [Report charts and export](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/admin-reports.js): `src/main/resources/static/js/admin-reports.js`
- [Customer management](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/resources/static/js/admin-customers.js): `src/main/resources/static/js/admin-customers.js`

### Application backend

- [Admin routes](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/controller/AdminController.java): `src/main/java/com/Carwash/test/controller/AdminController.java`
- [Welcome routes](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/WelcomeController.java): `src/main/java/com/Carwash/test/WelcomeController.java`
- [User management](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/service/UserServiceImpl.java): `src/main/java/com/Carwash/test/service/UserServiceImpl.java`
- [Email delivery](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/service/EmailService.java): `src/main/java/com/Carwash/test/service/EmailService.java`
- [Booking statistics](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/service/BookingStatsService.java): `src/main/java/com/Carwash/test/service/BookingStatsService.java`
- [Report generation](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/service/ReportService.java): `src/main/java/com/Carwash/test/service/ReportService.java`
- [Session handling](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/util/SessionManager.java): `src/main/java/com/Carwash/test/util/SessionManager.java`
- [Password encoding](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/util/PasswordEncoder.java): `src/main/java/com/Carwash/test/util/PasswordEncoder.java`

### Domain and persistence

- [Booking records](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/model/Booking.java): `src/main/java/com/Carwash/test/model/Booking.java`
- [User and role](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/model/User.java): `src/main/java/com/Carwash/test/model/User.java`
- [Service prices](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/model/ServicePrice.java): `src/main/java/com/Carwash/test/model/ServicePrice.java`
- [Booking repository](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/repository/BookingRepository.java): `src/main/java/com/Carwash/test/repository/BookingRepository.java`
- [User repository](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/repository/UserRepository.java): `src/main/java/com/Carwash/test/repository/UserRepository.java`
- [Price repository](https://github.com/dcane4ever/carwash_springboot/blob/main/src/main/java/com/Carwash/test/repository/ServicePriceRepository.java): `src/main/java/com/Carwash/test/repository/ServicePriceRepository.java`

### Other components

- **Customer or admin**

## Connections

- Customer or admin → Bulk booking updates: updates bookings (evidence: `src/main/resources/static/js/admin-bookings.js`)
- Bulk booking updates → Admin routes: POST bulk update (evidence: `src/main/resources/static/js/admin-bookings.js`)
- Customer or admin → Price editing: edits prices (evidence: `src/main/resources/static/js/admin-prices.js`)
- Price editing → Admin routes: POST price update (evidence: `src/main/resources/static/js/admin-prices.js`)
- Customer or admin → Report charts and export: exports reports (evidence: `src/main/resources/static/js/admin-reports.js`)
- Report charts and export → Admin routes: requests CSV export (evidence: `src/main/resources/static/js/admin-reports.js`)
- Customer or admin → Registration interactions: resends verification (evidence: `src/main/resources/static/js/register.js`)
