back

Shelf

Unified tracker for media collections with external metadata sync.

TypeScriptReactJavaSpring BootDocker
Shelf preview

Overview

Shelf helps users organize shows, movies, anime, and books with consistent metadata and progress tracking.

The backend aggregates multiple public APIs and normalizes fields for a clean front-end experience.

Problem

Media tracking tools often focus on one domain and become fragmented across apps.

Metadata quality and naming conventions vary between providers, creating messy search and duplicate entries.

Goal: Build one collection tracker with stable metadata pipelines and smooth list management.

Constraints

API heterogeneity

TMDB, Jikan, and Open Library return different schemas and quality guarantees.

Data freshness

The system needed periodic synchronization without degrading app response times.

Operational simplicity

Containerized deployment and CI/CD had to stay simple enough for quick iteration.

Key Decisions

Normalized metadata layer

Created a mapping layer that translates provider-specific payloads into a single internal model.

Service split by responsibility

Separated ingestion, persistence, and user collection features to keep core workflows testable.

Container-first deployment

Used Docker and pipeline automation for consistent environment setup and safer releases.

Results

Takeaways