Case Study

The Core Problem

Most digital asset management (DAM) courses teach concepts using sterile enterprise mockups. I wanted to see how a real, open-source DAM platform handles structural complexity under constraint. I built root & record to bridge a personal gap: I had no hands-on experience with dedicated DAM platforms, so I deployed one from scratch to manage three completely unrelated personal collections—plants, vinyl records, and books—under a singular, tightly governed system.

Phase 1: Bare Metal, Containers, and Immutable OS

I don’t match templates to software; I match software to local architecture. My machine runs Bazzite Linux (KDE Plasma), an immutable operating system. Fighting the host system architecture to install a traditional LAMP stack is a waste of energy.

After troubleshooting manual privilege blocks inside isolated Distrobox environments and standard stack bundles, I pivoted to a container-native approach. I used Podman to orchestrate an official multi-container ResourceSpace deployment on a localized network, mapping persistent storage volumes to ensure zero data loss upon runtime restarts.

The Stack:

  • Host: Bazzite Linux

  • Container Engine: Rootless Podman

  • Application: ResourceSpace (Official Image)

  • Local Port Mapping: Alternate routing to ingress port 8080 to respect immutable host container permissions.

Phase 2: Schema Design & Eliminating Metadata Noise

A generic asset bucket is useless. To maintain a quiet, clean user experience, I stripped out ResourceSpace’s default enterprise templates (AI auto-tagging, video parameters, generic photo layouts) and engineered three highly localized custom Resource Types:

Flora

Designed to track active lifecycle status and propagation lineages.

  • Controlled Vocabularies: * Growth Stage: Seedling, Juvenile, Established, Mature, Propagation, Dormant

    • Health Status: Thriving, Stable, Needs Attention, Recovering, Critical

    • Asset Type: Plant Photo, Growth Progress, Legacy

Audio

Built to preserve localized structural context for physical vinyl variations.

  • Controlled Vocabularies:

    • Format: LP, EP, Single, 7", 10", 12"

    • Pressing Type: Standard, Limited Edition, Store Exclusive, Label Exclusive, Reissue, Picture Disc

    • Variant/Color: Dropdown parameters mapping physical configurations (Splatter, Marble, Galaxy, Translucent, etc.)

Library

Injected to demonstrate a strict understanding of bibliographic validation.

  • Attributes: Title, Author, Publisher, ISBN, Series, Format, Genre, Read Status, Asset Type.

Phase 3: Ingestion, Automation, and Human Ergonomics

A taxonomy is only as good as the discipline of the ingestion process. To keep machine sorting clear and fast, I built a strict snake_case token-string framework for raw filenames before upload:

  • Flora Pattern: flora_[common-name]_[nickname]_[asset-type]_[date]_[sequence]

    • Production Example: flora_monstera_morticia_plant-photo_2026-06-10_001.jpg

  • Library Pattern: library_[author]_[book-title]_[asset-type]_[format]

    • Production Example: library_t-kingfisher_hemlock-and-silver_cover-photo_hard-cover.jpg

Operational Discoveries During Scale

Managing batch data entry manually introduces human error. While processing the initial ingestion sets (capped at an active sample of 10 items per category), I made two core architectural decisions:

  1. Session Attribute Inheritance (Field Locking): I configured ResourceSpace’s attribute pinning to inherit background properties across multi-asset ingestion blocks. Pinning repetitive parameters like asset format cut ingestion time down significantly and ensured metadata integrity at the point of creation.

  2. Noise Reduction Rules: Global metadata fields (like Release Year or Genre) belong exclusively to the parent record level. Over-tagging nested assets (like record insert sleeves or lyric sheets) creates unnecessary redundancy. The machine-readable token filename handles parentage connection; the database layout remains lean.

Retrospective Wishlist

If I were scaling this layout for an enterprise environment, I would eliminate manual front-end naming fields entirely via automated string concatenation. The platform would run an internal mail-merge template: pulling properties natively from the isolated, validation dropdown entries (Author + Book Title + Format) to auto-compile and standardize user-facing visual strings ([Author] — [Book Title] ([Asset Type])) automatically upon upload hook.

The Core Problem

Most digital asset management (DAM) courses teach concepts using sterile enterprise mockups. I wanted to see how a real, open-source DAM platform handles structural complexity under constraint. I built root & record to bridge a personal gap: I had no hands-on experience with dedicated DAM platforms, so I deployed one from scratch to manage three completely unrelated personal collections—plants, vinyl records, and books—under a singular, tightly governed system.

Also, I'm gonna be so real with you: This case study is VERY long and it reads better on a tablet or computer. We scroll on our phones enough. We don't have to do it here.

I’m Tangi and I'm figuring it out.

©2024 to ∞

I’m Tangi and I'm figuring it out.

©2024 to ∞

I’m Tangi and I'm figuring it out.

©2024 to ∞

I’m Tangi and I'm figuring it out.

©2024 to ∞