Me:
Hey, my dear AI assistant!
I'm planning to build a digital vault. The purpose of this project is to collect and package all digital memories, photos, videos, digitised documents into a digital vault so that my family can inherit it later in life. Please suggest methods, technologies, equipment that should be used. Also suggest digital formats that stand the test of time.
AI:
Building a digital vault for preserving digital memories, photos, videos, and digitized documents is a thoughtful and lasting gift. Here are some methods, technologies, equipment, and digital formats that can help you ensure the longevity and accessibility of your digital vault: ...
:)
Not so fast! Let's pause for a moment.
The goal is to build a pre-processor for digital vaults that ensures digital assets stand the test of time. Rather than focusing on specific DAM (Digital Asset Management) systems that come and go, we focus on the source files themselves.
Following core Unix design principles like "everything is a file" and "make each program do one thing well", longevity is strengthened by focusing on the most basic, widespread formats:
- Plain text (markdown is also fine)
- Most popular image formats (JPEG, PNG, GIF, WebP)
- Most popular video formats (MP4, WebM)
- Most popular audio formats (MP3, FLAC)
- Most popular document formats (PDF, DOCX, ODT)
- Most popular archive formats (ZIP, TAR, 7Z)
Vault of Memories is a Python-based digital vault pre-processor that organizes, deduplicates, and enriches digital files using metadata-driven classification. It follows a 7-stage modular pipeline from file ingestion to atomic vault organization.
# Activate virtual environment
source venv/bin/activate
# Process files into your vault
python3 -m src.cli --vault-root ~/vault process ~/Downloads
# See all available commands
python3 -m src.cli --helpUpon the first run an SQLite database is created (as a hidden file). This database is local and stores key attributes of each processed file, to manage the identification of duplicates and to serve as the source for any processing statistics.
For more details on usage patterns please check USAGE.md
After processing, your vault will look like this:
vault/
├── .vault.db # SQLite database for tracking
├── documents/
│ ├── pdf/
│ │ └── 2025/
│ │ └── 2025-10/
│ │ └── 2025-10-08/
│ │ └── 2025-10-04-095209-p447-s447.pdf
│ ├── text/
│ │ └── 2025/...
│ └── office/
│ └── 2025/...
├── images/
│ ├── photos/
│ │ └── 2025/
│ │ └── 2025-10/
│ │ └── 2025-10-08/
│ │ └── 2025-10-08-143022-Nikon-D5100-4928x3264.jpg
│ └── graphics/
│ └── 2025/...
├── videos/
│ └── 2025/...
├── audio/
│ └── 2025/...
├── other/
│ └── 2025/...
├── duplicates/ # Duplicate files moved here
└── quarantine/ # Problematic files moved here
├── corruption/
├── permission/
├── checksum/
└── ...
The system follows a modular pipeline architecture:
- File Ingestion → Checksum calculation and duplicate detection
- File Type Analysis → Content-based file type detection
- Specialized Processing → Type-specific metadata extraction
- Metadata Consolidation → Priority-based metadata merging
- Filename Generation → Rule-based naming with metadata
- Organization → Content classification and folder placement
- File Operations → Atomic moves to vault structure
- Modular Design: Each component has single responsibility
- Configuration-Driven: JSON files for all rules and settings
- Extensible: Easy to add new file types without code changes
- Reliable: Comprehensive error handling and quarantine system
- Preserves History: SQLite database tracks all operations
- Cross-Platform: Works on Windows, macOS, and Linux
- Project Constitution - Core principles and standards
- Spec-Kit Workflow Guide - Step-by-step modular specification process
- Feature Specifications - Detailed feature requirements (modular components)
- Complete Technical Documentation - Full system architecture, rule storage, and implementation details
This project follows Spec-Driven Development principles:
- Establish Principles: Review the constitution
- Create Specifications: Use
/specifyfor new features - Plan Implementation: Use
/planfor technical approach - Break Down Tasks: Use
/tasksfor actionable items - Execute: Use
/implementor manual development
- Built with spec-kit for Spec-Driven Development
- Inspired by Unix philosophy and digital preservation principles