Froidefond Julien e64848a216 feat: implement thumbnail generation and management
- Remove unused image dependencies from Cargo.lock.
- Update API to handle thumbnail generation and checkup processes.
- Introduce new routes for rebuilding and regenerating thumbnails.
- Enhance job tracking with progress indicators for thumbnail jobs.
- Update front-end components to display thumbnail job status and progress.
- Add backend logic for managing thumbnail jobs and integrating with the API.
- Refactor existing code to accommodate new thumbnail functionalities.
2026-03-08 20:55:12 +01:00
2026-03-08 17:54:47 +01:00
2026-03-08 17:54:47 +01:00
2026-03-08 17:54:47 +01:00
2026-03-08 17:54:47 +01:00
2026-03-06 11:56:50 +01:00

Stripstream Librarian

A comprehensive comic book and e-book management system with automatic indexing, full-text search, and a modern web interface.

Architecture

The project consists of the following components:

  • API (apps/api/) - Rust-based REST API service
  • Indexer (apps/indexer/) - Rust-based background indexing service
  • Backoffice (apps/backoffice/) - Next.js web administration interface
  • Infrastructure (infra/) - Docker Compose setup with PostgreSQL and Meilisearch

Quick Start

Prerequisites

  • Docker and Docker Compose
  • (Optional) Rust toolchain for local development
  • (Optional) Node.js 18+ for backoffice development

Environment Setup

  1. Copy the example environment file:

    cp .env.example .env
    
  2. Edit .env and set secure values for:

    • MEILI_MASTER_KEY - Master key for Meilisearch
    • API_BOOTSTRAP_TOKEN - Bootstrap token for initial API authentication

Running with Docker

cd infra
docker compose up -d

This will start:

  • PostgreSQL (port 5432)
  • Meilisearch (port 7700)
  • API service (port 8080)
  • Indexer service (port 8081)
  • Backoffice web UI (port 8082)

Accessing the Application

Default Credentials

The default bootstrap token is configured in your .env file. Use this for initial API authentication.

Development

Local Development (without Docker)

API & Indexer (Rust)

# Start dependencies
cd infra
docker compose up -d postgres meilisearch

# Run API
cd apps/api
cargo run

# Run Indexer (in another terminal)
cd apps/indexer
cargo run

Backoffice (Next.js)

cd apps/backoffice
npm install
npm run dev

The backoffice will be available at http://localhost:3000

Features

Libraries Management

  • Create and manage multiple libraries
  • Configure automatic scanning schedules (hourly, daily, weekly)
  • Real-time file watcher for instant indexing
  • Full and incremental rebuild options

Books Management

  • Support for CBZ, CBR, and PDF formats
  • Automatic metadata extraction
  • Series and volume detection
  • Full-text search with Meilisearch

Jobs Monitoring

  • Real-time job progress tracking
  • Detailed statistics (scanned, indexed, removed, errors)
  • Job history and logs
  • Cancel pending jobs
  • Full-text search across titles, authors, and series
  • Library filtering
  • Real-time suggestions

Environment Variables

Variable Description Default
API_LISTEN_ADDR API service bind address 0.0.0.0:8080
INDEXER_LISTEN_ADDR Indexer service bind address 0.0.0.0:8081
BACKOFFICE_PORT Backoffice web UI port 8082
DATABASE_URL PostgreSQL connection string postgres://stripstream:stripstream@postgres:5432/stripstream
MEILI_URL Meilisearch connection URL http://meilisearch:7700
MEILI_MASTER_KEY Meilisearch master key (required) -
API_BOOTSTRAP_TOKEN Initial API admin token (required) -
INDEXER_SCAN_INTERVAL_SECONDS Watcher scan interval 5
LIBRARIES_ROOT_PATH Path to libraries directory /libraries

API Documentation

The API is documented with OpenAPI/Swagger. When running locally, access the docs at:

http://localhost:8080/api-docs

Project Structure

stripstream-librarian/
├── apps/
│   ├── api/              # Rust REST API
│   ├── indexer/          # Rust background indexer
│   └── backoffice/       # Next.js web UI
├── infra/
│   ├── docker-compose.yml
│   └── migrations/       # SQL database migrations
├── libraries/            # Book storage (mounted volume)
└── .env                  # Environment configuration

License

[Your License Here]

Description
No description provided
Readme 6.9 MiB
Languages
TypeScript 48.5%
Rust 48.2%
Shell 1.9%
CSS 0.7%
Dockerfile 0.5%
Other 0.2%