PHPackages                             survos/data-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. survos/data-bundle

ActiveSymfony-bundle[Utility &amp; Helpers](/categories/utility)

survos/data-bundle
==================

Shared data directory conventions and path utilities for dataset-driven apps (APP\_DATA\_DIR).

2.0.177(1mo ago)0206↓25%2MITPHPPHP ^8.4

Since Feb 5Pushed 1mo agoCompare

[ Source](https://github.com/survos/data-bundle)[ Packagist](https://packagist.org/packages/survos/data-bundle)[ GitHub Sponsors](https://github.com/kbond)[ RSS](/packages/survos-data-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (22)Versions (60)Used By (2)

museado/data-bundle
===================

[](#museadodata-bundle)

A small Symfony bundle that standardizes where Museado-related data lives on disk and provides a single, typed service for resolving dataset, pipeline, and Pixie paths.

This bundle intentionally does one thing only: path conventions and filesystem helpers around `APP_DATA_DIR`.

It is designed to be used by:

- Museado (the main site / pipeline runner)
- Aggregator microservices (Smithsonian, Europeana, etc.)
- Pixie-only reader sites

without forcing those apps to depend on each other.

Core idea
---------

[](#core-idea)

All domain data lives under a single directory defined by:

```
APP_DATA_DIR

```

Nothing in this bundle depends on repository-relative paths, symlinks, or `.gitignore` tricks.

Recommended directory layout
----------------------------

[](#recommended-directory-layout)

Example values:

Local development:

```
APP_DATA_DIR=$HOME/data/mus

```

Dokku / containers:

```
APP_DATA_DIR=/data/mus

```

Layout under that directory:

```
$APP_DATA_DIR/
  data/
    /
      10_extract/
        obj.jsonl(.gz)
      20_normalize/
        obj.jsonl(.gz)
      21_profile/
        obj.profile.json
      30_terms/
        *.jsonl
  pixie/
    tenants/
      .db
    template/
    exports/
  runs/
  cache/

```

Notes:

- `` is typically `aaa`, `nmah`, `nmnhbirds`, etc.
- Pixie databases are not stored under `data/`
- The layout is intentionally shallow and predictable

Installation
------------

[](#installation)

```
composer require museado/data-bundle
```

Set the environment variable:

```
export APP_DATA_DIR=/absolute/path/to/data/root
```

That is the only required configuration.

Usage
-----

[](#usage)

Inject the `DataPaths` service anywhere you need filesystem paths.

```
use Museado\DataBundle\Service\DataPaths;

final class SomeService
{
    public function __construct(
        private DataPaths $paths
    ) {}
}
```

### Dataset paths

[](#dataset-paths)

```
$paths->datasetDir('aaa');
$paths->extractDir('aaa');
$paths->extractFile('aaa');

$paths->normalizeDir('aaa');
$paths->normalizeFile('aaa');

$paths->profileDir('aaa');
$paths->profileFile('aaa');

$paths->termsDir('aaa');
```

### Pixie paths

[](#pixie-paths)

```
$paths->pixieTenantDb('larco');
```

### Operational directories

[](#operational-directories)

```
$paths->runsDir;
$paths->cacheDir;
```

Directory creation helpers
--------------------------

[](#directory-creation-helpers)

The bundle includes small, safe helpers so commands do not need to manually `mkdir` paths.

Ensure global roots exist:

```
$paths->ensureRootDirs();
```

Ensure all standard dataset stage directories exist:

```
$paths->ensureDatasetDirs('aaa');
```

Atomic file writes
------------------

[](#atomic-file-writes)

For small metadata files (profiles, registries, workflow state):

```
$paths->atomicWrite($path, $contents);
```

This writes to a temporary file in the same directory and renames atomically.

Design principles
-----------------

[](#design-principles)

- No business logic
- No import, normalize, profile, Pixie, or Meili code
- No dependency on other Museado bundles
- Filesystem layout is centralized and versioned
- Paths are semantic, not stringly-typed

This bundle exists so every app in the ecosystem agrees on where things go, without duplicating logic or pulling in heavy dependencies.

When to use this bundle
-----------------------

[](#when-to-use-this-bundle)

Use `museado/data-bundle` if your code needs to:

- Read or write `10_extract`, `20_normalize`, profiles, or termsets
- Locate Pixie SQLite databases
- Share data directories across multiple apps
- Avoid repo-local `data/` directories

Do **not** use it for:

- Import pipelines
- Data normalization
- Profiling
- Term extraction
- Search indexing
- UI or controllers

Status
------

[](#status)

- Stable
- PHP ≥ 8.4
- Symfony ≥ 7.4 (tested with Symfony 8)

This bundle is intended to be boring, stable, and rarely changed.

Developer
---------

[](#developer)

```
composer config repositories.museado-data-bundle '{"type":"path","url":"/home/tac/g/museado/data-bundle","options":{"symlink":true}}'
composer require museado/data-bundle:@dev
```

###  Health Score

48

—

FairBetter than 94% of packages

Maintenance90

Actively maintained with recent releases

Popularity16

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

59

Last Release

51d ago

PHP version history (2 changes)2.0.109PHP ^8.3

2.0.139PHP ^8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/21b39551f92ed4143772c622f9e571589c5a72c96ab3c53fe67489ce0d83e806?d=identicon)[tacman1123](/maintainers/tacman1123)

---

Top Contributors

[![tacman](https://avatars.githubusercontent.com/u/619585?v=4)](https://github.com/tacman "tacman (16 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/survos-data-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/survos-data-bundle/health.svg)](https://phpackages.com/packages/survos-data-bundle)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[symfony/maker-bundle

Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.

3.4k111.1M568](/packages/symfony-maker-bundle)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[symplify/monorepo-builder

Not only Composer tools to build a Monorepo.

5205.3M82](/packages/symplify-monorepo-builder)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
