2.0 KiB
2.0 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Technology Stack
- Java 21
- Vaadin 25.0.3 (server-side Java UI framework with Lumo theme)
- Spring Boot 4.0.1
- Maven build system
Development Commands
./mvnw # Start in development mode (default goal)
./mvnw spring-boot:run # Explicit development mode
./mvnw test # Run all tests
./mvnw test -Dtest=MyTest # Run a single test class
./mvnw test -Dtest=MyTest#method # Run a single test method
./mvnw -Pproduction package # Build production JAR
Application runs at http://localhost:8080 (auto-launches browser in dev mode).
Project Structure
de.assecutor.aimailassistant/
├── Application.java # Entry point with @SpringBootApplication
└── [feature packages] # Add feature packages here
This project uses feature-based packaging: each feature is self-contained with its own entities, repositories, services, and UI views.
Architecture Guidelines
Adding Features
Create new packages under de.assecutor.aimailassistant (e.g., de.assecutor.aimailassistant.mail). Each feature package should contain:
- JPA entities
- Spring Data repositories
- Service classes with
@Transactional - Vaadin UI views
Vaadin Patterns
- Server-side rendering: UI components are Java classes
- Routing: Use
@Route("path")annotation on view classes - Navigation: Use
@Menuannotation to add views to automatic navigation - Lazy loading: Use
VaadinSpringDataHelpers.toSpringPageRequest(query)for Grid pagination - Styling: Custom styles in
src/main/resources/META-INF/resources/styles.css
Spring Patterns
- Constructor injection (no
@Autowiredon fields) @Transactionalfor write operations@Transactional(readOnly = true)for read operations
Database
No database configured yet. To add persistence, include Spring Data JPA and a database driver in pom.xml.