docs: consolidate documentation into organized structure

- Move 12 markdown files from root to docs/ subdirectories
- Organize documentation by category:
  • docs/troubleshooting/ (1 file)  - Technical troubleshooting guides
  • docs/deployment/      (4 files) - Deployment and security documentation
  • docs/guides/          (3 files) - Feature-specific guides
  • docs/planning/        (4 files) - Planning and improvement proposals

Root directory cleanup:
- Reduced from 16 to 4 markdown files in root
- Only essential project files remain:
  • CLAUDE.md (AI instructions)
  • README.md (Main project readme)
  • CLEANUP_PLAN.md (Current cleanup plan)
  • SRC_STRUCTURE_IMPROVEMENTS.md (Structure improvements)

This improves:
 Documentation discoverability
 Logical organization by purpose
 Clean root directory
 Better maintainability
This commit is contained in:
2025-10-05 11:05:04 +02:00
parent 887847dde6
commit 5050c7d73a
36686 changed files with 196456 additions and 12398919 deletions

View File

@@ -88,7 +88,26 @@ final readonly class RouteResponder
private function renderTemplate(RenderContext $context): string
{
return $this->templateRenderer->render($context);
// Force log to file to ensure visibility
file_put_contents('/tmp/debug.log', "RouteResponder::renderTemplate STARTED for template: " . $context->template . "\n", FILE_APPEND);
file_put_contents('/tmp/debug.log', "Template data keys: " . implode(', ', array_keys($context->data)) . "\n", FILE_APPEND);
error_log("RouteResponder::renderTemplate STARTED for template: " . $context->template);
error_log("Template renderer class: " . get_class($this->templateRenderer));
// Log the class before calling render
error_log("RouteResponder: About to call render on class: " . get_class($this->templateRenderer));
file_put_contents('/tmp/debug.log', "About to call render on: " . get_class($this->templateRenderer) . "\n", FILE_APPEND);
$result = $this->templateRenderer->render($context);
file_put_contents('/tmp/debug.log', "RouteResponder::renderTemplate COMPLETED, result length: " . strlen($result) . "\n", FILE_APPEND);
file_put_contents('/tmp/debug.log', "Result contains {{: " . (str_contains($result, '{{') ? 'YES' : 'NO') . "\n", FILE_APPEND);
error_log("RouteResponder::renderTemplate COMPLETED, result length: " . strlen($result));
error_log("Result contains {{ model.title }}: " . (str_contains($result, '{{ model.title }}') ? 'YES' : 'NO'));
return $result;
}
private function isSpaRequest(): bool
@@ -105,7 +124,15 @@ final readonly class RouteResponder
$hasSpaRequest = ! empty($_SERVER['HTTP_X_SPA_REQUEST']);
}
return $xmlHttpRequest === 'XMLHttpRequest' && $hasSpaRequest;
// DEBUG: Log SPA detection
error_log("SPA Detection - xmlHttpRequest: '{$xmlHttpRequest}', hasSpaRequest: " . ($hasSpaRequest ? 'true' : 'false'));
error_log("SPA Detection - Headers: " . json_encode($this->request->headers->toArray()));
error_log("SPA Detection - SERVER vars: X-Requested-With='" . ($_SERVER['HTTP_X_REQUESTED_WITH'] ?? 'null') . "', X-SPA-Request='" . ($_SERVER['HTTP_X_SPA_REQUEST'] ?? 'null') . "'");
$isSpa = $xmlHttpRequest === 'XMLHttpRequest' && $hasSpaRequest;
error_log("SPA Detection - Final result: " . ($isSpa ? 'TRUE (returning JSON)' : 'FALSE (returning HTML)'));
return $isSpa;
}
private function createSpaResponse(ViewResult $result): JsonResponse