rspace-online/modules/photos/landing.ts

143 lines
5.7 KiB
TypeScript

/**
* Photos module landing page — rich content for rspace.online/rphotos
*/
export function renderLanding(): string {
return `
<!-- Hero -->
<div class="rl-hero">
<span class="rl-tagline">rPhotos</span>
<h1 class="rl-heading">(You)rPhotos, your moments.</h1>
<p class="rl-subtitle">Community Photo Commons</p>
<p class="rl-subtext">
Share memories with your community, powered by Immich.
Self-hosted, AI-organized, and privacy-first.
</p>
<div class="rl-cta-row">
<a href="https://demo.rspace.online/rphotos" class="rl-cta-primary" id="ml-primary">Browse Photos</a>
<a href="/create-space" class="rl-cta-secondary">Create a Space</a>
</div>
</div>
<!-- Features -->
<section class="rl-section">
<div class="rl-container">
<h2 class="rl-heading" style="text-align:center">What rPhotos Handles</h2>
<div class="rl-grid-4">
<div class="rl-card rl-card--center">
<div class="rl-icon-box">&#128247;</div>
<h3>Photo Gallery &amp; Albums</h3>
<p>Browse photos chronologically or by album. Collaborative albums let everyone in the space contribute.</p>
</div>
<div class="rl-card rl-card--center">
<div class="rl-icon-box">&#129302;</div>
<h3>AI-Powered Search</h3>
<p>Immich detects faces, objects, and scenes automatically. Search your library by what's in the photo.</p>
</div>
<div class="rl-card rl-card--center">
<div class="rl-icon-box">&#128101;</div>
<h3>Shared Community Albums</h3>
<p>Create shared albums for events, projects, or teams. Everyone in the space can view and add photos.</p>
</div>
<div class="rl-card rl-card--center">
<div class="rl-icon-box">&#128451;</div>
<h3>S3-Compatible Storage</h3>
<p>Photos stored on any S3-compatible backend. Self-hosted MinIO, Cloudflare R2, or AWS &mdash; your choice.</p>
</div>
</div>
</div>
</section>
<!-- How It Works -->
<section class="rl-section rl-section--alt">
<div class="rl-container">
<h2 class="rl-heading" style="text-align:center">How It Works</h2>
<div class="rl-grid-3">
<div class="rl-step">
<div class="rl-step__num">1</div>
<h3>Upload Your Photos</h3>
<p>Drop photos from any device. Bulk upload entire albums or individual shots.</p>
</div>
<div class="rl-step">
<div class="rl-step__num">2</div>
<h3>Organize into Albums</h3>
<p>Immich's AI detects faces and objects, sorting your photos into smart groups automatically.</p>
</div>
<div class="rl-step">
<div class="rl-step__num">3</div>
<h3>Share with Your Community</h3>
<p>Create shared albums for events, projects, or teams. Everyone in the space can contribute.</p>
</div>
</div>
</div>
</section>
<!-- Built on Open Source -->
<section class="rl-section">
<div class="rl-container">
<h2 class="rl-heading" style="text-align:center">Built on Open Source</h2>
<p class="rl-subtext" style="text-align:center">The libraries and tools that power rPhotos.</p>
<div class="rl-grid-3">
<div class="rl-card rl-card--center">
<div class="rl-icon-box">&#128248;</div>
<h3>Immich</h3>
<p>Self-hosted photo &amp; video management with AI-driven face detection, object recognition, and smart search.</p>
</div>
<div class="rl-card rl-card--center">
<div class="rl-icon-box">&#128451;</div>
<h3>PostgreSQL</h3>
<p>Rock-solid relational database for photo metadata, album organization, and user data.</p>
</div>
<div class="rl-card rl-card--center">
<div class="rl-icon-box">&#128293;</div>
<h3>Hono</h3>
<p>Ultrafast web framework for the API layer. Lightweight, type-safe, and runs on any JavaScript runtime.</p>
</div>
</div>
</div>
</section>
<!-- Your Data, Protected -->
<section class="rl-section rl-section--alt">
<div class="rl-container" style="text-align:center">
<h2 class="rl-heading">Your Data, Protected</h2>
<p class="rl-subtext">How rPhotos keeps your information safe.</p>
<div class="rl-grid-3">
<div class="rl-card rl-card--center">
<div class="rl-icon-box">&#128274;</div>
<h3>End-to-End Encryption</h3>
<span class="rl-badge">Coming Soon</span>
<p>All content encrypted before it leaves your device. Not even the server can read it.</p>
</div>
<div class="rl-card rl-card--center">
<div class="rl-icon-box">&#128373;</div>
<h3>Zero-Knowledge Architecture</h3>
<span class="rl-badge">Coming Soon</span>
<p>The server processes your requests without ever seeing your data in the clear.</p>
</div>
<div class="rl-card rl-card--center">
<div class="rl-icon-box">&#127968;</div>
<h3>Self-Hosted</h3>
<p>Run on your own infrastructure. Your server, your rules, your data.</p>
</div>
</div>
</div>
</section>
<!-- CTA -->
<section class="rl-section">
<div class="rl-container" style="text-align:center">
<h2 class="rl-heading">(You)rPhotos, your moments.</h2>
<p class="rl-subtext">Try the demo or create a space to get started.</p>
<div class="rl-cta-row">
<a href="https://demo.rspace.online/rphotos" class="rl-cta-primary">Browse Photos</a>
<a href="/create-space" class="rl-cta-secondary">Create a Space</a>
</div>
</div>
</section>
<div class="rl-back">
<a href="/">&larr; Back to rSpace</a>
</div>`;
}