## ๐Ÿ“ Description ## ๐Ÿท๏ธ Type of Change - [ ] Bug fix - [ ] New feature - [ ] Enhancement to existing feature - [ ] Refactor (no behavior change) - [ ] Breaking change (existing functionality affected) - [ ] Documentation update ## ๐Ÿ”ง Changes - ## ๐Ÿงช Testing ## ๐Ÿ“ธ Screenshots _(if applicable)_ --- ## โœ… Pre-Submission Checklist > **All boxes must be checked before requesting review.** Incomplete PRs will be closed without review, no exceptions. - [ ] Code follows project style guidelines and conventions - [ ] Branch is up to date with `develop` (merge conflicts resolved) - [ ] Automated tests added or updated to cover changes (backend **and** frontend) - [ ] All tests pass locally (`./gradlew test` for backend, `ng test` for frontend) - [ ] Changes manually verified in local dev environment (including related features) - [ ] Flyway migration versioning is correct _(if schema was modified)_ - [ ] Documentation PR submitted to [booklore-docs](https://github.com/booklore-app/booklore-docs) _(if user-facing changes)_ - [ ] PR is reasonably scoped (PRs over 500+ changed lines will be closed, split into smaller PRs) ### ๐Ÿค– AI-Assisted Contributions > **If any part of this PR was generated or assisted by AI tools (Copilot, Claude, ChatGPT, etc.), all items below are mandatory.** AI-generated code that hasn't been thoroughly reviewed is the leading cause of reverted PRs. You are responsible for every line you submit. "The AI wrote it" is not an excuse. - [ ] Every line has been read, understood, and can be explained by the author - [ ] PR is scoped to a single logical change, not a dump of everything the AI suggested - [ ] Tests validate actual behavior, not just coverage (AI-generated tests often assert nothing meaningful) - [ ] No dead code, placeholder comments, `TODO`s, or unused scaffolding --- ## ๐Ÿ’ฌ Additional Context _(optional)_