Entries
July 5, 2026guideentries/life-app-installation.md

Installing Life Archive App

Life Archive App is a Next.js server application. A local installation needs Node.js with npm, a copy of the application repository, and at least one valid .life archive.

The project does not currently declare a minimum Node.js version in package.json. Use a Node.js release supported by the Next.js version recorded in the repository lockfile, and keep the lockfile when installing dependencies.

Install dependencies

From the application root, run:

npm install

This installs Next.js, React, the Markdown and frontmatter readers, archive validation, file indexing, and sharp for image metadata and generated thumbnails.

Add or select an archive

Archives normally live under the repository's content/ directory:

content/
  demo.life/
    life.json
    README.md
    entries/
    collections/
    people/
    places/
    albums/
    files/

You may start with content/demo.life, copy another .life folder into content/, or create a new archive using the Life Archive Format documentation.

Select the default archive in src/defaults.ts:

export const rendererDefaults = {
  archivePath: "content/demo.life",
  // ...
} as const;

The path is resolved beneath content/. Keeping archives there makes the allowed filesystem boundary explicit and prevents archive-relative paths from escaping the content area.

Start development mode

Run:

npm run dev

Then open:

http://localhost:3000

Check the home page and representative content routes such as /entries, /collections, /albums, and /about. Empty sections may be absent from navigation, depending on the selected archive.

Validate a production build

Before deployment, run:

npm run lint
npm run build

To exercise the production server locally:

npm run start

The default address is http://localhost:3000. To choose another port, pass it to Next.js:

npm run start -- -p 4000

What a successful installation confirms

A working home page confirms that the app can start and read the selected archive. Also open an entry, a collection, and—when present—an album image. These routes test Markdown rendering and the runtime file handlers that a home-page-only check does not cover.

If the archive is missing or invalid, the app intentionally displays an archive validation page rather than failing with an opaque server error. Use the message on that page together with Operations and troubleshooting to correct the source archive.