style(landing): revise feature copy and docker instructions for clarity
Update landing page descriptions to emphasize native file rendering and layout-aware parsing. Adjust Docker quick start instructions to remove redundant volume mount and highlight required environment variables for self-hosting.
This commit is contained in:
parent
535d562a0b
commit
0b1e293638
2 changed files with 17 additions and 13 deletions
|
|
@ -41,7 +41,6 @@ docker run --name openreader \
|
|||
-p 3003:3003 \
|
||||
-p 8333:8333 \
|
||||
-v openreader_docstore:/app/docstore \
|
||||
-v /path/to/your/library:/app/docstore/library:ro \
|
||||
-e API_BASE=http://host.docker.internal:8880/v1 \
|
||||
-e API_KEY=none \
|
||||
-e BASE_URL=http://localhost:3003 \
|
||||
|
|
@ -55,7 +54,6 @@ What this command enables:
|
|||
- `-p 3003:3003`: exposes the OpenReader web app/API.
|
||||
- `-p 8333:8333`: exposes embedded SeaweedFS S3 endpoint for direct browser presigned upload/download.
|
||||
- `-v openreader_docstore:/app/docstore`: persists SQLite metadata, SeaweedFS blob data, and migration/runtime state.
|
||||
- `-v /path/to/your/library:/app/docstore/library:ro`: mounts a read-only importable library source.
|
||||
- `-e API_BASE=...` / `-e API_KEY=...`: **first-boot seed only.** On the first container start, these are auto-migrated into a `default-openai` admin shared provider stored in the DB (key encrypted at rest). After that, the running app no longer reads them — manage the provider from **Settings → Admin → Shared providers**. See [Admin Panel](./configure/admin-panel).
|
||||
- `-e BASE_URL=...` and `-e AUTH_SECRET=...`: required for v4+ auth/session startup.
|
||||
- `-e ADMIN_EMAILS=...`: (optional, requires auth) comma-separated emails auto-promoted to admin. Admins see the **Admin** tab in Settings.
|
||||
|
|
|
|||
|
|
@ -91,9 +91,10 @@ export default async function LandingPage() {
|
|||
|
||||
<p className="public-hero-copy">
|
||||
OpenReader turns EPUB, PDF, TXT, Markdown, and DOCX into a
|
||||
synchronized read-along surface, with genuine text-to-speech,
|
||||
word-level highlighting, and audiobook export. It’s open
|
||||
source, and entirely yours to self-host.
|
||||
synchronized read-along surface, reading your original file in a
|
||||
native viewer with genuine text-to-speech, word-level
|
||||
highlighting, and audiobook export. It’s open source, and
|
||||
entirely yours to self-host.
|
||||
</p>
|
||||
|
||||
<div className="public-actions">
|
||||
|
|
@ -221,9 +222,9 @@ export default async function LandingPage() {
|
|||
<span className="public-step-num">03</span>
|
||||
<h3>Read, listen, export</h3>
|
||||
<p>
|
||||
Follow word-level highlighting as it plays, pick up where you
|
||||
left off on any device, and export a chaptered m4b or mp3
|
||||
audiobook for the road.
|
||||
Follow word-level highlighting right on the original page as it
|
||||
plays, pick up where you left off on any device, and export a
|
||||
chaptered m4b or mp3 audiobook for the road.
|
||||
</p>
|
||||
</li>
|
||||
</ol>
|
||||
|
|
@ -240,12 +241,14 @@ export default async function LandingPage() {
|
|||
|
||||
<div className="public-features">
|
||||
<article className="public-feature public-feature-wide">
|
||||
<span className="public-feature-kicker">Parsing</span>
|
||||
<h3>Layout-aware PDF understanding</h3>
|
||||
<span className="public-feature-kicker">Formats</span>
|
||||
<h3>Native EPUB and PDF, kept intact</h3>
|
||||
<p>
|
||||
PP-DocLayoutV3 (ONNX) detects structured blocks, stitches
|
||||
content across pages, and aligns highlights to real geometry,
|
||||
so even dense, multi-column PDFs read in the right order.
|
||||
Your file renders in a built-in EPUB and PDF reader, never
|
||||
flattened to plain text. Layout-aware parsing (PP-DocLayoutV3,
|
||||
ONNX) maps the structure underneath, so read-along highlighting
|
||||
follows the true reading order, even in dense, multi-column
|
||||
PDFs.
|
||||
</p>
|
||||
</article>
|
||||
|
||||
|
|
@ -346,10 +349,13 @@ export default async function LandingPage() {
|
|||
<span className="public-term-prompt">$</span> docker run --name openreader \{'\n'}
|
||||
{' '}-p <span className="public-term-accent">3003:3003</span> -p{' '}
|
||||
<span className="public-term-accent">8333:8333</span> \{'\n'}
|
||||
{' '}-v <span className="public-term-accent">openreader_docstore:/app/docstore</span> \{'\n'}
|
||||
{' '}-e BASE_URL=
|
||||
<span className="public-term-accent">http://localhost:3003</span> \{'\n'}
|
||||
{' '}-e AUTH_SECRET=
|
||||
<span className="public-term-accent">$(openssl rand -hex 32)</span> \{'\n'}
|
||||
{' '}-e ADMIN_EMAILS=
|
||||
<span className="public-term-accent">you@example.com</span> \{'\n'}
|
||||
{' '}ghcr.io/richardr1126/openreader:latest{'\n'}
|
||||
{'\n'}
|
||||
<span className="public-term-comment"># open the reading room</span>
|
||||
|
|
|
|||
Loading…
Reference in a new issue