Toolvana: production-ready media tools platform (CodeIgniter 4)

- 134-tool registry with programmatic SEO (unique titles/H1/descriptions,
  JSON-LD graphs, sitemap index, canonical 301 enforcement via required filter)
- DB-backed job queue (SKIP LOCKED) with drivers: Ffmpeg, Images (GD),
  Pdf (qpdf/gs/poppler), Youtube (thumbnails), Qr (server-side PNG)
- Security: SSRF guard, MIME validation, rate limits, API-key auth,
  bcrypt admin login, security headers
- Admin panel: dashboard, tools/categories/guides CRUD, SEO audit,
  analytics, job inspector with retry, system health, feature flags
- Docker deployment (nginx + web/api FPM pools + scalable workers),
  PHPUnit suite (19 tests / 1139 assertions), PWA manifest + service worker
This commit is contained in:
deepseek
2026-08-23 07:10:30 +00:00
commit beaf0e1f37
217 changed files with 19619 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
<?= view('partials/admin_nav') ?>
<h1 style="font-size:1.7rem;margin-bottom:1rem">Settings &amp; feature flags</h1>
<form method="post" action="/admin/settings" class="tool-panel" style="max-width:640px">
<?= csrf_field() ?>
<?php foreach ($flags as $key => $label): ?>
<label style="display:flex;gap:.7rem;align-items:flex-start;padding:.7rem 0;border-bottom:1px solid #f2f2f5">
<input type="checkbox" name="<?= esc($key) ?>" value="1" <?= ($values[$key] ?? '')==='1' ? 'checked' : '' ?>>
<span style="font-size:.93rem"><?= esc($label) ?></span>
</label>
<?php endforeach ?>
<div style="margin-top:1rem">
<label for="retention_hours" style="font-size:.85rem;font-weight:650">File retention override (hours, 172)</label>
<input id="retention_hours" name="retention_hours" type="number" min="1" max="72" placeholder="site default"
value="<?= esc($values['retention_hours'] ?? '') ?>" style="border:1.5px solid var(--ink-300);border-radius:9px;padding:.5rem .6rem;width:140px">
</div>
<button class="btn-primary" type="submit" style="margin-top:1.2rem">Save settings</button>
</form>