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

@@ -0,0 +1,75 @@
<?php
declare(strict_types=1);
namespace App\Domain\Vault\Migrations;
use App\Framework\Database\Migration\Migration;
use App\Framework\Database\Schema\Blueprint;
use App\Framework\Database\Schema\Schema;
/**
* Create Vault tables for secure secrets storage
*/
final class CreateVaultTables extends Migration
{
public function up(Schema $schema): void
{
// Main Vault Secrets Table
$schema->create('vault_secrets', function (Blueprint $table) {
$table->char('id', 36)->primary();
$table->string('secret_key', 255)->unique();
$table->text('encrypted_value');
$table->string('encryption_nonce', 255);
$table->integer('encryption_version')->default(1);
$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent()->onUpdateCurrent();
$table->string('created_by', 255)->nullable();
$table->string('updated_by', 255)->nullable();
$table->integer('access_count')->default(0);
$table->timestamp('last_accessed_at')->nullable();
$table->index('secret_key');
$table->index('updated_at');
});
// Vault Audit Log
$schema->create('vault_audit_log', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('secret_key', 255);
$table->enum('action', ['read', 'write', 'delete', 'rotate', 'export']);
$table->string('user_id', 255)->nullable();
$table->string('ip_address', 45)->nullable();
$table->text('user_agent')->nullable();
$table->boolean('success')->default(true);
$table->text('error_message')->nullable();
$table->timestamp('timestamp')->useCurrent();
$table->index('secret_key');
$table->index('action');
$table->index('timestamp');
$table->index('user_id');
});
// Encryption Key Versions
$schema->create('vault_encryption_keys', function (Blueprint $table) {
$table->increments('id');
$table->integer('version')->unique();
$table->string('key_hash', 255);
$table->string('algorithm', 50)->default('libsodium');
$table->timestamp('created_at')->useCurrent();
$table->timestamp('rotated_at')->nullable();
$table->boolean('is_active')->default(true);
$table->index('version');
$table->index('is_active');
});
}
public function down(Schema $schema): void
{
$schema->dropIfExists('vault_encryption_keys');
$schema->dropIfExists('vault_audit_log');
$schema->dropIfExists('vault_secrets');
}
}