Skip to content

Repository files navigation

Time Capsule

Time Capsule

A desktop app for compiling one person's life into a single self-contained HTML archive — built to be opened 250 years from the date it is sealed.

What it does

Start with a spreadsheet. Three columns — Year, Date, Event. One row per moment. Import it and the app handles the rest.

Browse a life on a timeline. A vertical decade-grouped river of events alternates left and right of a center spine. Each card shows the date, an age-at-event badge computed from the subject's date of birth, the source citation if there is one, and a strip of polaroid photo thumbnails.

See "On this day." A sidebar widget surfaces every event that ever happened on today's month and day, with the subject's age at the time.

Jump to any year, fast. The left sidebar has a collapsible decade index — click a decade to expand, click a year to smooth-scroll the timeline directly to it.

Attach photos by drag-drop. Drag image files from Finder or Explorer onto any event. They are hashed by SHA-256, deduped automatically, stored locally, and rendered as tilted polaroids on the timeline.

Seal the capsule. Export everything as a single self-contained .html file. Photos inlined as base64. No internet, no CDN, no external resources required to open it. Drop it on a thumb drive, an archival disc, or print to PDF. The exporter stamps the file with the sealing date and the year it's intended to be opened.

Download for Windows

Builds are available from the Releases page.

  • TimeCapsule-Setup-X.Y.Z.exe — installer with Start Menu and Desktop shortcuts.
  • TimeCapsule-Portable-X.Y.Z.exe — single file, run from anywhere.

The build is unsigned. On first launch, Windows SmartScreen will say "Windows protected your PC" — click More info → Run anyway.

Your data is stored in %APPDATA%\time-capsule\data\ — a SQLite database and a photos/ folder. Back this folder up.

First-time setup

  1. Click Open the Capsule on the cover screen.
  2. Click Subject in the top right and enter who the capsule is for (name, date of birth). This is stored locally on your machine — nothing is uploaded.
  3. Click Import events to load a spreadsheet, or + Add event to add events one at a time.

Feedback

Inside the app, the Send a request button opens this repo's issue tracker.

Running from source

npm install
npm run dev        # vite + electron with HMR
npm start          # built version
npm run dist:win   # build Windows installer + portable
npm run dist:mac   # build macOS DMG

Tech

  • Electron 32 + TypeScript
  • SQLite via better-sqlite3 (WAL mode, foreign keys on)
  • Photos on disk, keyed by content-hash, served to the renderer over a custom capsule:// protocol
  • Vite for the renderer (vanilla TypeScript, no framework)
  • ExcelJS for spreadsheet parsing
  • electron-builder for packaging

Spreadsheet format

Three columns, first row is header:

Year Date Event
YYYY YYYY-MM-DD A free-text description of the moment
YYYY YYYY-MM-DD Another moment (Source: where you found it)
YYYY YYYY-MM-01 A whole-month memory with no specific day
YYYY A year-only memory with no date at all

The importer:

  • Pulls (MM/DD/YYYY) out of the event text and uses it as the precise date
  • Pulls (Source: ...) text into a separate citation field
  • Infers date precision: day for explicit dates, month for first-of-month rows, year only otherwise
  • Is idempotent — re-importing the same file does not duplicate events

Privacy

All data is local to your machine. The app does not have an account, a server, or any cloud sync. The only outbound network call is the Send a request button, which opens GitHub in your default browser.

License

All Rights Reserved — personal project. No license granted for use, modification, or redistribution. The code is here to be read. If you would like to use it for your own family member's time capsule, open an issue and say hello.

Tooling

This project was built with the assistance of modern AI coding systems, primarily Claude and ChatGPT, which proved valuable for accelerating implementation, exploration, and iteration throughout development. The architecture, direction, tradeoffs, constraints, and final decisions that give the system coherence were guided and directed by me.

About

Compile a life into a self-contained 250-year HTML archive — Electron + TS + SQLite.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages