Commit Graph

135 Commits

Author SHA1 Message Date
fc81379575 chore: Bootstrap fix 2025-10-31 10:35:35 +01:00
ba9d9bb882 test: trigger workflow after Actions activation 2025-10-31 03:11:25 +01:00
948305b7c9 test: trigger deployment workflow (non-markdown change) 2025-10-31 03:00:13 +01:00
e26eb2aa12 feat: CI/CD pipeline setup complete - Ansible playbooks updated, secrets configured, workflow ready 2025-10-31 01:39:24 +01:00
2a7b90312f chore(deploy): add prod env template, improve ansible deploy, prune old workflows
- Add deployment/ansible/templates/.env.production.j2 used by secrets playbook
- Enhance deploy-update.yml to read registry creds from vault or CI
- Update production-deploy workflow to pass registry credentials to Ansible
- Remove obsolete GitHub-style workflows under .gitea (conflicted naming)

Why: make the production pipeline executable end-to-end with Ansible and
consistent secrets handling; avoid legacy CI configs interfering.
2025-10-30 21:38:28 +01:00
d021c49906 fix(Docker): change ENV arg from 'prod' to 'production' to match actual ini filename 2025-10-29 23:26:45 +01:00
70e45fb56e fix(Discovery): Add comprehensive debug logging for router initialization
- Add initializer count logging in DiscoveryServiceBootstrapper
- Add route structure analysis in RouterSetup
- Add request parameter logging in HttpRouter
- Update PHP production config for better OPcache handling
- Fix various config and error handling improvements
2025-10-27 22:23:18 +01:00
e326e3d6c6 fix(Middleware): Disable RateLimitMiddleware temporarily
- Commented out RateLimitMiddleware in MiddlewareManager
- RateLimit system not fully implemented yet (missing Storage, Initializer)
- Added ENV_SETUP.md documentation for .env file structure
- Website was returning HTTP 500 due to missing StorageInterface binding

TODO: Implement complete RateLimit system with Storage interface and DI bindings

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 19:29:38 +01:00
5d9258d8c3 chore: RateLimiter fixes 2025-10-27 19:23:22 +01:00
8ef2b8547d chore: remove retundant .env files. some additional fixes 2025-10-27 19:07:12 +01:00
cae2d0715c chore: update deployment 2025-10-27 13:15:06 +01:00
66fbd64b5d chore: Update Priority of ProductionSecurityMiddleware.php 2025-10-27 12:36:00 +01:00
093d3df92d chore: Update Usage of IpAddress Value Object 2025-10-27 12:31:57 +01:00
9a8dd07c62 chore: make postgresql default 2025-10-27 12:31:37 +01:00
0cf809c1ef chore: update error production.view.php template 2025-10-27 12:30:56 +01:00
7b77b580d3 fix(InitializerProcessor): Add error logging to registerLazyService method
- Add error logging for lazy service registration failures
- Log return_type, class, method, and full exception details
- Helps diagnose why DatabasePlatform initializer registration fails silently
2025-10-27 10:17:15 +01:00
ddeca45a78 fix(InitializerProcessor): Add error logging for failed initializer registration
- Add LogContext import for structured error logging
- Replace silent exception catching with detailed error logging
- Log class, method, return_type, and full exception details
- Helps diagnose DatabasePlatform initializer issues in production
- Maintains application stability by skipping failed initializers
2025-10-27 10:03:29 +01:00
c8b47e647d feat(Docker): Upgrade to PHP 8.5.0RC3 with native ext-uri support
BREAKING CHANGE: Requires PHP 8.5.0RC3

Changes:
- Update Docker base image from php:8.4-fpm to php:8.5.0RC3-fpm
- Enable ext-uri for native WHATWG URL parsing support
- Update composer.json PHP requirement from ^8.4 to ^8.5
- Add ext-uri as required extension in composer.json
- Move URL classes from Url.php85/ to Url/ directory (now compatible)
- Remove temporary PHP 8.4 compatibility workarounds

