bugfix on service discovery, and rework pf the dashboard
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { useState, useEffect, useCallback } from 'react';
|
||||
import { RulesEditor } from './components/RulesEditor';
|
||||
import ServiceNav from './components/ServiceNav';
|
||||
|
||||
interface Stats {
|
||||
fileCount: number;
|
||||
@@ -37,6 +38,7 @@ function App() {
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
const [refreshing, setRefreshing] = useState(false);
|
||||
const [showRules, setShowRules] = useState(false);
|
||||
const [showSetup, setShowSetup] = useState(false);
|
||||
|
||||
const fetchData = useCallback(async () => {
|
||||
try {
|
||||
@@ -97,6 +99,7 @@ function App() {
|
||||
|
||||
return (
|
||||
<div className="container">
|
||||
<ServiceNav />
|
||||
<header className="header">
|
||||
<div>
|
||||
<h1>meta-fuse</h1>
|
||||
@@ -110,6 +113,32 @@ function App() {
|
||||
|
||||
{error && <div className="error">{error}</div>}
|
||||
|
||||
<section className="description">
|
||||
<h2>What is meta-fuse?</h2>
|
||||
<p>
|
||||
<strong>meta-fuse</strong> is a virtual filesystem that presents your media files
|
||||
in an organized structure based on metadata. It reads file information from the
|
||||
KV leader (via Redis) and creates a virtual view of your library without duplicating any files.
|
||||
</p>
|
||||
<ul>
|
||||
<li>Access files organized by title, year, series, etc.</li>
|
||||
<li>Mount via FUSE (native) or WebDAV (network drive)</li>
|
||||
<li>No file duplication - virtual paths point to real files</li>
|
||||
<li>Automatically updates when new files are processed</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section className="quick-links">
|
||||
<a href="/webdav" className="quick-link-card">
|
||||
<span className="quick-link-icon">📁</span>
|
||||
<div className="quick-link-content">
|
||||
<h3>WebDAV Files</h3>
|
||||
<p>Browse and access your organized media library. Mount as a network drive on any device.</p>
|
||||
<span className="quick-link-url">/webdav</span>
|
||||
</div>
|
||||
</a>
|
||||
</section>
|
||||
|
||||
<div className="section">
|
||||
<h2 className="section-title">VFS Control</h2>
|
||||
|
||||
@@ -222,6 +251,47 @@ function App() {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section className="setup-section">
|
||||
<div
|
||||
className="setup-header"
|
||||
onClick={() => setShowSetup(!showSetup)}
|
||||
>
|
||||
<h3>Setup & Configuration</h3>
|
||||
<span className={`toggle-icon ${showSetup ? 'open' : ''}`}>▼</span>
|
||||
</div>
|
||||
{showSetup && (
|
||||
<div className="setup-content">
|
||||
<div className="info-box">
|
||||
<h4>FUSE Mount (Docker)</h4>
|
||||
<p>Mount the virtual filesystem directly from the container. Add this volume to your docker-compose.yml to access the organized files on your host:</p>
|
||||
<div className="command-box">
|
||||
<code>volumes:<br /> - /path/on/host:/mnt/virtual:rw,shared</code>
|
||||
</div>
|
||||
<p className="info-note">The virtual filesystem is available inside the container at <code>/mnt/virtual</code></p>
|
||||
</div>
|
||||
|
||||
<div className="info-box">
|
||||
<h4>WebDAV Network Drive</h4>
|
||||
<p>Mount the virtual filesystem as a network drive on any device:</p>
|
||||
<div className="command-box">
|
||||
<strong>Windows:</strong> <code>net use Z: http://<host>/webdav</code>
|
||||
</div>
|
||||
<div className="command-box">
|
||||
<strong>macOS:</strong> <code>Finder → Go → Connect to Server → http://<host>/webdav</code>
|
||||
</div>
|
||||
<div className="command-box">
|
||||
<strong>Linux:</strong> <code>sudo mount -t davfs http://<host>/webdav /mnt/vfs</code>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</section>
|
||||
|
||||
<footer className="app-footer">
|
||||
<p>Part of the <strong>MetaMesh</strong> project</p>
|
||||
<p>Discovers KV leader via shared volume and connects to Redis automatically</p>
|
||||
</footer>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user