A SvelteKit app for browser-local recurring checklists. Create checklists with sections and tasks, assign reset schedules, check items off, and let completion state clear automatically when each task's schedule rolls over.
- Create, edit, delete, import, and export checklist definitions.
- Organize checklists into sections with default schedules.
- Override schedules per task when one item needs a different cadence.
- Track repeatable tasks as counters, including carryover banks for tasks that can accumulate missed attempts.
- Supported schedules:
- Daily resets at a configured UTC or local time.
- Weekly resets on a selected weekday.
- Biweekly resets from an anchored reset date.
- Interval resets based on either a fixed anchor or the task's completion time.
- Copy direct links with
?link=<key>for checklist access. - Store checklist definitions and completion state locally in the browser.
- Ship to Cloudflare Workers through the SvelteKit Cloudflare adapter.
- Svelte 5 and SvelteKit
- TypeScript
- Vite
- Tailwind CSS and Skeleton UI
- Vitest
- Wrangler / Cloudflare Workers
- pnpm
- Node.js compatible with the versions required by the dependencies.
- pnpm 11.9.0, as recorded in
package.json. - Wrangler authentication for deploys.
Install dependencies:
pnpm installStart the local dev server:
pnpm devBuild the app:
pnpm buildPreview the Cloudflare build locally:
pnpm preview| Command | Description |
|---|---|
pnpm dev |
Start the Vite dev server. |
pnpm build |
Generate Wrangler types and build the app. |
pnpm preview |
Build, then run the app with wrangler dev. |
pnpm check |
Run Wrangler type checks, sync SvelteKit, and run svelte-check. |
pnpm lint |
Run Prettier check and ESLint. |
pnpm format |
Format the repo with Prettier. |
pnpm eslint:fix |
Apply automatic ESLint fixes. |
pnpm test |
Run unit tests once. |
pnpm test:unit |
Run Vitest. |
pnpm gen |
Generate Cloudflare Worker types. |
pnpm deploy |
Build and deploy with Wrangler. |
The app is client-side first. It stores state in the current browser profile using IndexedDB.
There is currently no built-in cloud sync provider. Checklists and completions stay on the current device/browser profile unless exported, imported elsewhere, or manually cleared.
Checklist exports are portable JSON files containing the checklist structure and schedules, but not completion history. Imports validate the portable format and reject duplicate direct-link keys.
Direct links are local app links. They use the link query parameter and open a checklist that already exists in the current browser profile. A checklist can define a human-readable key, or the app falls back to the checklist ID:
/view/?link=ACNH
Bundled templates live in src/lib/checklists/templates/ as portable checklist JSON. The manage screen discovers these files at build time and exposes them in the "Add Template" menu.
The project is configured for Cloudflare Workers in wrangler.jsonc. To deploy:
pnpm deployThe build output is generated under .svelte-kit/cloudflare, and Wrangler serves assets from that directory.