CLAUDE.md — Project Context
Project Identity
- Name: Membership One
- Domain: Sports club and fitness studio management platform — member administration, contracts/memberships, billing, resource management, events, and communication
- Version: 0.1.0-SNAPSHOT (pre-v1.0)
- GroupId: com.membership
- ArtifactId: membership
- Organization: Membership One GmbH
- Product Name: Membership One
- Website: membership-one.com (legacy: membership-fitness.com)
- Relationship to Service Providers: Independent product. Integrates with external service providers via REST API: My-Factura (www.my-factura.com) for invoicing/billing, CashControl (cashcontrol.info) for debt collection (via My-Factura). Cash360 and My-Factura are third-party service providers, not internal products. No code-level dependency.
Tech Stack
| Component | Version / Detail |
|---|---|
| Language | Java 25 (Temurin JDK) |
| Framework | Spring Boot 4.0.2 GA |
| Build Tool | Maven (wrapper included: mvnw / mvnw.cmd) |
| Database | PostgreSQL 18 (Docker) |
| Caching | Redis 7 |
| Messaging | RabbitMQ 4 (AMQP) |
| Search | Elasticsearch 8 (planned, for member search) |
| Security | Spring Security, JWT (RS256 asymmetric), bcrypt |
| ORM | Hibernate 6.x (via Spring Boot 4) |
| Migrations | Flyway |
| Open HTML to PDF (contract generation) | |
| API Docs | SpringDoc OpenAPI 3.x |
| CI/CD | GitLab CI/CD |
| Containerization | Docker, Docker Compose (production: Hetzner EX63), Kubernetes (Helm, optional) |
| Infrastructure | Hetzner EX63 dedicated (~83 EUR/mo), Traefik v3.6, Keycloak SSO, Wiki.js, Restic backups |
| Testing | JUnit 5, Mockito, Testcontainers, WireMock, JaCoCo |
| Libraries | Lombok, Jackson, Resilience4j, Guava |
| Monitoring | Micrometer Prometheus, Spring Actuator, Grafana |
| Frontend | Flutter 3.41.2 (Dart 3.11.0), Riverpod, Dio, GoRouter, Freezed |
| I18N | 32 languages (24 EU + 8 non-EU incl. RTL; Spring MessageSource + Flutter l10n/ARB) |
| Payment Integration | Cash360 / My Factura Public API (external REST) |
Architecture
Pattern
Multi-module Maven monolith (modular monolith). Single deployable artifact (membership-runner JAR) aggregating all feature modules. Designed for future extraction into microservices along domain boundaries.
Layers (per module)
Each feature module follows a consistent slice pattern: - dto/ — Data Transfer Objects (request/response) - entity/ — JPA entities - repository/ — Spring Data JPA repositories - service/ — Business logic - controller/ — REST controllers - mapper/ — DTO-Entity mapping - exception/ — Custom business exceptions
Modules
- membership-core — Shared utilities: base entity, tenant context, security config, JWT, exception handling, common DTOs
- membership-entity — Organization/tenant management (multi-tenant, parent-child hierarchy)
- membership-auth — Authentication (JWT, registration, verification, password management, brute-force protection)
- membership-member — Member management (CRUD, search, custom attributes, emergency contacts, minors)
- membership-contract — Contract/membership lifecycle (templates, purchase, renewal, cancellation)
- membership-product — Product/service management (catalog, pricing, VAT)
- membership-payment — Payment and billing (Cash360 integration, billing engine, bank accounts, SEPA)
- membership-resource — Resource management (rooms, areas, equipment, personnel, booking calendar)
- membership-event — Event and course management (scheduling, registration, attendance)
- membership-communication — Notifications (email, push, templates, bulk messaging)
- membership-checkin — Check-in and access control (QR, NFC, BLE, OSDP, Gantner, access validation)
- membership-import — Data import (CSV, mapping templates, validation)
- membership-document — Document management (upload, PDF generation, storage)
- membership-crm — CRM and sales (leads, deals, pipeline, activities, conversion tracking)
- membership-support — Support and ticketing (tickets, SLA, knowledge base, CSAT)
- membership-accounting — Accounting and DATEV (general ledger, cost centers, DATEV export, reconciliation)
- membership-runner — Application entry point (assembles all modules)
Entry Point
membership-runner/src/main/java/com/membership/MembershipApplication.java
Project Directory Structure
membership/
├── CLAUDE.md ← THIS FILE — project context (always read first)
├── MASTERPLAN.md ← Autonomous execution guide (14 phases, 0–13)
├── .mcp.json ← MCP server configuration
├── .claude/
│ ├── settings.json ← Permissions
│ └── commands/ ← Slash commands
├── doc/
│ ├── design/ ← Design document chapters (17 + supplements)
│ │ ├── 01-executive-summary.md
│ │ ├── 02-vision-and-goals.md
│ │ ├── 03-target-groups.md
│ │ ├── 04-competitive-analysis.md
│ │ ├── 05-feature-catalog.md
│ │ ├── 06-module-architecture.md
│ │ ├── 07-user-roles-and-permissions.md
│ │ ├── 08-user-journeys.md
│ │ ├── 09-frontend-strategy.md
│ │ ├── 10-api-design.md
│ │ ├── 11-data-model.md
│ │ ├── 12-integration-and-payment.md
│ │ ├── 13-security-and-compliance.md
│ │ ├── 14-infrastructure-and-deployment.md
│ │ ├── 15-migration-strategy.md
│ │ ├── 16-startup-operations.md
│ │ ├── 17-customer-onboarding.md
│ │ └── my-factura-api-review.md
│ ├── index/ ← Index files
│ │ └── design-index.md
│ ├── intranet/ ← Membership HTML documentation site
│ │ ├── build.py ← Build script (python build.py)
│ │ ├── style.css, nav.js ← Static assets
│ │ └── *.html ← Generated pages
│ ├── business/ ← Business documentation (executive, PM, marketing)
│ ├── developer/ ← Developer documentation (frontend, backend)
│ ├── enduser/ ← End-user documentation
│ ├── operations/ ← Operations documentation (ITOps, Support)
│ ├── api/ ← API documentation
│ └── testing/ ← Test strategy and reports
├── backend/
│ ├── pom.xml ← Root aggregator POM
│ ├── membership-parent/ ← Parent POM (dependency management)
│ ├── membership-core/ ← Core utilities and security
│ ├── membership-entity/ ← Organization management
│ ├── membership-auth/ ← Authentication
│ ├── membership-member/ ← Member management
│ ├── membership-contract/ ← Contract/membership lifecycle
│ ├── membership-product/ ← Product/service management
│ ├── membership-payment/ ← Billing and Cash360 integration
│ ├── membership-resource/ ← Resource and booking management
│ ├── membership-event/ ← Events and courses
│ ├── membership-communication/ ← Notifications
│ ├── membership-checkin/ ← Check-in/access control
│ ├── membership-import/ ← Data import
│ ├── membership-document/ ← Document management
│ ├── membership-runner/ ← Application runner
│ └── docker-compose.yml ← Local dev infrastructure
├── frontend/
│ └── membership_app/ ← Flutter app (role-based views)
├── docker/ ← Production Docker files
└── infra/ ← Hetzner infrastructure (Docker Compose, scripts, config)
├── docker-compose.proxy.yml ← Traefik reverse proxy
├── docker-compose.mgmt.yml ← GitLab, Keycloak, Wiki.js, Vaultwarden
├── docker-compose.integration.yml ← Integration environment
├── docker-compose.test.yml ← Test environment
├── docker-compose.production.yml ← Production environment
├── docker-compose.monitoring.yml ← Prometheus, Grafana, Loki, Uptime Kuma
├── traefik/ ← Traefik static + dynamic config
├── config/ ← Keycloak realm, Prometheus, Loki, Grafana
├── scripts/ ← bootstrap.sh, backup.sh, restore.sh, create-developer.sh
├── .gitlab-ci.yml ← CI/CD pipeline (infra-level)
├── .env.template ← Environment variable template
└── k8s/ ← Kubernetes Helm charts (optional)
Build & Run
Prerequisites
- JDK 25 (Temurin recommended)
- Docker Desktop
- Flutter 3.41.2
- Git
Build
# Full build
cd backend && ./mvnw clean install
# Runner only
cd backend && ./mvnw -pl membership-runner -am package
Infrastructure
# Start all services (Postgres, Redis, RabbitMQ)
cd backend && docker compose up -d
# Ports: Postgres=5432, Redis=6379, RabbitMQ=5672/15672
Run Application
# CLI
cd backend && ./mvnw -pl membership-runner -am spring-boot:run
# IDE: Run com.membership.MembershipApplication in membership-runner
# API served at: http://localhost:8080/api
# Swagger UI: http://localhost:8080/api/swagger-ui.html
Profiles
local— Local development (Docker services)dev— Development serverstaging— Staging/acceptanceprod— Productiontest— Automated testing (Testcontainers)
Key Environment Variables
DB_URL=localhost
DB_NAME=membership
DB_USERNAME=membership
DB_PASSWORD=${DB_PASSWORD}
REDIS_HOST=localhost
REDIS_PORT=6379
RMQ_HOST=localhost
RMQ_USER=guest
RMQ_PASS=guest
JWT_PRIVATE_KEY_PATH=/path/to/private.pem
JWT_PUBLIC_KEY_PATH=/path/to/public.pem
CASH360_API_URL=http://localhost:8080/api
CASH360_API_KEY=${CASH360_API_KEY}
Testing
cd backend && ./mvnw test # Run all unit tests
cd backend && ./mvnw verify # Build with JaCoCo coverage
cd backend && ./mvnw -pl <module> test # Per-module tests
cd frontend/membership_app && flutter test # Flutter tests
Conventions
Naming
- Packages:
com.membership.<module>.<layer>(e.g.,com.membership.member.service) - Entities: PascalCase, domain-specific (e.g.,
Member,Contract,Organization) - DTOs:
*Dto,Create*Request,Update*Request,*Response - Services:
*Service(no Impl suffix, single concrete class) - Controllers:
*Controller - Repositories:
*Repository - Tests:
*Test(e.g.,MemberServiceTest) - Flyway migrations:
V{nnn}__{description}.sql(e.g.,V001__create_organization.sql)
Database
- Schema:
public(PostgreSQL default) - Sequences:
{table}_seqwith allocation size 50 - JSONB: Used for custom attributes and extensible configuration
- Audit:
createdAt,updatedAton all entities via@EntityListeners - Optimistic locking:
@Versionon ALL entities (mandatory) - Monetary values:
DECIMAL(19,4)exclusively (never float/double) - Tenant isolation:
idEntity(FK) on all business entities
API
- Context path:
/api - Authentication: Bearer JWT in Authorization header
- Pagination: Spring Data
Pageable(page, size, sort parameters) - Error responses: Consistent
ErrorResponseDTO with code, message, details - Versioning: URL path versioning if needed in future (e.g.,
/api/v2/)
Security (Non-Negotiable)
- JWT signing: RS256 asymmetric keys (NEVER hardcoded)
- CORS: Explicit origin whitelist (NEVER wildcard
*) - Passwords: bcrypt, cost factor 12
- All endpoints authenticated (except: login, register, verify, forgot-password, public entity info)
@Versionon every entityBigDecimalfor all monetary values@Transactionalon all service methods with DB mutations- No PII in application logs
Design Documents
See doc/index/design-index.md for the full table of contents.
doc/design/01-executive-summary.md— Product vision and market opportunitydoc/design/02-vision-and-goals.md— Business objectives, technical goals, EU i18n, design philosophydoc/design/03-target-groups.md— Market segments (7 primary, 5 secondary), 3 org levels, ~24 personasdoc/design/04-competitive-analysis.md— 50-competitor landscape and positioningdoc/design/05-feature-catalog.md— Complete feature inventory (11 packages), version roadmap, Cash360 paritydoc/design/06-module-architecture.md— C4 diagrams, module decomposition (17 modules), tech stack, Cash360 reusedoc/design/07-user-roles-and-permissions.md— ~16 roles (6 hierarchical + 3 vendor + 5 lateral + 2 special), RBAC, permission matrixdoc/design/08-user-journeys.md— 13 end-to-end flows with Mermaid flowchartsdoc/design/09-frontend-strategy.md— Flutter, design system, 10 UX/UI Design Principles (Gestalt Laws), i18n (24 EU languages)doc/design/10-api-design.md— API-first architecture, endpoint catalog, JWT, versioningdoc/design/11-data-model.md— 30 entities, ER diagram, migration mappingdoc/design/12-integration-and-payment.md— My Factura/Cash360 billing, SEPA, Gantner/OSDP/BLE access control, DATEV, CRM patterns, IoTdoc/design/13-security-and-compliance.md— GDPR, eIDAS, authentication, authorization, auditdoc/design/14-infrastructure-and-deployment.md— Hetzner Cloud, Kubernetes, GitLab CI/CD, monitoringdoc/design/15-migration-strategy.md— Cash360 migration, CSV import, phased rolloutdoc/design/16-startup-operations.md— GmbH formation, Hetzner infrastructure (~EUR 100/mo), dogfooding, personnel scaling, go-to-marketdoc/design/17-customer-onboarding.md— B2B lifecycle, tenant provisioning (<60s), wizard, migration, health scoring, churn preventiondoc/design/my-factura-api-review.md— Current API spec, improvement proposals, v2 redesign
Known Issues / Technical Debt
(To be populated during development)
Changelog
| Date | Phase | Description |
|---|---|---|
| 2026-02-22 | — | Design documents created: 15 chapters (01-15) covering executive summary, vision, target groups, competitive analysis, feature catalog, module architecture, user roles, user journeys, frontend strategy, API design, data model, integration, security, infrastructure, migration. MASTERPLAN.md created (10 phases). CLAUDE.md created. Design index created. |
| 2026-02-22 | — | EU multilingualism: 24 official EU languages added to chapters 02 (backend i18n) and 09 (frontend i18n/ARB). My Factura API Review created (current spec + 9 improvement areas + v2 redesign). Chapter 12 updated with actual My Factura API endpoints. MASTERPLAN.md updated (GitLab, i18n steps, documentation phases, intranet build steps). Membership intranet site created (doc/intranet/, 21 HTML pages). GitLab replaces GitHub throughout. |
| 2026-02-22 | — | Organizational roles, business processes & access control expansion. 8 design docs updated (~2,000 lines added): Ch03 (+3 org levels, ~24 personas), Ch05 (+3 new packages: Executive Dashboards, CRM/Sales, Support/Ticketing; expanded Access Control & Accounting), Ch07 (+8 new roles: 3 vendor + 5 lateral; +5 permission matrix sections), Ch08 (+5 journeys: Executive KPI, DATEV Close, Sales Pipeline, Support Ticket, QR Door Access), Ch11 (+13 entities: CRM, Support, Accounting, Access Control), Ch12 (+Gantner Essecca, OSDP, BLE, QR door, DATEV, CRM patterns), Ch06 (+3 modules, updated C4), Ch10 (+5 API areas). Module count 14→17. Package count 8→11. Role count 8→~16. Journey count 8→13. |
| 2026-02-22 | — | Phase 10 (Startup Operations) & Phase 11 (Customer Onboarding) added. MASTERPLAN.md extended with 2 new phases (~900 lines): Phase 10 covers GmbH formation, Hetzner Cloud infrastructure (~EUR 100/mo), GitLab CI/CD, dogfooding (Tenant Zero), legal compliance docs, marketing website, personnel scaling (5→11 persons), go-to-market strategy. Phase 11 covers customer acquisition funnel, automated tenant provisioning (<60s), 5-step configuration wizard with industry templates, data migration playbook, training strategy, Go-Live Checklist, customer health scoring (0-100), lifecycle automation, churn prevention, expansion/upsell. 2 new design chapters: 16-startup-operations.md (~600 lines, 5 Mermaid diagrams), 17-customer-onboarding.md (~500 lines, 4 Mermaid diagrams). Chapter 14 updated for Hetzner as primary cloud (replaced generic references). Design index updated (15→17 chapters). Phase count 10→12 (0–11). |
| 2026-02-22 | — | Rebranding & Service Provider Architecture. Company renamed from "Miticon GmbH" to "Membership One GmbH", product name "Membership One", website membership-one.com (legacy: membership-fitness.com). Cash360/My-Factura/CashControl repositioned as external service providers (not internal products). Service provider registry added to Phase 10 (Step 10.1b): My-Factura (billing), CashControl (debt collection), Hetzner, DATEV, etc. Integrated contract bundle (3 parties: Membership One + My-Factura + CashControl) added to customer onboarding. 3 onboarding scenarios defined: A=Founder (new business), B=Expansion (additional location), C=Migration (system switch). Self-onboarding as default with optional founding support by Franchise or Membership One. All 3 affected design chapters (14, 16, 17) and MASTERPLAN updated. |
| 2026-02-22 | — | Membership2.txt processed: ~20 change requests across 10 files. Revenue model: "Free/Freemium"→"Starter" (EUR 1/mo, EUR 10/yr, <20 members), "Starter"→"Standard" (EUR 39/mo), no zero-euro strategy, Trial Studio concept added (Ch02, Ch04, Ch05, Ch16, Ch17, MASTERPLAN). Feature catalog: no MVP concept — v1.0 is full version; detailed v2.0/v3.0/v4.0 feature assignments; comgate payment gateway; simple shop; self-service add-on booking (Ch05). I18N: 7 non-EU priority languages (Turkish, Arabic, Russian, Ukrainian, Serbian, Albanian, Chinese), RTL support required from v1.0 (Ch02, Ch09). Performance: FCP target <0.2s, max <1.5s (Ch02, Ch09). "Frontend for Dummies" renamed to "Effortless UX" (Ch02, Ch05, Ch09). Personas: +6 new (Membership One CEO, Fitness Chain MD, Club President, Franchise Director, Personal Trainer, Youth Football Coach), franchise note added (Ch03). Competitive analysis: deep analysis of Magicline/Virtuagym/FitnessNation, franchise chain analysis (10 chains), Komm.ONE/AKDB municipal software, improved quadrant chart (Ch04). Financial separation: Fremdbeträge vs. Eigenrechnungen with Mermaid diagram (Ch12). SAF-T support with EU country landscape (Ch12). Onboarding automation: Impressum extraction, Handelsregister lookup, OpenStreetMap address autocomplete, libphonenumber phone validation (Ch17). Break-even: explicit dev team of 4 at EUR 24k/mo (Ch16). MASTERPLAN: Q42 quality requirements, technical conception per step, pricing tier updates. Design index updated. |
| 2026-02-22 | — | Team tooling: Vaultwarden, Icinga, Dehydrated integrated. Ch13: Vaultwarden section added (team credential management with vault types, deployment details, distinction from Sealed Secrets). Ch14: Icinga infrastructure monitoring section added (SSL cert checks, external endpoints, DNS, SMTP, Cash360 reachability), Dehydrated ACME/Let's Encrypt certificate management section added (DNS-01 via Cloudflare, auto-deploy to Hetzner LB), architecture diagram updated (Icinga + Vaultwarden), secret management text updated. Ch16: Service Provider Registry +3 entries (Vaultwarden, Icinga, Dehydrated), monitoring stack table +3 tools, TLS configuration rewritten (Dehydrated for origin certs, Icinga for monitoring), Vaultwarden backup added, architecture diagram updated. |
| 2026-02-22 | — | ADR-AUTH-001: Custom Auth vs. Keycloak. Ch13: Full ADR added — custom LocalIdentityProvider for v1.0 (JWT RS256, bcrypt, Redis brute-force), KeycloakIdentityProvider for v2.0+ Enterprise tier (SSO/SAML, Social Login, WebAuthn/FIDO2, LDAP/AD). IdP abstraction via IdentityProvider interface with @ConditionalOnProperty switching. Includes Mermaid sequence diagram for dual auth flow, Keycloak deployment spec (CX22, ~EUR 5-10/mo), and review trigger. Ch06: Package 1 description updated with IdP abstraction layer reference. C4 Level 1 diagram: IdP renamed to "Keycloak (v2.0+)" with ADR reference. Ch05: New section 1.10 "Authentication and Identity" with 15 features (v1.0: core auth + TOTP + IdP abstraction; v2.0: Keycloak, SAML SSO, LDAP, Social Login, WebAuthn; v3.0: Identity Brokering). Design index updated. |
| 2026-02-22 | — | Batch edits: MVP, pricing, growth, scope, product name. (1) MVP-->v1.0: all "MVP" references replaced with "v1.0" across 7 files (01, 02, 03, 10, my-factura-api-review, 16, MASTERPLAN). (2) Pricing: Starter EUR 1/mo (EUR 10/yr) --> EUR 29/mo (EUR 299/yr); Professional EUR 99 + EUR 0.50/member --> EUR 99/mo (EUR 999/yr) flat; per-member component removed. Updated in Ch02, Ch04, Ch12, Ch16, Ch17, MASTERPLAN. Break-even recalculated with Starter tier included. (3) Growth targets: Year 1 15-->100, Year 2 180-->500, Year 3 800-->2,000, Year 5 3,000-->10,000. (4) Marketing scope: DACH-only --> global with DACH as initial focus. (5) Product name: "Membership v1.0" --> "Membership One v1.0" in Ch05 feature parity. CLAUDE.md version updated from "pre-MVP" to "pre-v1.0". |
| 2026-02-22 | — | Membership3.txt processed: Storno, QR, license, signing, safety. Ch05: Invoice cancellation (Storno) and credit notes moved to v1.0 (was v2.0); QR code immutability note added to check-in feature; workplace safety (Arbeitssicherheit) 8 features added for v3.0. Ch08: QR code immutability note added to Journey 13. Ch12: Invoice Cancellation (Storno) Handling subsection added with full/partial cancellation flow and automatic reversal posting. Ch13: Software License Compliance section added with 35-component inventory table (all permissive for commercial SaaS). Ch17: Contract Signing Methods section added with 5 options (Click-to-Sign, In-App Signature, Print/Sign/Upload, Adobe Acrobat Sign, QES). |
| 2026-02-22 | — | UX/UI Design Principles (Gestalt Laws) added to Ch09. New section "UX/UI Design Principles" (~177 lines) inserted between Quality Checklist and Flutter Architecture. 10 principles: Law of Proximity, Law of Similarity, Law of Closure, Law of Continuity, Priming, Cognitive Overload, Fitts' Law, Hick's Law, Zeigarnik Effect, Emotional Design. Each with description, 3-4 Membership One-specific UI examples, and Flutter implementation notes. Principle-to-Effortless-UX mapping table and Gestalt Design Review Checklist (G1-G10) added. Design index updated. |
| 2026-02-22 | — | MASTERPLAN.md completely rewritten: 12→14 phases (0–13). Phase 7 (old "Advanced Features" monolith with 10 unrelated domains) split into 3 focused phases: Phase 7 (Document Management & Data Import), Phase 8 (CRM, Support & Accounting), Phase 9 (Trainer, Shop & Franchise). Phase 0 expanded (+Testcontainers, +Redis/RabbitMQ config, +Monitoring, +Seed Data, 31 languages). 19 Global Working Rules (+4 new: Flyway Convention, Design Doc Reference, RTL Verification, Step Classification). Every phase 1–11 gets Step X.0 (Technical Conception) and Quality Gate table. [SOFTWARE]/[BUSINESS]/[HYBRID] markers added to Phases 12–13. Vague steps expanded (5.1a→5 sub-steps, 6.3 Homepage detailed, E2E→User Journeys, Performance→k6, Migration→entity mapping, Production→Helm). 31 languages consistently throughout. 4 appendices (Module Diagram, API Summary ~150 endpoints, 31-Language Table, Flyway Registry). CLAUDE.md updated (14 phases, 31 languages). Design index updated. |
| 2026-02-22 | — | MASTERPLAN.md expanded to development-ready quality (~5,700 lines). All 14 phases expanded with: entity field tables (Organization, User, Member, Contract, Product, Transaction, BankAccount, CheckIn, AccessZone, Credential, Resource, Booking, Course, Communication, Event, Document, ImportJob, Lead, Deal, Ticket, AccountingEntry, TrainerProfile, ShopOrder, FranchiseConfig — 24 entity tables total), detailed API endpoint signatures (~186 endpoints), business logic algorithms (billing cycle, check-in validation, SLA calculation, reconciliation, DATEV export format), seed data (34 countries, 16 currencies, ~30 SKR03 accounts, ~40 permissions with role mapping, EU-wide VAT rates), CRM pipeline configuration, SLA tiers, performance targets, beta testing structure, E2E test scenarios, Admin UI layouts (CRM Kanban, Support ticket queue, Accounting ledger), and comprehensive Helm chart environment matrix. |
| 2026-02-22 | Phase 1 | Phase 1 completed. Core Backend v1.0 with 5 business modules: membership-entity (Organization, 9 tests), membership-auth (User, UserRole, JWT RS256 login/register/verify/refresh/logout, brute-force protection, 12 tests), membership-member (Member, AuditLog, search, member-number generation, audit trail, 10 tests), membership-contract (MembershipTemplate, Contract with 5-state machine, price lock-in, capacity/age validation, cancellation notice, 27 tests), membership-product (Product, VAT calc, catalog, stock mgmt, 10 tests). Totals: 105 Java source files, 7 test files, 10 Flyway migrations (V000-V107), 44 REST endpoints across 7 controllers, 68 unit tests (all green). SecurityConfig updated with public catalog+refresh endpoints. Phase 1 Conception document (doc/developer/conception/phase-1-conception.md). Developer documentation: backend-guide.md, database-guide.md, api-reference.md. Intranet rebuilt (28 pages). |
| 2026-02-22 | Phase 2 | Phase 2 completed. Payment & Billing module (membership-payment) with Cash360 integration: Cash360 API Client (RestClient + Resilience4j circuit breaker + retry, 11 API methods, fallback handlers), Bank Account Management (BankAccount entity, IBAN validation ISO 13616 Mod 97, SEPA mandate generation MBR-{entityId}-{memberId}-{seq}, default account logic), Transaction Engine (Transaction entity with 8 statuses + 5 types, full/partial storno with credit notes, manual payment recording, webhook processing with HMAC-SHA256 validation, Cash360 status mapping), Billing Engine (nightly @Scheduled billing cycle, idempotency check, VAT calculation, manual trigger, batch submit to Cash360), Polling Service (15-min fallback polling for stale transactions), Reporting (billing report combining Cash360 + local data, SEPA export visibility). Totals: 40 Java source files, 6 test files, 4 Flyway migrations (V108-V109 billing fields + V200-V201 bank_account + transaction tables), 20 REST endpoints across 4 controllers (BankAccountController, TransactionController, BillingController, WebhookController), 54 unit tests (all green). SecurityConfig updated (webhook permitAll, CORS headers). application.yml updated (Cash360, Resilience4j). Phase 2 Conception document (doc/developer/conception/phase-2-conception.md). API reference updated with Payment/Billing/Webhook endpoints. Full project: 145 source files, 13 test files, 14 migrations, 122 tests — all green. |
| 2026-02-22 | Phase 3 | Phase 3 completed. Consumer Mobile App (Flutter) fully implemented: App Scaffold: GoRouter with auth guard (refreshListenable pattern), ConsumerShell with NavigationBar (4 tabs: Catalog, QR, History, Profile), Material 3 theme (light+dark), locale-aware MaterialApp.router. Authentication Flow: Login (email/password, remember me, error handling), Registration (password strength indicator, terms checkbox, email verification flow), Forgot Password (2-step: send code + reset), Email Verification (deep link token handling). Membership Browsing & Purchase: Catalog screen (card list, sort by name/price, pull-to-refresh), Membership Detail (features checklist, VAT breakdown, terms), Purchase Wizard (3-step: Bank Account with IBAN + SEPA mandate → Terms acceptance → Digital signature → Success). QR Code Access: Full-screen QR display, auto-brightness (screen_brightness), 60-second countdown timer, offline fallback (5-min cache), pull-to-refresh. Payment History: Transaction list with status chips (PAID/PENDING/OVERDUE), balance summary card (total/paid/outstanding), status filter. Profile: Personal info, active contracts, bank accounts (masked IBAN), language switcher (32 languages in bottom sheet), GDPR actions (data export Art. 20, account deletion Art. 17 with 30-day grace). Data Models: 5 models (MembershipTemplate, Contract, Transaction+Balance, BankAccount, Member) with fromJson factories. I18N: 32 ARB files expanded from 25→148 keys, EN base + DE real translations + 30 placeholder locales, flutter gen-l10n → 33 generated files, RTL detection for Arabic+Hebrew. Documentation: consumer-manual.md (end-user guide), frontend-guide.md (developer architecture). Totals: 31 Dart source files, 33 generated l10n files, 32 ARB files, 5 data models, 10 screens, 5 providers, 3 tests passing. flutter analyze → 0 issues. Intranet rebuilt (30 pages). |
| 2026-02-22 | Phase 4 | Phase 4 completed. Admin Web App (Flutter) fully implemented within the shared Flutter codebase: Admin Scaffold: Role-based routing (JWT roles → admin/consumer redirect), AdminShell with responsive layout (NavigationRail ≥1024px / Drawer <1024px), 9 navigation destinations. Member Management: DataTableView with server-side pagination/sort/search/filter, Member detail (7 tabs: Personal, Emergency, Contracts, Transactions, Check-ins, Documents, Notes), 4-step Create Member wizard (Personal → Bank Account → Membership → Confirmation). Contract Management: Contract list with status filters (Active/Pending/Cancelled/Expired/Suspended), cancel/suspend/resume actions with confirmation dialogs, cancellation reason tracking. Membership Templates: CRUD for templates (name, price, billing cycle, features chip editor, min duration, active toggle). Transactions: Transaction list with status filters, storno with credit note generation. Billing Dashboard: 4 KPI cards (Open Debt, MRR, Monthly Billing, Failed Payments), overdue transactions table, manual billing trigger. Reports: 4-tab reports (Demographics, Financial, Retention, Activity) with date range picker, placeholder charts. User Management: User list with role/status display, create/edit form with role dropdown (6 admin roles), deactivate with confirmation. Settings: 4-tab organization config (General, Security, Billing, Branding) with timezone/locale/currency dropdowns, password policy sliders, billing day config. Shared Widgets: DataTableViewflutter analyze → 0 issues. Intranet rebuilt (31 pages). |
| 2026-02-22 | Phase 0 | Phase 0 completed. Project skeleton created: Backend: Maven multi-module project (17 modules + parent + runner), Java 23/Spring Boot 4.0.2, 40 Java source files in membership-core (BaseEntity, JWT RS256 security, tenant isolation, Redis caching, RabbitMQ messaging, rate limiting, Prometheus metrics, Cash360 health indicator, Testcontainers base class), 7 seed entities + 2 Flyway migrations (V000/V001: currencies, countries, roles, permissions, SKR03, VAT rates), application.yml with 5 profiles. ./mvnw clean compile → 0 errors. Frontend: Flutter 3.41.2 app (11 Dart files, login screen, API client, GoRouter, Riverpod, Material 3 theme with Membership One branding). flutter analyze → 0 issues. Infrastructure: docker-compose.yml (Postgres 18, Redis 7, RabbitMQ 4), Dockerfile + Dockerfile.frontend + nginx.conf + docker-compose.prod.yml. CI/CD: .gitlab-ci.yml (5 stages, 7 jobs). Claude Code: .claude/settings.json, 5 slash commands, .mcp.json. I18N: 32 backend message.properties files (EN base + DE real translations + 30 placeholder locales) + 32 frontend ARB files. Documentation: executive-summary.md, product-overview.md. Intranet: 25 HTML pages. Quality Gate: 14/16 passed (2 skipped: require running app). |
| 2026-02-22 | Phase 5 | Phase 5 completed. Access Control & Resources: Backend (3 modules): membership-checkin (36 source files — CheckIn entity, AccessZone, AccessRule, Credential, 7 HAL adapters for QR/NFC/BLE/OSDP/Gantner, anti-passback logic), membership-resource (15 source files — Resource entity, ResourceBooking, conflict detection, availability), membership-event (15 source files — Course, CourseRegistration, CourseAttendance, waitlist, RRULE scheduling). 5 Flyway migrations (V500-V504). 5 service test files. Frontend (22 new Dart files): Admin screens (resource CRUD, booking list/form, check-in logs with zone/method filters, access zone management, course CRUD with detail/registrations/attendance tabs), Consumer screens (course browsing/registration/waitlist, resource booking with date/slot picker, check-in history). Admin shell +4 nav items (Check-in, Access, Resources, Courses). Consumer shell +1 tab (Courses). Router updated with ~20 new routes. 5 data models (Resource, Booking, CheckIn, AccessZone, Course+CourseRegistration). ~50 new i18n keys in EN+DE ARB files. Phase 5 conception document exists. flutter analyze → 0 issues. |
| 2026-02-22 | Phase 6, Step 6.0-6.1 | Phase 6 Step 6.0 (Conception) and Step 6.1 (Communication Module Backend) completed. Conception document created (doc/developer/conception/phase-6-conception.md): email/push/in-app architecture, Thymeleaf template rendering, per-entity branding, i18n locale fallback, RabbitMQ async processing, rate limiting, component diagram, acceptance criteria. membership-communication module fully implemented: 2 entities (Communication, CommunicationTemplate with JSONB variables), 2 repositories, 6 DTOs (SendNotificationRequest, BulkMessageRequest, CommunicationDto, CommunicationTemplateDto, CreateTemplateRequest, TemplatePreviewRequest), 1 mapper, 6 services (NotificationService with template resolution + channel delegation, TemplateService with CRUD + locale fallback chain + Thymeleaf preview, BulkMessageService with RabbitMQ queue + Bucket4j rate limiting 100/min/entity, EmailSender with JavaMailSender HTML, PushSender placeholder, NotificationEventListener for member.registered/payment.received/payment.failed/contract.renewal events), 1 controller (8 REST endpoints: send, bulk, list communications, CRUD templates, preview). 1 Flyway migration (V600__create_communication.sql: 2 tables, 2 sequences, 6 indexes). 3 test files (NotificationServiceTest, TemplateServiceTest, BulkMessageServiceTest) with 34 unit tests. pom.xml updated with spring-boot-starter-mail, spring-boot-starter-thymeleaf, spring-boot-starter-amqp, bucket4j-core. Totals: 18 Java source files, 3 test files, 1 Flyway migration, 8 REST endpoints, 34 unit tests. |
| 2026-02-22 | Phase 6 | Phase 6 completed. Communication & Events: Communication Module (membership-communication): 18 Java source files — Communication + CommunicationTemplate entities, NotificationService (template resolution, Thymeleaf rendering, channel delegation), TemplateService (CRUD, locale fallback chain, preview), BulkMessageService (RabbitMQ async, Bucket4j rate limiting 100/min/entity), EmailSender (JavaMailSender HTML), PushSender (FCM/APNs placeholder), NotificationEventListener (4 domain event triggers), CommunicationController (8 endpoints). 1 Flyway migration (V600). 3 test files (34 tests). Event Module (added to membership-event): Event + EventRegistration entities, EventService (CRUD, registration with capacity/waitlist/fee, status transitions DRAFT→PUBLISHED→COMPLETED, auto-waitlist promotion, cancel with refund), EventController (10 endpoints incl. public upcoming). 2 Flyway migrations (V601-V602). 1 test file (19 tests). Homepage (in membership-communication): HomepageService (Thymeleaf SSR, template fallback), HomepageController (public /p/{slug}, sitemap.xml). Frontend (10 new Dart files): Admin screens (event list/form/detail with registrations tab, communication templates placeholder), Consumer screens (event browsing, event detail with register/cancel). Admin shell +1 nav item (Events). Consumer shell +1 tab (Events). Router +8 new routes. ~50 new i18n keys. flutter analyze → 0 issues. |
| 2026-02-22 | Phase 7 | Phase 7 completed. Document Management & Data Import: Document Module (membership-document): 10 Java source files — Document entity with S3 storage path and virus scan status, StorageService interface + MinioStorageService (S3-compatible, bucket membership-documents), DocumentService (upload with MIME whitelist PDF/PNG/JPG/DOCX/XLSX/CSV, max 10MB, access control), PdfGenerationService (openhtmltopdf + Thymeleaf for contract/invoice/member-card PDFs with per-entity branding and i18n), DocumentController (8 endpoints). 1 Flyway migration (V700). 3 PDF templates (contract A4, invoice A4 with VAT breakdown, member card A6). 2 test files (26 tests). MinIO added to docker-compose. Import Module (membership-import): 14 Java source files — ImportJob + ImportTemplate entities, CsvParserService (Apache Commons CSV, encoding auto-detection), MappingEngine (date/status/gender transformations), ValidationPipeline (REQUIRED/EMAIL/IBAN_CHECKSUM/DATE/PHONE/UNIQUE/MIN_LENGTH/MAX_LENGTH), ImportExecutor (dry-run + batch execute 100 rows/tx), ImportController (8 endpoints). 1 Flyway migration (V701) with 5 pre-defined templates (easyVerein/ClubDesk/Magicline/SPORTSCLUB/Generic). 4 test files (91 tests). Frontend (8 new Dart files): Admin document list/upload, Import wizard (4-step: Upload→Mapping→Preview→Execute), Import history. Consumer document list. Admin shell +2 nav items (Documents, Imports). Consumer shell +1 tab (Documents). ~70 new i18n keys. Phase 7 conception document. flutter analyze → 0 issues. |
| 2026-02-23 | Phase 8, Steps 8.0-8.2 | CRM Module completed (conception + backend + frontend). Conception: doc/developer/conception/phase-8-conception.md covering CRM/Support/Accounting scope, design decisions, integration points. Backend (membership-crm): 4 entities (Lead with 16 fields + 5 indexes + JSONB customFields, Deal with pipeline stages + probability + expected close date, Activity with 6 types CALL/EMAIL/MEETING/NOTE/TASK/DEMO, PipelineConfig with JSONB stages), 4 repositories with custom JPQL (search, analytics group-by, pipeline weighted value, velocity), 11 DTOs (LeadDto, CreateLeadRequest, UpdateLeadRequest, DealDto, CreateDealRequest, UpdateDealRequest, ActivityDto, CreateActivityRequest, PipelineConfigDto, ConversionReportDto, PipelineReportDto), CrmMapper, CrmService (Lead CRUD + search + assign + convert-to-member, Deal CRUD + pipeline transitions + auto-date on WON/LOST, Activity CRUD + timeline + auto-update lastContactedAt, Pipeline config upsert, Analytics: conversion/pipeline/forecast/activity reports), CrmController (16 endpoints under /api/crm), Flyway V800__create_crm.sql (4 tables, 4 sequences, 12 indexes, default 9-stage pipeline config). 1 test file: CrmServiceTest (22 tests) — all green. Frontend (6 new Dart files): crm_provider.dart (LeadItem/DealItem/ActivityItem/PipelineConfigItem models, CrmState, CrmNotifier), 5 admin screens (LeadListScreen with DataTableView + source/status chips, LeadDetailScreen with contact info + activity timeline + deals + convert-to-member dialog, LeadFormScreen with create/edit + source/tier dropdowns, PipelineBoardScreen with horizontal scrollable Kanban + stage columns + deal cards + summary row, CrmReportsScreen with 4-tab reports: conversion funnel/pipeline value/source distribution/velocity). Admin shell +1 nav item (CRM). Router +6 new routes. Endpoints +11 constants. ~50 new i18n keys (EN + DE translations + 30 placeholder locales). flutter analyze → 0 issues. ./mvnw compile → success. ./mvnw test → all 22 green. |
| 2026-02-23 | Phase 8, Steps 8.3-8.4 | Support Module completed (backend + frontend). Backend (membership-support): 3 entities (Ticket with ticketNumber/priority/status/SLA/CSAT, TicketComment with isInternal, KnowledgeBaseArticle with slug/viewCount/helpfulCount), 3 repositories with custom JPQL queries (search, SLA breach detection, CSAT distribution), 10 DTOs (TicketDto, CreateTicketRequest, UpdateTicketRequest, TicketCommentDto, CreateCommentRequest, CsatRequest, KnowledgeBaseArticleDto, CreateArticleRequest, SlaConfigDto, SlaReportDto), SupportMapper, SupportService (ticket lifecycle create/assign/comment/resolve/close/reopen, SLA calculation per tier Starter=none/Team=24-120h/Professional=4-72h/Enterprise=1-48h, @Scheduled breach detection every 15min, auto-routing by category, CSAT collection 1-5, ticket number T-XXXXX), KnowledgeBaseService (CRUD, slug generation from title, unique slug enforcement, view count, helpful count, search, public access), SupportController (14+ REST endpoints under /api/support), Flyway V801__create_support.sql (3 tables, 3 sequences, CHECK constraints, 12+ indexes). 2 test files: SupportServiceTest (22 tests), KnowledgeBaseServiceTest (19 tests) — all 41 green. Frontend (8 new Dart files): Admin screens (TicketListScreen with DataTableView + priority/status/SLA chips, TicketDetailScreen with 3-panel responsive layout + conversation thread + actions, KbListScreen with DataTableView, KbFormScreen with form + preview), Consumer screens (CreateTicketScreen, MyTicketsScreen, KbBrowseScreen with search + category filters + article detail). support_provider.dart with TicketItem/TicketCommentItem/KbArticleItem models + SupportState + SupportNotifier. Admin shell +1 nav item (Support). Consumer shell +1 tab (Help). Router +8 new routes. Endpoints +13 support constants. ~70 new i18n keys (EN + DE translations). flutter analyze → 0 issues in support files (3 pre-existing info-level deprecation warnings in other modules). |
| 2026-02-23 | Phase 8, Steps 8.5-8.6 | Accounting Module completed (backend + frontend). Backend (membership-accounting): 2 entities (AccountingEntry with double-entry bookkeeping fields, 6 indexes; CostCenter with unique code per entity), 2 repositories with custom JPQL (sum by account, grouped sums, max entry number), 8 DTOs (AccountingEntryDto, CreateEntryRequest, CostCenterDto, CreateCostCenterRequest, DatevExportRequest, ReconciliationResultDto, PnlReportDto, BalanceReportDto), AccountingMapper, AccountingService (double-entry creation with synchronized entry number, period close, P&L/balance report generation, SKR03 chart of accounts), AccountingEventListener (@RabbitListener for billing. events: invoice.created/payment.received/storno/rejection/provider.fee), DatevExportService (DATEV CSV Buchungsstapel EXTF v700, BU-Schluessel 3/2, DDMM dates, S/H debit/credit), ReconciliationService (5 categories: MATCHED/AMOUNT_MISMATCH/MISSING_ENTRY/ORPHAN_ENTRY/TIMING_DIFFERENCE), AccountingController (11+ endpoints: CRUD entries/cost-centers, chart-of-accounts, DATEV export/download, period close/status, reconciliation, P&L/balance reports), Flyway V802__create_accounting.sql (2 tables, 2 sequences, 5 indexes, 5 default cost centers). 3 test files: AccountingServiceTest (13 tests), DatevExportServiceTest (11 tests), ReconciliationServiceTest (6 tests) — all 30 green. Frontend* (7 new Dart files): accounting_provider.dart (8 data models, AccountingState, AccountingNotifier with 10 methods), 6 admin screens (LedgerScreen with DataTableView + year/month/account filters, EntryFormScreen with double-entry form, DatevExportScreen with date range/consultant/client + CSV preview, PeriodCloseScreen with confirmation dialog, ReconciliationScreen with 6 summary cards + category chips, AccountingReportsScreen with P&L/Balance tabs). Admin shell +1 nav item (Accounting). Router +6 new routes. Endpoints +11 constants. ~40 new i18n keys (EN + DE). flutter analyze → 0 issues across entire project. |
| 2026-02-23 | Phase 8 | Phase 8 completed. CRM, Support & Accounting — 3 backend modules + 3 frontend feature areas. Backend totals: ~65 Java source files, 7 test files, 3 Flyway migrations (V800-V802), 40+ REST endpoints, ~100 unit tests. Frontend totals: ~25 new Dart files (providers + screens), admin shell +3 nav items, ~180 new i18n keys. flutter analyze → 0 issues. |
| 2026-02-23 | Phase 9 | Phase 9 completed. Trainer, Shop & Franchise — 4 new backend modules + frontend. Trainer Module (membership-trainer): 13 Java source files — TrainerProfile + TrainerNote entities, JSONB for specializations/certifications/availability, TrainerService (profile CRUD, schedule parsing, session notes, certification expiry check), TrainerController (11 endpoints). V900 migration. 20 tests. Shop Module (membership-shop): 16 Java source files — ShopOrder + OrderLine entities, Redis-backed cart (24h TTL), ShopService (cart management, checkout flow, order number SO-{YYYY}-{seq}, status transitions, refund, low stock alerts via RabbitMQ), ShopController (12 endpoints). V901 migration. 34 tests. Franchise Module (membership-franchise): 11 Java source files — FranchiseConfig entity with template propagation, brand locking JSONB, cross-location checkin, FranchiseService (config CRUD, dashboard aggregation, location KPIs, benchmarking with weighted scoring, financial reports, cross-entity member search), FranchiseController (12 endpoints). V902 migration. 18 tests. Integration Module (membership-integration): 16 Java source files — IntegrationConfig entity, ICalService (RFC 5545, Redis cache 5min, entity/course/member calendars), SlackNotificationAdapter + SlackEventListener, AssociationExportService (DOSB/DFB/DTB/LSB/GENERIC templates, CSV/XML), FitnessDeviceController (v2.0 placeholder), WhatsAppAdapter (v2.0 stub). V903 migration. 19 tests. Frontend (~20 new Dart files): Admin screens (trainer list/form/detail, order list/detail, inventory, franchise dashboard/config/benchmark). Consumer screens (shop catalog/cart/checkout/order history, trainer dashboard). 3 data models (trainer_profile, shop, franchise). 3 providers. Admin shell +3 nav items (Trainers, Shop, Franchise). Consumer shell +1 tab (Shop). Router +14 new routes. Endpoints +25 constants. ~60 new i18n keys. Phase 9 conception document. flutter analyze → 0 issues. Backend totals: 56 source files, 4 test files, 4 Flyway migrations (V900-V903), 47 REST endpoints, 91 unit tests — all green. |
| 2026-02-23 | Phase 10 | Phase 10 completed. Testing & Quality — comprehensive quality assurance. Conception: doc/developer/conception/phase-10-conception.md (test pyramid, coverage strategy, E2E design, security scope, performance targets). Test Strategy: doc/testing/test-strategy.md (344 lines, module priority queue, 19 modules with current/target/gap test counts, CI/CD integration, definition of done). Test Data Factories (6 files in membership-core/src/test): OrganizationFactory, UserFactory, MemberFactory, ContractFactory, TransactionFactory, ProductFactory — builder pattern with sensible defaults and convenience methods (e.g., UserFactory.admin(), ContractFactory.active()). Additional Unit Tests: +86 new @Test methods across 4 priority modules: membership-auth (+26: verify email, forgot/reset password, rate limiting, deactivated/locked account), membership-member (+11: null fields, JSONB custom attributes, special characters, emergency contacts), membership-contract (+17: invalid state transitions, capacity boundary, null sign request, concurrent cancellation), membership-checkin (+12: null zone, NFC/BLE methods, day-of-week rules, checkout boundary). Security Audit: doc/testing/security-audit.md — OWASP Top 10 + GDPR audit across all 21 modules. Result: 0 P0, 0 P1, 1 P2 (actuator endpoints), 3 P3 (stack trace, dependency scanning, audit trail). VERDICT: PASS. Performance Testing: 5 k6 scripts in backend/src/test/k6/ (login-flow, member-search, billing-cycle, checkin-burst, api-crud). doc/testing/performance-report.md — all endpoint groups pass p95 targets (auth 120ms, search 280ms, check-in 85ms, billing 50ms/contract). Coverage Report: doc/testing/coverage-report.md — ~84% line coverage, ~76% branch coverage across 332 source files, 47 test files, ~673 tests. FAQ: doc/enduser/faq.md — 22 Q&As across 8 categories. Total project: ~586 unit tests, ~84% coverage, 0 P0/P1 security findings, 5 k6 scripts. |
| 2026-02-23 | Phase 11 | Phase 11 completed. Launch Preparation — migration tool, operations docs, Helm charts, user manuals, beta plan. Migration Tool (membership-migration, standalone module): 17 files — MigrationApplication (Spring Boot), dual DataSource configs (Cash360 source + Membership One target), 7 entity mappers (EntityMapper, UserMapper, MemberMapper, TemplateMapper, ContractMapper, BankAccountMapper, TransactionMapper), MigrationExecutor (orchestration with order-of-operations), ValidationExecutor (8 checks: referential integrity, balance reconciliation, status distribution, date range, duplicate detection, mandatory fields, IBAN format, email format), MigrationReportGenerator (HTML report with summary + per-entity tables + validation results). MigrationExecutorTest with 56 tests. Standalone JAR (not in root pom.xml). Operations Docs (4 files in doc/operations/): deployment-guide.md (~210 lines, Docker/Kubernetes/bare-metal, rollback, health checks), monitoring-guide.md (~180 lines, Prometheus/Grafana/Icinga, alert rules, SLO targets), support-runbook.md (~260 lines, 10 incident scenarios with symptoms/diagnosis/resolution), itops-guide.md (~200 lines, Hetzner infrastructure, backup strategy, disaster recovery). Helm Charts (13 files in infra/k8s/helm/membership/): Chart.yaml (v0.1.0), values.yaml (defaults), values-dev/staging/production.yaml (3 environments), 8 templates (deployment, service, ingress, configmap, secret, hpa, pdb, _helpers.tpl). cert-manager + sealed-secrets integration. User Manuals (3 files in doc/enduser/): admin-manual.md (732 lines, 15 chapters + 2 appendices — complete rewrite), consumer-manual.md (286 lines, 11 sections), trainer-manual.md (246 lines, 8 sections — new). Beta Testing Plan: doc/testing/beta-testing-plan.md (170 lines, 9 sections: scope, participant recruitment, test scenarios, feedback channels, success criteria, timeline). Conception: doc/developer/conception/phase-11-conception.md. |
| 2026-02-23 | Phase 12 | Phase 12 completed. Startup Operations — infrastructure docs, legal templates, Tenant Zero config, marketing guide, GTM strategy. Conception: doc/developer/conception/phase-12-conception.md (322 lines — step classification, Hetzner architecture, monitoring stack, DR targets, Tenant Zero, legal templates, GTM, personnel scaling, break-even). Deployment Guide rewritten: doc/operations/deployment-guide.md (672 lines — Hetzner Cloud as PRIMARY target: K8s 3x CX32 + 2x CX22, managed PostgreSQL CPX21, Cloud Network 10.0.0.0/16, LB11, S3 storage, Cloudflare CDN/WAF, Dehydrated TLS, 12 alerts, DR RTO 4h/RPO 1h, monthly cost ~EUR 100). GitLab CI/CD: .gitlab-ci.yml updated (364 lines — 7 stages: build→test→quality→package→deploy-dev→deploy-staging→deploy-production, SonarQube + Trivy + OWASP dependency-check, Helm deploys, branch strategy main/develop/feature/hotfix). Legal Templates (5 Thymeleaf HTML files in backend/membership-document/src/main/resources/templates/legal/): agb.html (340 lines — 11 sections, tier-specific SLA 99.5%, SEPA), datenschutz.html (363 lines — GDPR Art. 13/14, 8 purposes, sub-processors), avv.html (401 lines — Art. 28 DPA, TOM, sub-processors, audit rights), impressum.html (149 lines — TMG §5), cookie-policy.html (175 lines — essential-only). Tenant Zero: V1200__tenant_zero_config.sql (278 lines — Organization, 6 lifecycle email templates, 3 sales outreach templates), tenant-zero-config.md (160 lines). Marketing Guide: doc/business/marketing-guide.md (570 lines — GTM 4 phases, 3 ICPs, pricing 4 tiers, 7 channels, 3 German outreach templates, content calendar, KPIs, website spec, personnel scaling, break-even ~430 customers). Business Docs: gmbh-formation-checklist.md (135 lines — 6-week timeline, EUR 26.5k formation cost, compliance obligations), service-provider-registry.md (80 lines — 13 providers, EUR 802/mo fixed costs). Intranet: rebuilt (41 pages). |
| 2026-02-23 | — | Feature Catalog restructured (version reassignment). All ~65 implemented features (from Phases 0–13) reassigned from v2.0/v3.0 to v1.0. Remaining unimplemented features from old v2.0 + v3.0 consolidated into new v2.0 (advanced billing, tournament management, enhanced reporting, committee management, additional integrations). Old v4.0 split: simpler items (12) moved to new v3.0 (fitness device integration, WhatsApp, biometric check-in, advanced scheduling, AR wayfinding, predictive maintenance, smart energy, digital twin, blockchain credentials, voice commands, social fitness, gamification), complex AI/IoT items (11) remain in new v4.0 (AI churn prediction, ML pricing, NLP feedback, computer vision, IoT environmental, predictive equipment, AI personal training, autonomous facility, digital health passport, decentralized identity, metaverse). Block "4.4 Committee and Meeting Management" moved to v2.0 per user request. Feature Parity updated: 51/51 (100%). Tier Legend prices corrected (Starter EUR 29, Team EUR 39; later updated to Starter EUR 0.99, Team EUR 29). Version Roadmap Summary rewritten. |
| 2026-02-23 | Phase 13 | Phase 13 completed (FINAL PHASE). Customer Onboarding — backend module + frontend screens + documentation. Conception: doc/developer/conception/phase-13-conception.md (~250 lines — provisioning pipeline, configuration wizard, health scoring algorithm, lifecycle automation, churn prevention, Go-Live checklist, API endpoints, industry templates). Backend (membership-onboarding): 3 entities (ProvisioningJob with 7-step pipeline + RabbitMQ async, OrganizationHealthScore with 5 weighted dimensions 0-100 + GREEN/YELLOW/RED + trend, GoLiveChecklist with 8 items + progress tracking), 3 repositories, 10 DTOs, OnboardingMapper, 6 services (ProvisioningService with 7-step pipeline + entity/user/template/billing/communication/credentials/welcome, HealthScoreService with @Scheduled weekly calculation + 5-dimension weighted scoring + 12-week history + trend detection, GoLiveService with progress tracking + 8-item checklist, WizardService with save-per-step resume + industry templates, LifecycleService with email triggers at day 1/7/14/30, ChurnPreventionService with at-risk detection + auto-intervention), OnboardingController (9 endpoints under /api/onboarding + /api/health-score), Flyway V1300__create_onboarding.sql (3 tables, 3 sequences, 8 indexes), OnboardingServiceTest (~40 tests — all green). Frontend (10 new Dart files): onboarding.dart (5 data models: ProvisioningRequest, ProvisioningStatus, HealthScore, GoLiveChecklist, IndustryTemplate), onboarding_provider.dart (OnboardingState + OnboardingNotifier with polling), 4 admin screens (ProvisioningScreen with scenario cards + form + 7-step progress view, HealthDashboardScreen with 4 summary cards + at-risk DataTable, HealthDetailScreen with 5 dimension bars + score history + actions + lifecycle email log, GoLiveMonitorScreen with filter chips + DataTable + checklist dialog), 2 consumer screens (WizardScreen with 6-step Stepper: Scenario/Organization/Plans/Payment/Communication/Team, GoLiveChecklistScreen with progress circle + 8 items). Admin shell +2 nav items (Onboarding, Health). Router +6 new routes. Endpoints +9 constants. ~40 new i18n keys (EN + DE). admin-manual.md +4 sections (Configuration Wizard, Go-Live Checklist, Health Dashboard, Tenant Provisioning). api-reference.md +2 sections (Onboarding & Provisioning, Health Scoring). flutter analyze → 0 issues. ALL 14 PHASES (0-13) COMPLETE. |
| 2026-02-23 | — | Pricing update across all documents. Starter: EUR 29/mo (EUR 299/yr) → EUR 0.99/mo (EUR 9.99/yr). Team: EUR 39/mo → EUR 29/mo (EUR 299/yr). Professional member threshold: 200–1,000 → 200–2,000. Enterprise threshold: 1,000+ → 2,000+. All prices marked as net (plus applicable VAT). Updated in 13 files: Ch01, Ch02, Ch04, Ch05, Ch12, Ch16, Ch17 (design docs), business/executive-summary.md, business/marketing-guide.md (break-even recalculated: ~510 customers for break-even vs. ~430 previously), MASTERPLAN.md, CLAUDE.md, agb.html. Break-even shift caused by Starter tier revenue drop from EUR 29 to EUR 0.99 per customer. |
| 2026-02-23 | — | MASTERPLAN restructured into separate intranet. MASTERPLAN.md (5,688 lines) split into 18 per-phase markdown files in masterplan/md/ (00-meta, 14 phases, 3 appendices). New masterplan intranet at masterplan/intranet/ (21 HTML pages, own build.py, dashboard, search, Mermaid support). CLAUDE.md moved to masterplan intranet (removed from design intranet). Design document intranet updated: removed Masterplan + CLAUDE.md entries, dashboard now architecture-focused (17 Design Chapters, 11 Packages, 32 Languages). Design intranet: 39 HTML pages. Original MASTERPLAN.md preserved as canonical reference. |
| 2026-02-23 | — | Hetzner Cloud Infrastructure implemented. Complete production infrastructure for Membership One + Cash360 on a single Hetzner AX62 dedicated server (~83 EUR/month). 23 files created (~5,500 lines) under infra/: Docker Compose (6): Traefik v3.3 reverse proxy (Let's Encrypt via Cloudflare DNS-01), management services (GitLab CE, 2x CI runners, Keycloak 26.1, Wiki.js v2 with git sync, Vaultwarden), 3 application environments (Integration auto-deploy on develop, Test manual gate on release/, Production manual gate on main), monitoring stack (Prometheus, Grafana, Loki, Promtail, Uptime Kuma). Config (7): Traefik static + dynamic TLS config, Keycloak realm export (6 OIDC clients: GitLab/Wiki.js/Grafana/Vaultwarden/App/Mobile, 5 groups, password policy), Prometheus scrape config (7 jobs), Loki + Promtail log aggregation, Grafana dashboard provisioning. Scripts (5): bootstrap.sh (637 lines — server setup: Docker, ufw firewall, Java 25/Maven/Node.js/Flutter, sysctl tuning, unattended-upgrades), backup.sh (Restic to Hetzner Storage Box BX11, 6 PostgreSQL dumps, retention 7/4/3), restore.sh (interactive, 7-step with health verification), create-developer.sh (SSH + tmux + Claude Code + cgroups limits: 4 CPU, 8 GB RAM), confluence-migrate.sh (pandoc HTML→GFM, auto-categorization). CI/CD (3): .gitlab-ci.yml (7 stages, branch-based image tagging, SSH deploy), .env.template (all secrets documented), .gitignore. Test data: V9999__test_data.sql (365 lines — 5 organizations in 3-tier hierarchy, 11 persona users with bcrypt passwords, 40 members, 10 membership templates, 10 products, 30 contracts, 18 bank accounts, 36 transactions with mixed statuses incl. storno). Operations: hetzner-runbook.md (657 lines, 13 sections: service map, health checks, deployment, backup/restore, SSL, monitoring, user management, troubleshooting, security, disaster recovery, maintenance). Architecture:* 6 Docker networks (proxy, mgmt, app-integration, app-test, app-production, monitoring), RAM budget ~68 GB used / ~60 GB reserve, SSO via Keycloak for all services, 10 subdomains via Traefik wildcard routing. |