Files
hartmann-foto_documentation/CLAUDE.md
2026-01-23 15:09:34 +01:00

2.8 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Build Commands

Backend (Maven)

# Full build and deploy
mvn deploy -U -f pom.xml

# Run integration tests with Docker
mvn deploy -P docker -f hartmann-foto-documentation-docker/pom.xml

Frontend (Flutter)

cd hartmann-foto-documentation-frontend

# Install dependencies
flutter pub get

# Build for web
flutter build web --no-tree-shake-icons

# Run tests with coverage
flutter test --coverage --reporter=json

# Run a single test file
flutter test test/path/to/test_file.dart

# Static analysis
flutter analyze

# Generate localization files
flutter gen-l10n

Architecture

Multi-Module Maven Project

  • hartmann-foto-documentation-app - Backend REST API (jar)
  • hartmann-foto-documentation-web - WAR deployment package
  • hartmann-foto-documentation-docker - Docker/integration tests
  • hartmann-foto-documentation-frontend - Flutter mobile/web app

Technology Stack

  • Backend: Java 21, WildFly 26.1.3, Jakarta EE 10, Hibernate 6.2, PostgreSQL 11, JWT auth
  • Frontend: Flutter 3.3.0+, Provider for state management, go_router for navigation
  • API Docs: Swagger/OpenAPI v3

Backend Layered Architecture

REST Resources → Services (@Stateless EJBs) → QueryService → JPA Entities

Key packages in hartmann-foto-documentation-app/src/main/java/marketing/heyday/hartmann/fotodocumentation/:

  • core/model/ - JPA entities (User, Right, Customer, Picture, JwtRefreshToken)
  • core/service/ - Business logic with AbstractService base class
  • core/query/ - QueryService for database operations
  • rest/ - JAX-RS resources and value objects

Frontend Structure

lib/
├── main.dart          # Entry point (MaterialApp.router)
├── controller/        # Business logic controllers
├── pages/             # Feature-based UI (login/, customer/)
├── dto/               # Data Transfer Objects
├── utils/             # DI container, theme, routing
└── l10n/              # Localization (German supported)

Authentication

  • JWT token-based authentication with refresh tokens
  • WildFly Elytron security realm
  • Bearer token auth for REST endpoints
  • User passwords stored with salt-based hashing

Database Entities

  • User ↔ Right (many-to-many via user_to_right)
  • Customer → Picture (one-to-many)
  • JwtRefreshToken (device/IP tracking)

Named queries pattern: @NamedQuery on entities (e.g., User.BY_USERNAME)

Local Development

Docker Compose provides PostgreSQL and WildFly:

cd hartmann-foto-documentation-docker
docker-compose up

Port mappings: WildFly HTTP (8180), Management (9990), SMTP (8280)

CI/CD

Jenkins pipeline with SonarQube integration. Build runs on macOS agent with JDK 21.