@kentcdodds/package-app-kit
Design tokens, PWA install/update, About/version, cache helpers, and optional realtime notes sync for Kody package apps.
starter-remix/README.template.md
34 lines · 1.7 KB · MarkdownAPP_TITLE
Intent
Desktop + mobile friendly Kody package app scaffolded from @kentcdodds/package-app-kit starter-remix/.
Replace this Intent with the product goal before the first real publish.
Stack
- Remix recipe under the framework-agnostic host —
app/router.tsremounts +export default { fetch }(nokody.app.runtime) - Root
tsconfig.jsonwith"jsx": "react-jsx"+"jsxImportSource": "remix/ui" - Dual per-file pragmas on every SSR
.tsxthat uses JSX:/** @jsxRuntime automatic */+/** @jsxImportSource remix/ui */ - Mount-prefixed routes (
route(packageContext.appBasePath, …)) with remount in the entry - Controllers + form actions with
get(KodyRuntime)/packageStorage() - Browser
run()entry (app/assets/entry.ts) hydratingclientEntry('kody:app#Name', …)islands — no@remix-run/*, no import map - Static assets (
public/styles.css,public/sw.jsvia__version.json) - Kit: design tokens CSS, record-version / About, install CTA + update banner islands, Notes form + double-check
List mark
Identity/list icon: .kody/icon.png (scaffold ships .kody/icon.svg). Replace with your logo. PWA icons stay under /icons/ via the kit — not in .kody/.
After scaffolding
See After scaffolding in AGENTS.md: brand the list mark + PWA icons, fill titles/description, keep local record-version, confirm the Remix recipe, and match manifest theme colors to the mark.
After publish
Call this package's ./record-version (local packageStorage), not the kit's:
import recordVersion from 'kody:__PACKAGE_NAME__/record-version'
await recordVersion({ sha: '<published_commit>', message: '<commit message>' })