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
+27
View File
@@ -0,0 +1,27 @@
<div class="wrap">
<article class="prose" style="margin-top:2.5rem">
<h1>Terms of Service</h1>
<p><em>Last updated: <?= date('F Y') ?></em></p>
<h2>Acceptable use</h2>
<p><?= esc(config('Site')->name) ?> provides media utilities. You agree to use them only for content you own or are permitted to process, and never to:</p>
<ul>
<li>circumvent DRM or technical protection measures;</li>
<li>access private or paid content without authorization;</li>
<li>infringe copyright or other rights of third parties;</li>
<li>upload malware or attempt to abuse the infrastructure.</li>
</ul>
<h2>Third-party platforms</h2>
<p>For platforms such as YouTube, downloading capability is provided for your own uploads and properly licensed material. You are responsible for complying with that platform's terms and applicable law. Features may be disabled by operators where required.</p>
<h2>No warranty</h2>
<p>Services are provided "as is" without warranties of any kind. Processing results depend on input quality; always keep originals of important files.</p>
<h2>Rate limits</h2>
<p>To keep the service fast for everyone, fair-use limits apply per IP address and session. Automated access requires an API token with its own quota.</p>
<h2>Contact</h2>
<p>Questions about these terms: see the <a href="/contact">contact page</a>.</p>
</article>
</div>