Present STUDIO

Public technical document · package private-presentations · v0.4.4

Live app: https://earthlab.space/p/

1. Product overview

Present STUDIO is a self-hosted file publishing service for PDF, HTML (including ZIP bundles), and text documents (TXT, CSV, MD, JSON, XML, YAML, LOG, TSV).

Each published file receives a share URL:

https://earthlab.space/p/p/{slug}

Access is controlled per file by optional view password, landing visibility, and a shared admin session. There is no multi-user RBAC — one ADMIN_PASSWORD protects the upload panel at /p/admin.

Site-wide access to /p can be enabled or disabled from the earthlab admin panel under Private Service Status → Present STUDIO.

2. Architecture

LayerTechnology
RuntimeNode.js 20+ / Fastify 5
DatabaseSQLite (better-sqlite3)
StorageDATA_DIR/uploads/{uuid}/
AuthHMAC-signed cookies + bcrypt passwords
ViewersPDF.js canvas, HTML iframe + deck bridge, doc viewer
DeployDocker service behind earthlab nginx at /p/

3. HTTP routes (under /p)

Public

Admin (requires admin_session)

4. Limits (defaults)

LimitValueEnv var
Admin upload per file50 MBMAX_UPLOAD_BYTES
Quick upload per file2 MBQUICK_UPLOAD_MAX_BYTES
Total storage500 MBMAX_STORAGE_BYTES (0 = unlimited)
Unlock rate5 / min / IP / slugcode constant

5. Production configuration

Variableearthlab value
BASE_URLhttps://earthlab.space/p
ROOT_PATH/p
BRAND_NAMEPresent STUDIO
EARTHLAB_GATE_URLhttp://app:3000/api/internal/exposure/presentations
DATA_DIR/app/data (Docker volume)

Back up presentations.db, uploads/, and app-settings.json together.

6. Security notes

© Present STUDIO — technical public document for earthlab.space deployment.