123# @nzip/lofi45**Build installable Deno web apps that open immediately, keep working offline, and sync when users6choose.**78lofi generates an [Astro](https://astro.build) + [Preact](https://preactjs.com) app backed by9durable local data. Users start with a private, on-device account—no sign-in or network required—and10can add [Jazz](https://jazz.tools)-powered sync and recovery later without replacing that identity11or rewriting product code.1213[Documentation](https://lofi.host/docs) · [API reference](https://lofi.host/api) ·14[JSR package](https://jsr.io/@nzip/lofi) · [MIT License](LICENSE)1516Building with an AI agent? Feed it [llms.txt](https://lofi.host/llms.txt) for an index of the17documentation, or [llms-full.txt](https://lofi.host/llms-full.txt) for the complete docs and API18reference in one file — both generated from the deployed version's sources.1920## Quick start2122Requires **Deno 2.9+**. It is the only global runtime you need.2324```sh25deno run -A jsr:@nzip/lofi/create my-app26cd my-app27deno task dev28```2930Open the URL printed by the development server. The starter is a small task app: add a task and31reload the page to see that it remains in durable local storage. Once the page is open, disconnect32the network and you can keep reading and writing data locally.3334The generated app starts in local-only mode. You do not need an account, a backend, or an `.env`35file to begin building. To provision managed Jazz sync, scaffold with `--sync` or run36`deno task jazz:provision` later; either way users keep the account they already have.3738Continue with [Getting started](https://lofi.host/docs/getting-started) when you are ready to39replace the task example with your own schema, permissions, hook, and UI.4041## What you get4243- **Local-first data** read from durable local storage; failures are surfaced, never silently44 swapped for memory.45- **Identity from the first launch**, with optional sync and account recovery via passkey or a46 24-word phrase.47- **Narrow collaboration templates** — private, direct-share, and fixed-role group access behind a48 small [`@nzip/lofi/access`](https://lofi.host/api/access) API.49- **Local-first test helpers** — Playwright-backed two-client fixtures for offline writes and50 convergence.51- **An explicit authoring boundary**: product code owns schema, permissions, config, islands,52 styles, and tests; lofi owns storage, identity, sync, lifecycle, and PWA plumbing.5354The [documentation](https://lofi.host/docs) covers all of this in depth: guides,55[commands](https://lofi.host/docs/reference/commands),56[project layout](https://lofi.host/docs/reference/project-layout),57[installed-app recipes](https://lofi.host/docs/recipes),58[examples](https://lofi.host/docs/examples/shared), and the59[identity and recovery model](https://lofi.host/docs/auth-identity).6061## Where lofi fits6263lofi is designed for mobile web apps where offline operation is a requirement, not a best-effort64enhancement. Keep these current constraints in mind:6566- lofi is an early, pre-1.0 release.67- The data layer is Jazz 2 alpha and deliberately pinned to a reviewed version68 ([stack and version policy](https://lofi.host/#stack)).69- The supported browser floors are Android Chrome 148+ and iOS Safari 16.4+.70- Recovery is user-controlled: lofi does not retain recoverable account material on the server, so71 the recovery phrase must be kept safe.7273## Developing lofi itself7475This repository is the framework's development monorepo. `package/` contains the `@nzip/lofi`76source, `apps/reference/` is the reference app against which the generator is validated, and77`website/` builds the [lofi.host](https://lofi.host) documentation site.7879See [CONTRIBUTING.md](https://github.com/FelineStateMachine/lofi/blob/main/CONTRIBUTING.md) for the80repository workflow and the81[DevX contract](https://github.com/FelineStateMachine/lofi/blob/main/docs/devx-contract.md) for the82framework's testable promises and boundaries.