Skip to main content
Starts a Tassyir app. The project it writes runs on your own server and uses every part of the app contract: the manifest, an embedded page in the dashboard, token exchange and the Admin API, signed webhooks and app data. It is ready for AI coding agents: an AGENTS.md, a CLAUDE.md and a Claude Code skill (tassyir-app) that explains the contract.

Use

Node 22.18 or later:
It writes my-app/ and prints the next steps. The project’s README walks the rest with today’s tools: create the app in the developer console, upload the manifest, create a dev store, run behind an https tunnel, and install. With options (after --, which npm needs to pass them on):
The handle, name and URL are checked with the manifest’s own rules (@tassyir/app-manifest, the Tassyir API’s validator) before anything is written, and nothing is ever written into a folder that is not empty.

The project

Why Hono: it is built on the Web-standard Request and Response, like @tassyir/app (fetch and WebCrypto only), so the same routes run on Node today and on Cloudflare Workers, which Tassyir Hosting is built on. Node runs the TypeScript as it is (type stripping, Node 22.18 and later), so the server has no build step; esbuild bundles the page. The generated package.json names the @tassyir/* versions released with this version of create-tassyir-app, and pins every other dependency to an exact version.

Errors

A refusal has a stable code, the input at fault (path: --handle, --url, directory, …), a message and a one-sentence fix; problems lists every problem found, this one first. With --json (npm create tassyir-app@latest my-app -- --handle tassyir --json):
Codes: TEMPLATE_UNKNOWN, TEMPLATE_NOT_AVAILABLE, TARGET_NOT_EMPTY, TARGET_NOT_A_DIRECTORY, INVALID_ARGUMENT, NODE_VERSION_UNSUPPORTED, WRITE_FAILED, INSTALL_FAILED, and the manifest’s own codes for the handle, name and URL (MANIFEST_HANDLE_INVALID, MANIFEST_URL_INVALID, …).

From code

Tassyir Hosting

A second template, an app on Tassyir Hosting (Hono and React, no server to run), comes once Tassyir Hosting opens. Until then --template hosted answers TEMPLATE_NOT_AVAILABLE. Apps made from the external template move to it with the same manifest, API and webhooks: their routes are Web-standard.

License

MIT