Life Diff borrows the language of version control for personal reflection: record additions, modifications, and removals; browse them as a timeline; compare two dates; and tag meaningful moments as releases.
No account or server is required. The application runs offline and keeps its workspace on the current device.
- Record several additions, modifications, and removals in one entry.
- Filter and browse a persistent timeline.
- View, edit, copy, and delete existing entries.
- Compare two dates to calculate the net Life Diff.
- Attach release tags to memorable entries.
- Export and import human-readable JSON backups.
- Customize the workspace background, opacity, blur, fit, and position.
- Use the same responsive interface on desktop and mobile-sized screens.
Life Diff does not include analytics, accounts, cloud sync, or a network API. Workspace data is stored in the application's local WebView storage under life-diff.workspace.v1; background images are stored as size-limited data URLs in the same workspace. JSON backup files leave the application only when the user explicitly exports them.
Local-first does not mean encrypted. Anyone with access to your operating-system profile or exported backup may be able to read the data, so treat backups as sensitive files.
Requirements:
- Node.js 20.9 or newer
- pnpm 11 or newer
- Rust and the Tauri prerequisites for native builds
pnpm install
pnpm devOpen http://localhost:3000. To run the desktop shell during development:
pnpm desktop:devRun the fast validation suite:
pnpm checkRun the browser end-to-end suite separately:
pnpm exec playwright install chromium
pnpm test:e2eThe repository's CI runs linting, TypeScript checks, unit tests, the static production build, and Playwright tests.
pnpm desktop:buildGenerated packages are written below dist/ and are intentionally excluded from Git. Tagged GitHub Releases may attach Windows installers, portable executables, Android packages, and their SHA-256 checksums. See PACKAGING.md for platform-specific details.
src/app/ Next.js App Router entry points
src/components/ Shared shell, timeline, and UI components
src/domain/ Framework-independent types and Life Diff rules
src/features/workspace/ Local workspace state and feature screens
src-tauri/ Tauri desktop/mobile shell and native metadata
tests/e2e/ Browser workflows and visual smoke coverage
design/ Product design reference and source artwork
For more detail, see ARCHITECTURE.md, DESIGN_SPEC.md, and CHANGELOG.md.
Issues and pull requests are welcome. Please read CONTRIBUTING.md before submitting a change, and never attach a real Life Diff backup to a public issue.
Life Diff is available under the MIT License.
