Initial commit: Shelfless – alternative Audiobookshelf frontend
React + Vite + TypeScript SPA covering the full ABS feature set (library browsing, item detail, metadata/cover editing, podcasts, player with session sync, admin: users/libraries/scanner/server settings). Dev uses a dynamic CORS proxy; production is served by server/index.mjs (static + reverse proxy to ABS_URL). Includes systemd unit and installer under deploy/. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
44
README.md
Normal file
44
README.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# Shelfless
|
||||
|
||||
Ein vollständiges alternatives Web-Frontend für [Audiobookshelf](https://www.audiobookshelf.org/)
|
||||
(ABS). ABS läuft weiter als Backend; Shelfless ersetzt dessen Oberfläche – Wiedergabe,
|
||||
Bibliotheken, Metadaten, Cover, Podcasts, User-Admin, Scanner und Server-Einstellungen.
|
||||
|
||||
## Stack
|
||||
React 18 · Vite · TypeScript · Tailwind (+ CSS-Variablen) · Zustand · React Router ·
|
||||
Axios · HTML5-Audio · Lucide. Kein UI-Framework.
|
||||
|
||||
## Entwicklung
|
||||
```bash
|
||||
npm install
|
||||
npm run dev # http://localhost:5173
|
||||
npm run build # Typecheck + Production-Build
|
||||
npm run preview # gebautes Bundle lokal servieren
|
||||
```
|
||||
|
||||
Beim ersten Start öffnet sich der Setup-Screen: ABS-Server-URL (`http://host:13378`),
|
||||
Benutzername, Passwort. Der Token wird in `localStorage` gespeichert und beim Start via
|
||||
`POST /api/authorize` validiert.
|
||||
|
||||
## Design
|
||||
Dark-Theme, ein Akzent (Amber, in den Einstellungen umstellbar), Fraunces (Headings) +
|
||||
Hanken Grotesk (Body). Die verbindliche Design-Referenz liegt unter
|
||||
[`design-system/MASTER.md`](design-system/MASTER.md).
|
||||
|
||||
## Struktur
|
||||
```
|
||||
src/
|
||||
api/ ABS-API nach Domäne (auth, libraries, items, progress, sessions, …)
|
||||
components/ MediaCard/Row/Grid, player/, detail/, admin/, ui/ (Primitives)
|
||||
hooks/ useDebounce, useClickOutside
|
||||
lib/ media (cover/stream-URLs), format, html (sicheres htmlToText), url
|
||||
pages/ Home, Library, ItemDetail, Settings, Setup, admin/*
|
||||
routes/ RequireAuth, RequireAdmin
|
||||
store/ auth, libraries, progress, player, settings, toast (Zustand)
|
||||
types/ abs.ts (ABS-API-Typen)
|
||||
```
|
||||
|
||||
## Hinweise zur ABS-API
|
||||
Einige Pfade weichen vom ursprünglichen Briefing ab und folgen der echten ABS-API:
|
||||
Login `POST /login`, Authorize `POST /api/authorize`, Wiedergabe `POST /api/items/:id/play`.
|
||||
Server-Settings/Backups-Pfade ggf. je nach ABS-Version verifizieren.
|
||||
Reference in New Issue
Block a user