mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
docs: multi-modality rebrand, 2.0 architecture accuracy, and full OpenAPI coverage (#254)
* docs: rebrand from image-only to multi-modality across docs and metadata SnapOtter expanded from image-only to 157 tools across 5 modalities (image, video, audio, document/PDF, data). Update all product-level copy, metadata, and i18n that still framed it as an image-only tool. - README, package.json, root llms.txt: multi-modality framing, 157 tools - OpenAPI info + tags, generated /llms.txt tagline (docs.ts) - VitePress docs site: hero, getting-started, architecture, security, deployment, configuration, developer, supported-formats - i18n: 10 product keys across all 21 locales (hero, app description, privacy notes, AI features, progress messages, getting-started) - web/demo/landing meta + privacy copy, COMMUNITY_GUIDE, .env.example Stale tool counts (53/50+/52/70+/35) corrected to 157 throughout. Database/container deployment claims left unchanged (out of scope). * docs: fix stale post-rebrand test assertions and README language list - tests/e2e-docs/homepage.spec.ts: assert the current docs homepage (file toolkit, 157 tools, 5 modalities) instead of the old image-only strings - tests/unit/api/docs-route.test.ts: sync the reproduced llms.txt tagline with docs.ts - README.md: 21 languages with the correct list (add Swedish and Chinese Traditional, drop Czech which is not supported) * docs: correct 2.0 architecture references (Postgres 17 + Redis 8, 3-container stack) The docs and metadata still described the 1.x stack (SQLite, single container, p-queue). Update them to the current 2.0 reality. - README: replace the broken single-container `docker run` quick-start with the real Docker Compose stack (app + Postgres 17 + Redis 8); fix the "no Redis, no Postgres" feature bullet - package.json: description no longer claims a single container - apps/docs: rewrite database.md for Postgres; configuration.md DB_PATH -> DATABASE_URL + REDIS_URL; architecture.md SQLite/p-queue/better-sqlite3 -> Postgres/BullMQ/pg and add media-engine + doc-engine; developer/security/deployment/docker-tags/getting-started/contributing compose examples now include postgres + redis; index.md + api/ai.md AI count 16 -> 19 - SECURITY.md: Drizzle (SQLite) -> (PostgreSQL) - landing: enterprise/FeatureHighlights single-container wording; TrustSignals/ToolGrid 150+ -> 157 (dynamic); Pricing/FAQ 15 -> 19 AI tools * docs(api): document all video, audio, document, and data tool endpoints in OpenAPI The spec covered only image tools; the Scalar UI and the generated /llms.txt and /llms-full.txt inherited that gap. Add the 104 missing tool endpoints so the API docs match the code. - Video: 29 endpoints (most long/async; auto-subtitles is AI) - Audio: 17 (transcribe-audio is AI) - Document/PDF: 36 (ocr-pdf is AI; conversions are long/async) - Data: 10 - Image: 12 newer tools (background-replace, blur-background AI; histogram/lqip-placeholder/sprite-sheet custom responses; barcode-generate uses a JSON body) Each schema is derived from the tool's Zod validator and executionHint (fast -> 200, long -> 202+SSE, AI adds 501 FeatureNotInstalledError, multi-file inputs as arrays), referencing the existing shared schemas. Tool path entries: 64 -> 168. Spec parses as valid YAML with no duplicate paths and only known $refs.
This commit is contained in:
@@ -163,7 +163,7 @@ const aiPillColors = [
|
||||
Fits your infrastructure
|
||||
</h3>
|
||||
<p class="mt-4 text-base leading-relaxed text-muted">
|
||||
One Docker Compose stack with Postgres and Redis bundled in. Deploy on Kubernetes,
|
||||
One Docker Compose stack: app, Postgres, and Redis. Deploy on Kubernetes,
|
||||
bare metal, or cloud VMs. ARM and x86 architectures. Works in air-gapped and classified
|
||||
environments with zero internet dependency.
|
||||
</p>
|
||||
|
||||
@@ -41,7 +41,7 @@ const checkIcon =
|
||||
"Unlimited usage, no rate limits",
|
||||
"Full REST API with OpenAPI docs",
|
||||
"Pipeline automation & batch processing",
|
||||
"15 local AI models",
|
||||
"19 local AI tools",
|
||||
"Multi-user with role-based access",
|
||||
"21 languages",
|
||||
"Docker, Kubernetes, bare metal",
|
||||
|
||||
@@ -35,7 +35,7 @@ function renderIcon(iconName: string): string {
|
||||
<section class="bg-background-alt px-6 py-20 md:py-28" id="features">
|
||||
<SectionHeading
|
||||
title="One platform. Every file tool."
|
||||
subtitle="Browse 150+ self-hosted tools across image, video, audio, documents, and data."
|
||||
subtitle={`Browse ${toolCount} self-hosted tools across image, video, audio, documents, and data.`}
|
||||
/>
|
||||
|
||||
<div class="mx-auto max-w-6xl">
|
||||
|
||||
@@ -41,7 +41,7 @@ const pullsDisplay =
|
||||
|
||||
const stats = [
|
||||
{
|
||||
value: "150+",
|
||||
value: "157",
|
||||
label: "Processing Tools",
|
||||
sublabel: "Across 5 file modalities",
|
||||
},
|
||||
|
||||
@@ -134,7 +134,7 @@ const comparisonRows = [
|
||||
{
|
||||
label: "AI Models",
|
||||
cloud: "External API calls (OpenAI, etc.)",
|
||||
self: "15 local models, no API keys",
|
||||
self: "19 local AI tools, no API keys",
|
||||
},
|
||||
{
|
||||
label: "Customization",
|
||||
@@ -335,7 +335,7 @@ const xSvg =
|
||||
Deploy anywhere. Scale as needed.
|
||||
</h3>
|
||||
<p class="mt-4 text-base leading-relaxed text-muted">
|
||||
Single Docker container bundles everything: PostgreSQL, Redis, FFmpeg, LibreOffice, AI models. Deploy on Kubernetes with Helm charts, bare metal, or cloud VMs. ARM and x86 architectures. Air-gapped network support.
|
||||
One Docker Compose stack: app, PostgreSQL, and Redis, with FFmpeg, LibreOffice, and local AI models in the app image. Deploy on Kubernetes with Helm charts, bare metal, or cloud VMs. ARM and x86 architectures. Air-gapped network support.
|
||||
</p>
|
||||
</div>
|
||||
<div class="md:order-1">
|
||||
|
||||
@@ -28,7 +28,7 @@ const faqs = [
|
||||
{
|
||||
question: "What AI features are included?",
|
||||
answer:
|
||||
"SnapOtter includes 15 local AI models for background removal, upscaling, OCR, face detection, colorization, noise removal, photo restoration, and more. All models run on your hardware.",
|
||||
"SnapOtter includes 19 local AI tools for background removal, upscaling, OCR, transcription, face detection, colorization, noise removal, photo restoration, and more. All models run on your hardware.",
|
||||
},
|
||||
{
|
||||
question: "Does SnapOtter collect any analytics?",
|
||||
|
||||
@@ -21,7 +21,7 @@ const breadcrumbJsonLd = {
|
||||
|
||||
<Base
|
||||
title="Privacy Policy | SnapOtter"
|
||||
description="SnapOtter is self-hosted software. We do not process, store, or have access to your images or data. Learn about our privacy practices."
|
||||
description="SnapOtter is self-hosted software. We do not process, store, or have access to your files or data. Learn about our privacy practices."
|
||||
canonical="https://snapotter.com/privacy"
|
||||
>
|
||||
<Fragment slot="head">
|
||||
@@ -52,7 +52,7 @@ const breadcrumbJsonLd = {
|
||||
<h2 class="text-lg font-semibold text-foreground">Overview</h2>
|
||||
<p class="mt-3">
|
||||
SnapOtter is self-hosted software. We do not process, store, or have access to
|
||||
your images or data. This privacy policy covers the snapotter.com website and
|
||||
your files or data. This privacy policy covers the snapotter.com website and
|
||||
optional analytics within the software.
|
||||
</p>
|
||||
</section>
|
||||
@@ -76,7 +76,7 @@ const breadcrumbJsonLd = {
|
||||
<section class="reveal">
|
||||
<h2 class="text-lg font-semibold text-foreground">Self-Hosted Software</h2>
|
||||
<ul class="mt-3 list-disc space-y-2 pl-5">
|
||||
<li>All image processing happens entirely on your server.</li>
|
||||
<li>All file processing happens entirely on your server.</li>
|
||||
<li>No data is sent to SnapOtter or any third party.</li>
|
||||
<li>There is no telemetry by default.</li>
|
||||
</ul>
|
||||
|
||||
@@ -21,7 +21,7 @@ const breadcrumbJsonLd = {
|
||||
|
||||
<Base
|
||||
title="Terms and Conditions | SnapOtter"
|
||||
description="Terms governing your use of the SnapOtter website and self-hosted image processing software."
|
||||
description="Terms governing your use of the SnapOtter website and self-hosted file processing software."
|
||||
canonical="https://snapotter.com/terms"
|
||||
>
|
||||
<Fragment slot="head">
|
||||
|
||||
@@ -239,7 +239,7 @@ const collectionJsonLd = {
|
||||
Deploy all {toolCount} tools with one command
|
||||
</h2>
|
||||
<p class="mx-auto mt-4 max-w-lg text-muted">
|
||||
A single Docker container. No external services. Open source and free forever.
|
||||
One Docker Compose stack. No cloud services. Open source and free forever.
|
||||
</p>
|
||||
<div class="mt-8 flex flex-wrap justify-center gap-4">
|
||||
<a
|
||||
|
||||
Reference in New Issue
Block a user