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

@@ -8,29 +8,38 @@ use App\Framework\Cache\Cache;
use App\Framework\DI\Container;
use App\Framework\DI\Initializer;
use App\Framework\RateLimit\Storage\CacheStorage;
use App\Framework\RateLimit\Storage\StorageInterface;
use App\Framework\SlidingWindow\SlidingWindowFactory;
final readonly class RateLimiterInitializer
{
public function __construct(
private Container $container
) {
}
#[Initializer]
public function initialize(Container $container): void
public function createStorageInterface(): StorageInterface
{
// Register SlidingWindow-based rate limiter
$container->bind(SlidingWindowRateLimiter::class, function (Container $container) {
$cache = $container->get(Cache::class);
$windowFactory = new SlidingWindowFactory($cache);
$cache = $this->container->get(Cache::class);
return new SlidingWindowRateLimiter($windowFactory);
});
return new CacheStorage($cache);
}
// Register legacy rate limiter for backwards compatibility
$container->bind(RateLimiter::class, function (Container $container) {
$cache = $container->get(Cache::class);
#[Initializer]
public function createRateLimiter(): RateLimiter
{
$storage = $this->container->get(StorageInterface::class);
return new RateLimiter(new CacheStorage($cache));
});
return new RateLimiter($storage);
}
// Alias for default rate limiter (use SlidingWindow version)
$container->bind('rate_limiter', fn (Container $container) => $container->get(SlidingWindowRateLimiter::class));
#[Initializer]
public function createSlidingWindowRateLimiter(): SlidingWindowRateLimiter
{
$cache = $this->container->get(Cache::class);
$windowFactory = new SlidingWindowFactory($cache);
return new SlidingWindowRateLimiter($windowFactory);
}
}