Benefits:
- Native URL parsing with Uri\WhatWg\Url class
- Better performance for URL operations
- Future-proof with latest PHP features
- Eliminates PHP version compatibility issues
2025-10-27 09:31:28 +01:00
799f74f00a feat(Production): Mount application code in PHP containers for live deployment
- Mount /home/deploy/michaelschiemer/current:/var/www/html:ro in php and queue-worker services
- This allows deployment via rsync without requiring Docker image rebuild
- Storage volume still mounted as writable overlay for runtime data
- Change default DB_DRIVER to 'pgsql' for PostgreSQL

Deployment Architecture:
- rsync deploys code to /home/deploy/michaelschiemer/releases/{timestamp}
- Atomic symlink switch to /home/deploy/michaelschiemer/current
- PHP containers mount current/ for immediate code updates
- No rebuild needed - code changes are live after symlink switch

Benefits:
- Faster deployments (no Docker rebuild)
- Code changes reflected immediately
- Zero-downtime releases
- Easy rollback via symlink change
2025-10-26 23:30:43 +01:00
3b623e7afb feat(Deployment): Integrate Ansible deployment via PHP deployment pipeline
- Create AnsibleDeployStage using framework's Process module for secure command execution
- Integrate AnsibleDeployStage into DeploymentPipelineCommands for production deployments
- Add force_deploy flag support in Ansible playbook to override stale locks
- Use PHP deployment module as orchestrator (php console.php deploy:production)
- Fix ErrorAggregationInitializer to use Environment class instead of $_ENV superglobal

Architecture:
- BuildStage → AnsibleDeployStage → HealthCheckStage for production
- Process module provides timeout, error handling, and output capture
- Ansible playbook supports rollback via rollback-git-based.yml
- Zero-downtime deployments with health checks
2025-10-26 14:08:07 +01:00
a90263d3be fix(ErrorAggregation): use Environment class instead of $_ENV superglobal
- Replace all $_ENV references with Environment::get() calls
- Fixes ErrorAggregatorInterface binding in production where $_ENV is not populated
- Environment class properly loads from .env file which is mounted in containers
2025-10-26 13:53:15 +01:00
fc3d7e6357 feat(Production): Complete production deployment infrastructure
- Add comprehensive health check system with multiple endpoints
- Add Prometheus metrics endpoint
- Add production logging configurations (5 strategies)
- Add complete deployment documentation suite:
  * QUICKSTART.md - 30-minute deployment guide
  * DEPLOYMENT_CHECKLIST.md - Printable verification checklist
  * DEPLOYMENT_WORKFLOW.md - Complete deployment lifecycle
  * PRODUCTION_DEPLOYMENT.md - Comprehensive technical reference
  * production-logging.md - Logging configuration guide
  * ANSIBLE_DEPLOYMENT.md - Infrastructure as Code automation
  * README.md - Navigation hub
  * DEPLOYMENT_SUMMARY.md - Executive summary
- Add deployment scripts and automation
- Add DEPLOYMENT_PLAN.md - Concrete plan for immediate deployment
- Update README with production-ready features

All production infrastructure is now complete and ready for deployment.
2025-10-25 19:18:37 +02:00
caa85db796 fix: remove static keyword from Saga getName() methods
AbstractSaga::getName() is non-static, but child classes
(UserOnboardingSaga, OrderFulfillmentSaga) tried to override it as static.

Also fixed ConsoleCommand usage:
- ConsoleCommand is an attribute, not an interface
- SagaCommands and ReplayCommands now use #[ConsoleCommand] attributes
- All command methods properly annotated
2025-10-05 23:19:47 +02:00
5050c7d73a 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
2025-10-05 11:05:04 +02:00
887847dde6 refactor: reorganize project structure for better maintainability
- Move 45 debug/test files from root to organized scripts/ directories
- Secure public/ directory by removing debug files (security improvement)
- Create structured scripts organization:
  • scripts/debug/      (20 files) - Framework debugging tools
  • scripts/test/       (18 files) - Test and validation scripts
  • scripts/maintenance/ (5 files) - Maintenance utilities
  • scripts/dev/         (2 files) - Development tools

Security improvements:
- Removed all debug/test files from public/ directory
- Only production files remain: index.php, health.php

Root directory cleanup:
- Reduced from 47 to 2 PHP files in root
- Only essential production files: console.php, worker.php

This improves:
 Security (no debug code in public/)
 Organization (clear separation of concerns)
 Maintainability (easy to find and manage scripts)
 Professional structure (clean root directory)
