# Improvement Tasks Checklist

This document lists actionable, logically ordered improvements for the project. Each task is prefixed with a checkbox for tracking. Tasks span architecture, quality, security, performance, testing, developer experience, and documentation.

Note: Some items reference existing files and modules to guide implementation. Execute tasks incrementally from top to bottom for best results.

## Wichtigste Aufgaben (Top-Prioritäten – sofort angehen)

Die folgenden Punkte liefern den größten Nutzen und sollten priorisiert bearbeitet werden. Sie referenzieren die entsprechenden Abschnitte weiter unten.

- [ ] CI/CD Pipeline aufsetzen und härten (Lint, PHPStan, Tests, Composer Audit) – siehe „CI/CD Pipeline Hardening“ (Punkt 2). Blocking für Qualität und Sicherheit.
- [ ] Statische Analyse hochdrehen (strict_types prüfen, PHPStan-Level erhöhen, Baseline pflegen) – siehe „Static Analysis and Type Safety“ (Punkt 3). Schneller Qualitätsgewinn.
- [ ] Kritische Tests ergänzen: Sicherheitskomponenten/WAF und Integrationspfade (Auth, Persistence) – siehe „Testing Improvements“ (Punkt 14/15) und „Security Improvements“ (Punkt 7).
- [ ] CacheKey-Typo in CacheFeatureFlagRepository beheben und Negative-Caching-Strategie absichern – siehe „Feature Flags System“ (Punkt 11) und „Concrete Fixes“ (Punkt 20).
- [ ] HTTP-Layer Tests für HttpRequest/Query, Fehlerpfade und Middleware-Kette – siehe „HTTP Layer and Routing“ (Punkt 10).
- [ ] WAF/Rate Limiting verbessern, Regeln schärfen, Tests hinzufügen – siehe „Security Improvements > Enhance WAF functionality“ (Punkt 7/IntelligentRateLimitLayer).
- [ ] Konfiguration & Secrets zentralisieren (.env.example vervollständigen, Validierung beim Boot) – siehe „Configuration and Secrets Management“ (Punkt 5).
- [ ] Observability Basis schaffen: strukturierte Logs, Metriken (Hit/Miss/Errors), Tracing-Hooks – siehe „Error Handling and Observability“ (Punkt 6) und „Performance and Caching“ (Punkt 8).
- [ ] Datenbank-Quick-Wins: N+1 erkennen, Indexe ergänzen, Integrations-Tests für Repositories – siehe „Data Layer and Persistence“ (Punkt 9).
- [ ] Deployment/Operations stabilisieren: Healthchecks in Docker Compose, idempotente Deploy-Schritte – siehe „Deployment and Ops“ (Punkt 19).
- [ ] Developer-Docs aktualisieren (Getting Started, Troubleshooting) und ADRs für Schlüsselentscheidungen – siehe „Documentation“ (Punkt 17) und „Developer Experience“ (Punkt 16).

