Made by kitsooos.
Tutorial
In this tutorial you will build your first Lifedex — a personal record containing one book, one movie, and one place — and save it as a file you own.
By the end you will understand the full loop: add → save → load → continue.
Visit lifedex.app. No account, no setup, no install. You will see four buttons: Title, Book, Movie, Place.
2024-03) and an optional note.Your first card appears on the page.
The card appears immediately with a small map and coordinates.
Click Save (bottom right). On Chrome or Edge, your browser opens a native "Save As" dialog — pick a folder, give it a name (or keep lifedex.json), and you're done. On Safari, iOS, or Firefox, it downloads lifedex.json instead — move it to a cloud folder or somewhere you back up.
The Save button only appears after you have added at least one entry.
Refresh the page. Your entries are gone — Lifedex stores nothing on a server. Click Load, pick your lifedex.json, and everything reappears in order.
This is the Lifedex loop. You own the file; Lifedex just renders it.
How-to
A Title card is freeform header text — use it to label a year, a trip, or a phase of life.
Font size adjusts automatically to the length of the text.
The card shows the name, approximate coordinates, and a map thumbnail.
Click Edit on any card.
Click Update. The card updates in place — it keeps its position in the list.
Click ✕ on any card. The entry is removed immediately with no confirmation prompt.
How-to
Lifedex stores nothing on a server. Your data lives in a JSON file that you own.
Click Save (bottom right corner).
lifedex.json. Move it to a location you back up afterward.The Save button is hidden until you have added at least one entry.
Click Load (bottom left corner). Pick your lifedex.json in the file picker that opens. All entries reappear in the same order they were in when you saved. If the file isn't a valid Lifedex export, you'll see an error instead of a broken page.
If you already have entries on screen, Lifedex asks you to confirm before replacing them — loading always overwrites what's currently showing.
After every session: click Save to download the updated file, then replace the old file in your cloud folder with the new one.
There is no auto-save. Closing the tab without saving loses any entries added that session.
lifedex.json in a shared cloud folder (iCloud Drive, Google Drive, etc.).How-to
Wrap turns your entries into a shareable image — a keepsake you can post or save, separate from the lifedex.json file that's your actual data.
Wrap is generated entirely in your browser using native <canvas> drawing — no third-party library, no upload, same local-only guarantee as the rest of the site. The visual design is still early and being actively reworked, so expect it to keep changing.
Reference
A saved Lifedex file looks like this:
{
"version": 1,
"exportedAt": "2026-05-29T15:00:00Z",
"entries": [ ... ]
}
| Field | Type | Description |
|---|---|---|
version | number | Schema version. Currently 1. |
exportedAt | string | ISO 8601 timestamp of export. |
entries | array | Ordered list of entries. Array order = display order. |
{ "type": "title", "text": "My 2025" }
{
"type": "book",
"title": "The Remains of the Day",
"author": "Kazuo Ishiguro",
"year": "1989",
"dateRead": "2025-03",
"notes": "Quietly devastating.",
"coverUrl": "https://covers.openlibrary.org/b/id/123456-M.jpg"
}
{
"type": "movie",
"title": "Dune",
"description": "2021 sci-fi epic.",
"notes": "Watched twice.",
"thumbnailUrl": "https://upload.wikimedia.org/..."
}
{
"type": "place",
"name": "Rapsani",
"coords": "39.6362, 22.3942 — not actual location, approximate",
"mapUrl": "https://tile.openstreetmap.org/13/x/y.png"
}
Images are stored as URLs only — never as base64. Array order is display order. Never load a JSON file from someone you do not trust.
Explanation
Lifedex stores no data on any server. There is no account, no database, no sync managed by the app. The only copy of your data is the JSON file on your machine.
This is a deliberate design decision, not a limitation.
Accounts mean passwords to forget, emails to verify, servers to trust, and data that can be breached. For a personal life log, none of that overhead makes sense.
Lifedex makes network requests to search for content:
Those services can see individual search queries. What they cannot see: your notes, your dates, your full Lifedex, or the contents of your JSON file. No analytics, no tracking, no cookies on the Lifedex site.