← Back

Made by kitsooos.

Lifedex!

Like a Pokédex for your life — local-only, exports to a passport.


Tutorial

Getting started

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.

What you need

  • A browser (Chrome, Safari, Firefox, Edge)
  • 5 minutes

Step 1 — Open Lifedex

Visit lifedex.app. No account, no setup, no install. You will see four buttons: Title, Book, Movie, Place.

Step 2 — Add a book

  1. Click Book.
  2. Type a title you have actually read and click Search.
  3. Click the matching result.
  4. A form appears pre-filled with title, author, and year.
  5. Fill in Date read (e.g. 2024-03) and an optional note.
  6. Click Save Book.

Your first card appears on the page.

Step 3 — Add a movie

  1. Click Movie → search → pick a result.
  2. Add a note if you like → click Save Movie.

Step 4 — Add a place

  1. Click Place → type a city, village, or landmark.
  2. Click the matching result.

The card appears immediately with a small map and coordinates.

Step 5 — Save your Lifedex

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.

Step 6 — Load it back

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

Manage entries

Add a Title card

A Title card is freeform header text — use it to label a year, a trip, or a phase of life.

  1. Click Title.
  2. Type your text.
  3. Click Add Title.

Font size adjusts automatically to the length of the text.

Add a Book

  1. Click Book → search by title → click a result.
  2. Title, author, and year are pre-filled from Open Library.
  3. Fill in Date read and Notes (both optional).
  4. Click Save Book.

Add a Movie

  1. Click Movie → search by title → click a result.
  2. Title and description are pre-filled from Wikipedia.
  3. Add a Note if you want.
  4. Click Save Movie.

Add a Place

  1. Click Place → type a location → click a result.
  2. No form — the entry is created immediately.

The card shows the name, approximate coordinates, and a map thumbnail.

Edit an entry

Click Edit on any card.

  • Title — the text is editable.
  • Book — only Date read and Notes are editable. Title, author, and cover are locked — they came from the original search.
  • Movie — only Notes is editable. Title, description, and thumbnail are locked.
  • Place — only the display name is editable. Coordinates and map are locked.

Click Update. The card updates in place — it keeps its position in the list.

Delete an entry

Click on any card. The entry is removed immediately with no confirmation prompt.


How-to

Save and load

Lifedex stores nothing on a server. Your data lives in a JSON file that you own.

Save

Click Save (bottom right corner).

  • Chrome / Edge (desktop and most Android) — a native "Save As" dialog opens. Choose any folder, including one you already sync to iCloud Drive, Google Drive, or Dropbox, and save directly into it. Saving again lets you overwrite the same file in place.
  • Safari, iOS, Firefox — your browser downloads lifedex.json. Move it to a location you back up afterward.

The Save button is hidden until you have added at least one entry.

Load

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.

Keeping it current

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.

Using Lifedex across devices

  1. Keep lifedex.json in a shared cloud folder (iCloud Drive, Google Drive, etc.).
  2. On any device: visit lifedex.app → Load → pick the same file.

How-to

Generate a Wrap

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.

  1. Click Wrap (bottom center) — only visible once you have at least one entry.
  2. Choose Continuous image (one tall image with every entry stacked, in the order you added them) or Carousel slides (one fixed-size image per entry, sized for an Instagram carousel post).
  3. Pick where to save it, the same way Save works — a native dialog on Chrome/Edge, a download elsewhere. Carousel slides on Chrome/Edge ask for one destination folder and write every image into it at once.

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

JSON schema

A saved Lifedex file looks like this:

{
  "version": 1,
  "exportedAt": "2026-05-29T15:00:00Z",
  "entries": [ ... ]
}

Top-level fields

FieldTypeDescription
versionnumberSchema version. Currently 1.
exportedAtstringISO 8601 timestamp of export.
entriesarrayOrdered list of entries. Array order = display order.

Title entry

{ "type": "title", "text": "My 2025" }

Book entry

{
  "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"
}

Movie entry

{
  "type": "movie",
  "title": "Dune",
  "description": "2021 sci-fi epic.",
  "notes": "Watched twice.",
  "thumbnailUrl": "https://upload.wikimedia.org/..."
}

Place entry

{
  "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

Why local-first?

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.

Why a JSON file instead of a database

  • Portable — open it in any text editor, import it into a spreadsheet, back it up with any tool you already use.
  • Yours — you decide where it lives and who can access it.
  • Durable — still readable in 20 years, unlike a proprietary format.
  • Simple — no migrations, no schema upgrades, no vendor lock-in.

Why no account

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.

The privacy trade-off

Lifedex makes network requests to search for content:

  • Open Library — for book titles and covers
  • Wikipedia — for movie titles and thumbnails
  • Nominatim / OpenStreetMap — for place names and map tiles

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.

What this means for you

  • Backup is your responsibility. If you lose your JSON file, your data is gone. Keep it somewhere backed up.
  • Sync is manual. Copy the file to another device to use it there.
  • The site never sees your data. Everything is assembled and rendered entirely in your browser.