1. [ ] Establish a Baseline and Governance
   - [ ] Define and document the minimum supported PHP version and runtime requirements (extensions) in README and composer.json (platform). 
   - [ ] Align coding standards across the codebase (PHP CS Fixer rules and .editorconfig) and enforce via CI. 
   - [ ] Introduce a clear versioning strategy (SemVer), CHANGELOG, and release process.
   - [ ] Audit .gitignore to ensure build artifacts, caches (var/, storage/cache/, vendor/* docs), and generated files are excluded from VCS.

2. [ ] CI/CD Pipeline Hardening
   - [ ] Add CI jobs: lint (php-cs-fixer dry-run), static analysis (phpstan), unit/integration tests (Pest), security scan (composer audit). 
   - [ ] Add optional coverage reporting with Xdebug (XDEBUG_MODE=coverage) and a minimum threshold. 
   - [ ] Add Docker image build/test job and push to a registry for deployment. 
   - [ ] Introduce pre-commit hooks (lint, phpstan, pest) via Husky or CaptainHook for local dev.

3. [ ] Static Analysis and Type Safety
   - [ ] Enable strict_types everywhere (verify headers and add missing declarations). 
   - [ ] Raise PHPStan level progressively to target a high level (e.g., 8/9) and generate/update baseline responsibly. 
   - [ ] Add Psalm or PHPStan-specific rules for DDD boundaries and unsafe patterns (mixed usage, array shape validation). 
   - [ ] Replace magic arrays with value objects or DTOs where appropriate; document contracts.

4. [ ] Dependency Injection and Module Boundaries
   - [ ] Document and formalize module boundaries (src/Application, src/Domain, src/Framework, src/Infrastructure) with allowed dependency directions. 
   - [ ] Add architectural tests (Pest plugin or custom) to enforce dependency rules. 
   - [ ] Review service wiring/discovery (DiscoveryServiceBootstrapper) and replace reflection-heavy or dynamic patterns with explicit configuration where it improves clarity/perf. 
   - [ ] Ensure constructors favor interfaces; introduce missing interfaces for concrete dependencies.

5. [ ] Configuration and Secrets Management
   - [ ] Centralize configuration (env/config/*.php) and document defaults and overrides. 
   - [ ] Validate config at boot (fail-fast with actionable errors). 
   - [ ] Ensure secrets are sourced from environment/secret stores, not committed; add examples to .env.example. 
   - [ ] Add configuration schema tests (ensuring required keys and types).

6. [ ] Error Handling and Observability
   - [ ] Standardize exception hierarchy and error codes across modules; avoid silent failures. 
   - [ ] Add structured logging with context IDs (correlation, request, user) and log levels policy. 
   - [ ] Introduce metrics for key operations (HTTP, cache, DB, queue) and expose Prometheus endpoint securely. 
   - [ ] Add tracing hooks (OpenTelemetry) for critical paths; document propagation.

7. [ ] Security Posture
   - [ ] Perform a security audit against OWASP Top 10; document findings and remediation plan. 
   - [ ] Harden WAF (src/Framework/Waf): review rules, rate limiting strategies, false positive handling, and add tests. 
   - [ ] Ensure input validation and output encoding in View processors; review IfProcessor and templating for SSR XSS vectors. 
   - [ ] Enforce HTTPS, secure cookies, CSRF tokens, and security headers (CSP, HSTS) in HTTP module and Nginx config. 
   - [ ] Add dependency vulnerability scanning in CI (e.g., symfony/security-checker replacement via Composer audit).

8. [ ] Performance and Caching
   - [ ] Review and document cache strategy (Cache, MultiLevelCache, Async caches) and TTL policies per domain entity. 
   - [ ] Add cache metrics (hit/miss/evictions) and logs to analyze effectiveness. 
   - [ ] Implement cache warming for critical data at boot or via worker. 
   - [ ] Resolve known cache correctness issues (e.g., negative caching keys, serialization safety). 
   - [ ] Validate cache key naming with a central builder; enforce namespacing to avoid collisions.

9. [ ] Data Layer and Persistence
   - [ ] Review repositories for N+1 queries and missing indexes; add DB migrations and schema docs. 
   - [ ] Create integration tests for critical repositories. 
   - [ ] Introduce transaction boundaries and retry strategy where needed. 
   - [ ] Add database health checks and readiness probes for Docker composition.

10. [ ] HTTP Layer and Routing
    - [ ] Increase test coverage for HttpRequest, Query, route resolution, middleware chain, and error responses. 
    - [ ] Validate query parsing edge cases (duplicate keys, encodings) and add regression tests. 
    - [ ] Normalize header casing and ensure PSR-7 compatibility where applicable. 
    - [ ] Add request/response size limits and timeouts; document defaults.

11. [ ] Feature Flags System
    - [ ] Define a canonical FeatureFlag repository interface contract and behaviors (null vs. NOT_FOUND semantics). 
    - [ ] Add integration tests for CacheFeatureFlagRepository and FileFeatureFlagRepository, including negative cache behavior. 
    - [ ] Fix typing/typos in cache key creation (CacheKey vs Cachekey) and ensure cache stores only serializable, immutable objects. 
    - [ ] Add an admin endpoint/UI hardening with authorization checks in FeatureFlagController.

12. [ ] Search Module
    - [ ] Validate SearchRequest input constraints and canonicalize parameters. 
    - [ ] Add tests for SearchController behavior (pagination, empty results, errors). 
    - [ ] Document search adapter contracts and index lifecycle.

13. [ ] View and Templating
    - [ ] Review Processors (e.g., IfProcessor) for safety and predictable evaluation semantics. 
    - [ ] Add template linting step and cached view invalidation strategy. 
    - [ ] Ensure compiled view cache is not committed and is purged on deploy; update .gitignore if necessary.

14. [ ] Queue and Async Processing
    - [ ] Define interfaces and contracts for queue-worker; add retry and backoff strategies. 
    - [ ] Add idempotency guards for jobs and visibility timeouts. 
    - [ ] Provide metrics and DLQ handling documentation.

15. [ ] Testing Strategy (Pest)
    - [ ] Standardize test namespaces and file layout; ensure Tests mirror src structure. 
    - [ ] Add factories/fixtures for common entities and a Faker-based generator. 
    - [ ] Add integration tests for critical flows (auth, payments, persistence). 
    - [ ] Add browser/E2E tests (Cypress/Selenium) for top user journeys (optional but recommended). 
    - [ ] Establish coverage thresholds per package and enforce in CI.

16. [ ] Developer Experience
    - [ ] Update Getting Started docs and ensure Docker build.sh and docker-compose flows are reliable across platforms. 
    - [ ] Provide make targets or composer scripts for common tasks (cs, cs-fix, phpstan, pest, reload). 
    - [ ] Create troubleshooting docs for Docker/DNS/cache issues; link from README. 
    - [ ] Add local development data seeding scripts and reset commands.

17. [ ] Documentation
    - [ ] Consolidate scattered docs and backups (backups/docs-backup-*/), migrate relevant content into docs/. 
    - [ ] Add architecture decision records (ADRs) for key choices (DI, caching, WAF, templating). 
    - [ ] Auto-generate API docs where feasible and publish via the existing /api/docs endpoints. 
    - [ ] Keep README concise and link to deeper docs; add contribution guidelines cross-links.

