3.4 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Development Commands
- Start development server:
./mvnw(runs Spring Boot with Vaadin dev mode) - Build for production:
./mvnw -Pproduction package - Clean build:
./mvnw clean compile
Architecture Overview
This is a Vaadin Spring Boot application for job/task management with real-time mobile app communication via MQTT. The system manages logistics jobs with tasks that mobile app users complete.
Core Architecture Layers
Frontend: Vaadin Flow views (server-side rendered)
src/main/java/de/assecutor/votianlt/pages/view/- Main UI viewssrc/main/java/de/assecutor/votianlt/pages/base/ui/- Shared UI components
Backend Services:
src/main/java/de/assecutor/votianlt/service/- Business logicsrc/main/java/de/assecutor/votianlt/controller/- MQTT message handlingsrc/main/java/de/assecutor/votianlt/repository/- MongoDB data access
Models:
src/main/java/de/assecutor/votianlt/model/- Domain entities- Task hierarchy:
BaseTaskwith subtypes (PhotoTask,BarcodeTask,SignatureTask, etc.)
Key Architectural Patterns
Job-Task Relationship: Jobs contain multiple ordered tasks. Tasks have completion states and can store completion data (photos, barcodes, signatures).
User Hierarchy:
User- Web interface users (job managers)AppUser- Mobile app users (task executors)AppUser.ownerfield links toUserfor notifications
MQTT Communication:
MqttV5ClientManagerhandles bidirectional communication with mobile appsMessageControllerroutes inbound MQTT messages and processes task completions- Topics:
/server/{clientId}/task_completed,/server/login, etc.
History Tracking: JobHistoryService logs all job/task changes with detailed audit trail displayed in JobHistoryView.
Email Notifications: EmailService sends notifications for job creation, task completion, and job completion using Spring Mail with SMTP.
Data Storage
MongoDB Collections:
jobs- Main job entities with status trackingtasks- Polymorphic task storage (discriminated bytaskType)job_history- Audit trail for all job changesphotos,barcodes,signatures- Task completion datausers- Web interface usersapp_user- Mobile app userscargo_item- Job cargo/delivery items
Configuration
Database: MongoDB at 192.168.180.25:27017/votianlt
MQTT: HiveMQ client connects to mqtt-2.assecutor.de with credentials app/apppwd
Email: SMTP via mailhub.assecutor.org:587 using Spring Boot mail auto-configuration
Development Environment
Java 21 with Spring Boot 3.4.3 and Vaadin 24.7.0
Security: Spring Security with role-based access (USER role required)
Profiles: production profile available for optimized builds
Key Integration Points
When adding new task types:
- Extend
BaseTaskand add to@JsonSubTypes - Add completion logic in
MessageController.handleTaskCompleted() - Update
JobHistoryViewfor task-specific previews if needed
When modifying job status flow:
- Update
JobStatusenum - Modify
EmailService.updateJobStatusToCompleted()logic - Consider email notification templates
MQTT message routing follows pattern: extract taskType from payload, route to appropriate processor method in MessageController.