Compact, fast, low-maintenance digital archive.
  • Lua 71.7%
  • HTML 12.2%
  • Shell 4.6%
  • C 3.8%
  • JavaScript 2.9%
  • Other 4.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Stefano Cossu b59b3b256b
All checks were successful
Run unit tests / tests (5.4) (push) Successful in 1m48s
Run unit tests / tests (5.5) (push) Successful in 1m48s
Merge pull request 'Use PR ref to checkout repo in CI in a PR.' (#96) from pr_ci into master
Reviewed-on: #96
2026-10-30 15:36:55 +00:00
.forgejo/workflows Use PR ref to checkout repo in CI in a PR. 2026-10-30 11:31:34 -04:00
core_schema Support providing checksum in LL. 2026-09-30 20:57:29 -04:00
docker Minor updates: 2026-10-26 14:48:07 -04:00
examples UI fixes & improvements: 2026-09-22 16:49:57 -04:00
ext backup (#95) 2026-10-29 23:07:28 +00:00
src backup (#95) 2026-10-29 23:07:28 +00:00
templates Reorganize and rename model.properties. 2026-09-30 20:56:58 -04:00
test Increase watchdog report delay in integration test. 2026-10-29 19:13:25 -04:00
.gitignore v1.0b5: 2026-01-11 18:29:15 -05:00
.gitmodules WIP docker setup. 2026-01-08 08:55:51 -05:00
.local.env Some inconsequential changes. 2026-07-15 15:56:15 -04:00
CODE_OF_CONDUCT Parole parole parole. 2025-07-16 21:27:24 -04:00
LICENSE Parole parole parole. 2025-07-16 21:27:24 -04:00
Makefile Minor updates: 2026-10-26 14:48:07 -04:00
pocket_archive-scm-0.rockspec Remove version rockspecs; add quickstart info to README. 2026-10-30 10:41:41 -04:00
README.md Remove version rockspecs; add quickstart info to README. 2026-10-30 10:41:41 -04:00
run_tests.lua Some inconsequential changes. 2026-07-15 15:56:15 -04:00

Pocket Archive

Pocket Archive "PKAR" logo

The idea

Stick it in your pocket and carry it around. Install it on a cloud server. Install it on a Raspberry Pi. Browse it offline. Browse it online. Duplicate it, share it, harvest it and aggregate it. Feed it non-GMO spreadsheets regularly and it will thrive.

A more sensical description

Pocket Archive is a digital archival system and static site generator for small- to medium-(?) sized archives. It is designed to function in environments with unreliable connectivity and requires very low technical and human resources to set up, run, and use.

Pocket Archive fulfills the following business functions:

  • Storage and management of files and metadata-only resources
  • Management of descriptive, administrative, and technical metadata
  • Static site generation (presentation)

Some interesting features it currently provides:

  • Bulk content creation and updates are done by pushing spreadsheets (CSV) and data packages to a drop box
  • Highly customizable content model with user-definable relationships between resources
  • Able to run a presentation site and search form a thumb drive, without an Internet connection
  • Fully implementing Linked Data under the hood, hiding its ugly parts from the end user

In spite of its design simplicity, Pocket Archive strives to be flexible. It is based on Volksdata, a very compact Linked Data store and manipulation library. There is no restriction to the types and schema of metadata allowed, or the file types supported. A file-based configuration allows to set up content types and validation rules, or to have (almost) no rules at all.

Pocket Archive is designed to reinvent as little as possible and to use standard tools found in open source operating systems to provide a full management and preservation environment. It creates and updates resources using spreadsheets instead of running a web user interface; it writes all contents to disk and metadata in an embedded database that can be archived, replicated, backed up, and restored with reliable UNIX tools such as tar, rsync, etc.

Quickstart

The simplest way to test this project is to use Docker. You will need Git and Docker Compose installed in your host machine.

git clone --depth=1 https://git.knowledgetx.com/ktx/pocket_archive.git
cd docker
docker compose up

This will bring up a Pocket Archive instance running the submission watchdog, one running the admin interface, and a simple HTTP server for the static site.

For more information about this setup, see the Test drive guide on the documentation site.

Rockspecs

Pocket Archive is installed natively via Luarocks:

luarocks install pocket_archive

For the latest stable version. To build the most current development version, clone this repo and run:

luarocks build

In the top directory.

Versioned rockspec files (except from scm) are no longer kept in this archive as they complicate the deployment process. Current and historic versions can be found in the Luarocks page of this project.

Documentation

The full user documentation sources are in the pkar_doc repository and published at pkar.cc.

API documentation is in progress.