18. [ ] Code Hygiene and Consistency
    - [ ] Eliminate dead code, unused classes, and outdated experimental files; add CI check for unused symbols if possible. 
    - [ ] Normalize naming (English vs. German in code identifiers; German is fine for test names per guidelines). 
    - [ ] Ensure immutability/read-only where appropriate (readonly, final) and avoid incidental mutation. 
    - [ ] Replace ad-hoc string constants with enums/ValueObjects where it improves safety. 
    - [ ] Ensure all public APIs have PHPDoc where types can’t fully express intent.

19. [ ] Deployment and Ops
    - [ ] Review deploy.sh steps for idempotency and error handling; add rollback steps. 
    - [ ] Add health checks to Docker Compose (web, php, db, redis) and readiness/liveness probes. 
    - [ ] Parameterize environment-specific config (staging/production) and secrets injection. 
    - [ ] Ensure asset build and cache warmups are part of deployment pipeline.

20. [ ] Concrete Fixes Identified During Review
    - [ ] Fix Cache key class typo in CacheFeatureFlagRepository::getCacheKey (use CacheKey, not Cachekey) and add a unit test to catch it. 
    - [ ] Verify negative caching marker ('NOT_FOUND') doesn’t collide with real values; prefer a dedicated NullObject or sentinel ValueObject. 
    - [ ] Audit src/Framework/View/cache/* and similar generated artifacts into .gitignore and remove from repo if committed.

21. [ ] Monitoring and Alerting
    - [ ] Add basic alerting for error rates, latency, and resource saturation. 
    - [ ] Create runbooks for on-call responses and link them from docs/operations.

22. [ ] Accessibility and Internationalization (Optional but Valuable)
    - [ ] Add A11y checks for rendered views and components. 
    - [ ] Formalize i18n/l10n strategy for user-facing content.

23. [ ] Risk Register and Backlog Grooming
    - [ ] Maintain a living risk register (security, data loss, availability) and mitigation tasks. 
    - [ ] Review this checklist quarterly and update priorities.
