Family Memory Vault
PersonalPrivate digital archive that preserves family emails and attachments as searchable memories, with child-specific access, moderation, time capsules, and portable long-term storage.
Overview
Family Memory Vault is a private digital archive designed to preserve letters, photographs, videos, voice notes, and documents for children over decades. Relatives contribute naturally by emailing a child's permanent family address; the platform securely processes each message, stores the original email and its attachments, and presents it as a searchable memory in that child's timeline.
Parents and trusted family members can browse individual archives, organise memories with tags and collections, add shared notes, and mark family favourites or private bookmarks. Role-based access keeps each child's archive separate, while time capsules allow memories to remain hidden until a specific date, birthday, or manual release.
Key Outcomes
- Built a durable email-ingestion pipeline that preserves the original
.emlfile before processing, uses queued delivery and deterministic storage, and safely handles retries without creating duplicate memories. - Created private, child-specific archives with chronological browsing, search, tags, collections, attachment galleries, shared notes, family favourites, and personal bookmarks.
- Implemented layered access control with verified Google sign-in, invitation-based approval, administrator, manager, and viewer roles, per-child permissions, PostgreSQL row-level security, and audited sensitive actions.
- Added a moderation workflow for unknown or blocked senders, including quarantine review, safe HTML sanitisation, attachment type detection, sender approval, message release, and blocking controls.
- Delivered time capsules with date-based, birthday-based, and manual release rules, including email address suffixes that can apply a release schedule as a memory arrives.
- Designed the archive for long-term portability using standard PostgreSQL data, raw email files, S3-compatible object storage, committed SQL migrations, checksums, and documented recovery procedures.
Implementation Notes
Built with Next.js, React, TypeScript, Tailwind CSS, Auth.js, Drizzle ORM, and Neon Postgres. Cloudflare Email Routing and a Cloudflare Worker receive incoming messages, preserve the raw MIME data in a private R2 bucket, and publish compact manifests to a queue for reliable processing by the application.
Security is enforced at both the application and database layers. Child-owned records are protected by PostgreSQL row-level security, inbound processing uses a restricted database role and HMAC-signed requests, and private files are exposed only through short-lived signed URLs. Provider-specific services are isolated behind narrow boundaries so the archive can be migrated to another PostgreSQL host, S3-compatible storage provider, application platform, or inbound email service without losing its core data.