5.5 KiB
5.5 KiB
Changelog
All notable changes to CannaManage will be documented in this file.
The format follows Keep a Changelog.
This project adheres to Semantic Versioning.
Unreleased
Added
- Complete project documentation suite (10 documents, ~25,000 words)
- System architecture design: 8 JPA entities, Maven multi-module structure
- REST API specification: 7 controllers, 30+ endpoints, full request/response schemas with error codes
- Compliance engine design:
ComplianceServiceenforcing CanG §§19–22 limits (25g/day, 50g/month adults; 30g/month under-21; ≤10% THC under-21) ComplianceConstants.javadesign: all legal thresholds as named constants to prevent magic numbers in compliance logic- UI wireframes for 6 screens: Admin Dashboard, Distribution Recording Form, Member List, Member Quota View, Stock Management, Compliance Report
- 5 AI-generated UI mockup images (FLUX.1-schnell via ComfyUI, 1024×512)
- Test plan with 26 test cases covering ComplianceService (TC-001–010), MemberService (TC-011–015), tenant isolation (TC-016–017), and integration tests (TC-018–026)
- Coding standards: Java 21 conventions, JPA patterns, multi-tenancy rules, immutable distribution records
- Flowcharts: distribution flow (5-step), member lifecycle (state machine), billing provisioning flow (Mermaid diagrams)
- README with full documentation index, tech stack table, pricing tiers, legal notice
- [2026-04-06] Staff member management:
ROLE_STAFFwith configurable per-account permission grants (US-026); admin controls which data staff can access (DSGVO least-privilege). 8 defined permissions, 3 pre-created role templates (Ausgabe, Lager, Vorstand). Core feature from Phase 0. - [2026-04-06] Grow Calendar: US-027 added as Could Have (v2) — cultivation diary per grow cycle, linked to batch harvest, optional photo attachments, admin-controlled access via
MANAGE_GROW_CALENDARpermission - [2026-04-06] Staff wireframe (Screen 7) added to
06-Wireframes.mdwith full ASCII wireframe, component table (TanStack Table, shadcn/ui Checkbox, Select), and DSGVO design rationale - [2026-04-06] Staff routes added to Navigation IA:
/admin/staff,/admin/staff/new,/admin/staff/{id},/staff/dashboard - [2026-04-06] TrueNAS.local Gitea Actions self-hosted runner documented in
09-Deployment.mdas the CI/CD build environment; Hetzner = production release target
Changed
- [2026-04-06]
03-Architecture.md— Multi-tenancy model changed from shared-schema to schema-per-tenant. Decision rationale: hard DB-level isolation (not application-layer), clean DSGVO deletion (DROP SCHEMA), no cross-tenant index bloat, easier future isolation.tenant_idcolumns on every entity removed; schema routing viaTenantRoutingDataSourcereplaces Hibernate@Filter. - [2026-04-06]
03-Architecture.md— Frontend changed from PrimeFaces/JSF to React/Vite SPA. Rationale: JSF server-side lifecycle is a poor fit for a REST API backend; PrimeFaces creates a hiring bottleneck; React is mobile-friendly from day 1. Component library: shadcn/ui (Radix UI + Tailwind CSS) + TanStack Table v8. - [2026-04-06]
03-Architecture.md—ROLE_STAFFadded with configurableStaffPermissionenum; pre-created templates documented. Staff noted as core feature, not add-on. - [2026-04-06]
06-Wireframes.md— All component tables updated from PrimeFaces (p:dataTable,p:commandButton) to React/Tailwind equivalents (TanStack Table, shadcn/ui). Responsive Design section rewritten for Tailwind breakpoints. - [2026-04-06]
09-Deployment.md— CI/CD section rewritten:runs-on: ubuntu-latest→runs-on: self-hosted(TrueNAS.local). Gitea Actions runner setup instructions added. Infrastructure diagram updated to show Dev → Gitea → TrueNAS build → Hetzner release flow. - [2026-04-06]
0.1.0CHANGELOG entry corrected: removed "shared schema" as final architecture decision (superseded by schema-per-tenant); removed PrimeFaces as frontend (superseded by React/Vite)
Fixed
- [2026-04-06]
04-Flowcharts.md— Mermaid parse error in Flow 4 (line 146):[Generate empty report\nwith zero totals\n(still valid compliance submission)]— parenthesis after newline was parsed as stadium-shape node start. Fixed by wrapping node text in double quotes. - [2026-04-06]
04-Flowcharts.md— Mermaid parse error in Flow 5 (line 177):[❌ Invalid credentials\n(generic — do not reveal\nwhether email exists)]— same root cause, same fix.
0.1.0 - 2026-04-06
Added
STRATEGY.md— initial project vision and feasibility assessment- Legal analysis confirming CanG compliance viability for B2B SaaS model (no public advertising, no club discovery, B2B-only)
- Market analysis: ~3,000 registered clubs in Germany, TAM estimated at €2.85M ARR
- Tech stack selection rationale: Spring Boot 3.x + React/Vite SPA (MVP) → Next.js v2; PostgreSQL + Flyway; iText 7 PDF; Stripe billing
- Multi-tenancy architectural decision: schema-per-tenant (each club gets isolated PostgreSQL schema; platform registry in
publicschema) - Pricing model: 4 tiers (Starter €29, Growth €59, Professional €99, Enterprise €199/month)
- Deployment guide for Hetzner VPS (production release): Docker Compose, Nginx + Let's Encrypt, Gitea Actions CI/CD via TrueNAS.local self-hosted runner, daily PostgreSQL backup strategy