Commit graph

6 commits

Author SHA1 Message Date
Jens Reinemann
ac5f346858 chore: .kotlin/ zu .gitignore hinzufügen 2026-05-18 11:25:14 +02:00
Jens Reinemann
7ccd2dc1fd refactor(genome): restructure as skill + prompt verbund
- Skill: .github/skills/genome/ (SKILL.md + genome-extract.py)
- Router: .github/prompts/genome.prompt.md (orchestriert alle 3 Phasen)
- Sub-Prompts: genome-distill.prompt.md, genome-propagate.prompt.md
- Output: .github/genome/output/ (gitignored)

Aufruf: /genome → fragt Quell-Repo + Zeitspanne, führt
Extraction → Distillation → Propagation durch.
2026-05-18 09:59:59 +02:00
Jens Reinemann
90cfac70a0 feat: column-level encryption at rest with AES-256-GCM (#98)
- Add EncryptionService (AES-256-GCM) with passthrough when no key set
- Flyway V3: enable pgcrypto extension + widen name columns to TEXT
- DatabaseFactory: init EncryptionService from BOLLWERK_DB_ENCRYPTION_KEY,
  run migrateEncryptData() to encrypt existing plaintext rows on startup
- InventoryRepository: encrypt on write, decrypt on read for
  items.name, items.notes, categories.name, locations.name, settings.value
- MessageRepository: encrypt body on write, decrypt on read
- docker-compose.yml: document BOLLWERK_DB_ENCRYPTION_KEY env var
- docker-compose-vps.yml: pass BOLLWERK_DB_ENCRYPTION_KEY from .env
- .env.example: add key generation template
- .gitignore: add .env to ignore list

Closes #98
2026-05-17 22:17:10 +02:00
Jens Reinemann
2387c6ee5a feat(server): add Exposed ORM database layer with H2
server/db/Tables.kt:
- Exposed table definitions for Categories, Locations, Items, Settings
- Schema mirrors Room entities from app module
- Foreign keys on Items referencing Categories and Locations

server/db/DatabaseFactory.kt:
- H2 file-based DB initialization (jdbc:h2:file:./data/krisenvorrat)
- Parameterized for testability (in-memory DB for tests)
- Schema auto-creation via SchemaUtils.create()

server/repository/InventoryRepository.kt:
- Full CRUD: saveInventory() and loadInventory()
- Atomic replace via transaction (deleteAll + insert)
- Direct mapping between Exposed rows and shared DTOs

4 repository tests with H2 in-memory covering:
- Empty DB, full round-trip, overwrite, nullable fields

Closes #41
2026-05-14 20:15:07 +02:00
Jens Reinemann
e2c77b4ba5 chore: temporäre Dateien in tmp/ speichern
Screenshots und andere temporäre Dateien werden jetzt nach tmp/ statt
ins Projekt-Root geschrieben. tmp/ ist in .gitignore eingetragen.
Betrifft android-dev.ps1 Screenshot-Aktion und Skill-Beispiele.
2026-05-13 16:59:26 +02:00
Jens Reinemann
60d1281b40 chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00