Thanks to visit codestin.com
Credit goes to github.com

Skip to content

akora/vault-of-memories

Repository files navigation

🗄️ Vault of Memories

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.

🎯 Project Vision

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)

📝 Project Summary

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.

🚀 Basic Usage

# 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 --help

Upon 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

Example Vault Structure

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/
    └── ...

🏗️ Architecture Overview

The system follows a modular pipeline architecture:

  1. File Ingestion → Checksum calculation and duplicate detection
  2. File Type Analysis → Content-based file type detection
  3. Specialized Processing → Type-specific metadata extraction
  4. Metadata Consolidation → Priority-based metadata merging
  5. Filename Generation → Rule-based naming with metadata
  6. Organization → Content classification and folder placement
  7. File Operations → Atomic moves to vault structure

Key Features

  • 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

📚 Documentation

🤝 Contributing

This project follows Spec-Driven Development principles:

  1. Establish Principles: Review the constitution
  2. Create Specifications: Use /specify for new features
  3. Plan Implementation: Use /plan for technical approach
  4. Break Down Tasks: Use /tasks for actionable items
  5. Execute: Use /implement or manual development

🙏 Acknowledgments

  • Built with spec-kit for Spec-Driven Development
  • Inspired by Unix philosophy and digital preservation principles

About

Vault of Digital Memories: comprehensive personal digital asset management

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •