PHPackages                             survos/folio-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. [Database &amp; ORM](/categories/database)
4. /
5. survos/folio-bundle

ActiveSymfony-bundle[Database &amp; ORM](/categories/database)

survos/folio-bundle
===================

Portable SQLite folios for normalized museum dataset rows.

2.7.2(1w ago)044↑300%MITPHPPHP ^8.4

Since May 17Pushed 2d agoCompare

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

READMEChangelogDependencies (42)Versions (19)Used By (0)

Survos Folio Bundle
===================

[](#survos-folio-bundle)

Folio stores normalized/enriched dataset JSONL as portable SQLite archive files. It is the database, archive, and browsing layer for data that has already been normalized by dataset/import tooling.

`harvest` and `md` produce normalized JSONL. `folio:ingest` turns that JSONL into a standalone folio SQLite file. Consumers such as `zm` can use the Symfony/DataContracts stack when present, while Python/R/SQLite users can query the archive directly.

Required: `survos/field-bundle`, `survos/data-contracts`. Suggested for ingest/write workflows: `survos/jsonl-bundle`, `survos/import-bundle`.

See `docs/configuration.md` for the required multi-connection Doctrine setup. See `docs/archive-metadata.md` for the standalone archive metadata contract. See `docs/presentation-layer.md` for the proposal to use folios as narrative institutional presentation packages.

Archive Contract
----------------

[](#archive-contract)

A folio file stores canonical rows in `item` and self-describing metadata alongside them:

- `schema_table` and `schema_property` describe observed DTO types and fields in this archive.
- `schema_property.stats` stores field profile output from `survos/jsonl-bundle`'s profiler.
- `docs` stores generated JSON/Markdown documentation for humans, report writers, and AI agents.
- generated `dto_*` SQLite views project JSON fields into query-friendly columns.
- `term_set` and `term` store standalone controlled vocabularies and facets.

The metadata snapshot describes actual observed data, not the entire DTO contract universe. DTO classes from `survos/data-contracts` annotate observed fields with labels/descriptions when available, but consumers do not need PHP code to understand an archived folio.

Search and Publication Notes
----------------------------

[](#search-and-publication-notes)

- `folio:ingest` loads rows, snapshots observed schema/docs/views, and rebuilds the SQLite FTS5 table `item_fts`.
- Existing folios can rebuild search with `bin/console folio:fts:rebuild  --query="search terms"`.
- `folio:archive` refreshes archive metadata before packaging.
- FTS tables are derived data. Published archive files may drop `item_fts`, `VACUUM`, compress, ship, then rebuild FTS on the consuming side.
- SQLite views and docs are also derived from persisted metadata, but they are intentionally lightweight and useful for standalone consumers.
- Vector search is intentionally deferred. When added, start with a hybrid SQLite design: FTS5/BM25 for exact keyword strength, sqlite-vec for semantic retrieval, and Reciprocal Rank Fusion to merge ranks without normalizing incompatible score scales. Reference:

Direct SQLite Examples
----------------------

[](#direct-sqlite-examples)

```
select * from schema_table where kind = 'dto';
select * from schema_property where table_id = ? order by position;
select local_id, label, dto_type, dto_data, extras from item limit 20;
select * from dto_document limit 20;
select id, type, audience, body from docs order by position;
```

TODO
----

[](#todo)

- Add fieldSet support to the api-grid spreadsheet view to avoid displaying every DTO field at once.
- Rebuild views/docs on restore, not only FTS, if the archive was packaged without them.

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance99

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 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

18

Last Release

8d ago

### 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 (22 commits)")

###  Code Quality

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

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

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

###  Alternatives

[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.5M370](/packages/easycorp-easyadmin-bundle)[sulu/sulu

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

1.3k1.4M195](/packages/sulu-sulu)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9017.2k55](/packages/open-dxp-opendxp)[2lenet/crudit-bundle

The easy like Crud'it Bundle.

1715.6k12](/packages/2lenet-crudit-bundle)

PHPackages © 2026

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