2.9 KiB
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 repo’s 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 Boot’s 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.
Misc
Never start the application; leave that to the user.