2025-10-05 10:59:15 +02:00
03e5188644 Fix Discovery system context-dependent caching issue
The Discovery system was creating separate caches for WEB vs CLI contexts,
causing RequestFactory #[Initializer] to be missing in WEB context and
leading to 500 errors due to Request interface binding failures.

Changes:
- Remove execution context from Discovery cache keys
- Ensure consistent Discovery results across WEB and CLI contexts
- WEB and CLI now share same Discovery cache (535 items vs 369/535 split)
- RequestFactory consistently discovered in both contexts

Root cause: Context-dependent cache keys caused:
- CLI: discovery:full_{hash}_cli-script
- WEB: discovery:full_{hash}_web

Fixed: Both contexts now use discovery:full_{hash}

Resolves: #21 DI Container Request Interface Binding
Resolves: #18 Discovery WEB vs CLI Context differences
2025-09-13 00:36:07 +02:00
e30753ba0e fix: resolve RedisCache array offset error and improve discovery diagnostics
- Fix RedisCache driver to handle MGET failures gracefully with fallback
- Add comprehensive discovery context comparison debug tools
- Identify root cause: WEB context discovery missing 166 items vs CLI
- WEB context missing RequestFactory class entirely (52 vs 69 commands)
- Improved exception handling with detailed binding diagnostics
2025-09-12 20:05:18 +02:00
8040d3e7a5 Fix: Enhance exception handling in DefaultContainer with detailed diagnostics
- Add comprehensive error messages showing dependency resolution chains
- Include available bindings in error output for troubleshooting
- Fix compatibility with framework's WrappedReflectionClass system
- Use proper isInstantiable() method instead of native reflection methods
- Provide detailed binding analysis for missing dependencies
- Include similar binding suggestions for interface resolution issues

This resolves the 500 errors by providing proper diagnostics when DI container
cannot resolve dependencies, helping identify missing bindings or configuration issues.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 18:37:58 +02:00
8fe569a3df CRITICAL SECURITY: Disable debug output in production
- Add production environment configuration
- Force disable performance debug middleware in production
- Add ProductionSecurityMiddleware for route protection
- Update PerformanceServiceInitializer to check environment
- Add deployment script for production
- Update docker-compose with environment variables

This fixes the critical security issue of debug information
being exposed on the production site.
2025-09-12 17:10:42 +02:00
9b74ade5b0 feat: Fix discovery system critical issues
Resolved multiple critical discovery system issues:

## Discovery System Fixes
- Fixed console commands not being discovered on first run
- Implemented fallback discovery for empty caches
- Added context-aware caching with separate cache keys
- Fixed object serialization preventing __PHP_Incomplete_Class

## Cache System Improvements
- Smart caching that only caches meaningful results
- Separate caches for different execution contexts (console, web, test)
- Proper array serialization/deserialization for cache compatibility
- Cache hit logging for debugging and monitoring

## Object Serialization Fixes
- Fixed DiscoveredAttribute serialization with proper string conversion
- Sanitized additional data to prevent object reference issues
- Added fallback for corrupted cache entries

## Performance & Reliability
- All 69 console commands properly discovered and cached
- 534 total discovery items successfully cached and restored
- No more __PHP_Incomplete_Class cache corruption
- Improved error handling and graceful fallbacks

## Testing & Quality
- Fixed code style issues across discovery components
- Enhanced logging for better debugging capabilities
- Improved cache validation and error recovery

Ready for production deployment with stable discovery system.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-13 12:04:17 +02:00
66f7efdcfc Fix cache directory paths for production deployment
- Change FileCache CACHE_PATH from relative to absolute path
- Change FileCacheCleaner cache folder to absolute path
- Resolves read-only file system issue in production containers
- Cache now uses writable /var/www/html/storage/cache location
2025-08-12 18:37:24 +02:00
55a330b223 Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug
- Add DISCOVERY_SHOW_PROGRESS=true
- Temporary changes for debugging InitializerProcessor fixes on production
2025-08-11 20:13:26 +02:00
cec1b42da3 chore: .gitea folder and RoutingMiddleware.php 2025-07-17 19:13:47 +02:00
64a7051137 chore: complete update 2025-07-17 16:24:20 +02:00
899227b0a4 chore: lots of changes 2025-05-24 07:09:22 +02:00