Files
votianlt/AGENTS.md
2025-09-19 21:54:12 +02:00

2.9 KiB
Raw Blame History

Repository Guidelines

Project Structure & Module Organization

Backend Java sits in src/main/java/de/assecutor/votianlt; domain models stay in model, persistence logic in repository, services in service, MQTT integration under mqtt, and access control in security. Vaadin views and UI helpers live in pages/view and pages/base. TypeScript, styles, and theming live in src/main/frontend (leave generated/ untouched). Shared configs and templates live in src/main/resources, while Vaadin bundle descriptors reside in src/main/bundles. Maven output lands in target/.

Build, Test, and Development Commands

Use ./mvnw for the Spring Boot dev server with frontend hot reload. Build production bits with ./mvnw -Pproduction package. Run ./mvnw test for unit checks and ./mvnw -Pintegration-test verify when integration coverage is needed. After dependency changes, refresh Vaadin assets with ./mvnw vaadin:prepare-frontend. Apply formatting via ./mvnw spotless:apply.

Coding Style & Naming Conventions

Spotless enforces Java 21 formatting using eclipse-formatter.xml; keep imports ordered and rely on Lombok already present. Classes remain PascalCase, Spring stereotypes end with Service, Repository, or Config, and Vaadin views retain the *View naming within pages/view. Frontend code follows the repos Prettier rules (.prettierrc.json); keep TypeScript modules co-located with their views, prefer camelCase for variables, and avoid checking in generated .class files.

Testing Guidelines

Create tests under src/test/java mirroring the production package path. Name unit classes *Test and integration suites *IT so the failsafe profile picks them up. Lean on Spring Boots testing annotations for wiring, Mockito for isolates, and add Testcontainers when MongoDB or MQTT brokers are involved. Run ./mvnw test before any push; trigger ./mvnw -Pintegration-test verify for messaging, persistence, or security changes.

Commit & Pull Request Guidelines

History currently uses brief German titles; shift to imperative, scoped summaries such as feat: add PDF mailer or fix: guard MQTT reconnects. Keep unrelated updates out of the same commit and exclude artifacts like node_modules/ or target/. Pull requests should explain the motivation, link issues, note config or data-seed impacts, and attach screenshots or screencasts when Vaadin views change. List manual verification steps and flag any migrations or bundle adjustments for reviewers.

Security & Configuration Tips

External service credentials for MongoDB, SMTP, and MQTT belong in environment variables or a developer-specific application-local.properties kept out of version control. Document default ports and topics when touching MqttConfig so ops can replicate environments. For two-factor flows, keep shared secrets in secure storage and avoid logging codes during development.