# kitr > One way to build everything. kitr is the opinionated TypeScript framework for web, mobile, desktop and backend apps: a thin layer over TanStack, React Hook Form, Zustand, ky, h3 and Tailwind, with one import surface, one data contract and one CLI. ## Docs - [What is kitr](https://kitr.dev/docs/what-is-kitr.md): The mental model for kitr in five minutes: platforms, packages, kits and providers, and what it is built on. - [Getting started](https://kitr.dev/docs/getting-started.md): Install kitr, create your first app and add a package, in about five minutes. - [Project structure](https://kitr.dev/docs/project-structure.md): Where every kind of file in a kitr app lives, what it is called, and the command that writes it. - [Configuration](https://kitr.dev/docs/configuration.md): How kitrrc.ts, config files, providers and environment variables fit together. - [Loading and saving data](https://kitr.dev/docs/data.md): The one idea that ties kitr together, a single contract for every data source. - [Built for agents](https://kitr.dev/docs/agents.md): Why kitr suits coding agents, how to install the Claude Code plugin, and what an agent gets from the CLI. - [How kitr compares](https://kitr.dev/docs/compare.md): Where kitr overlaps with Next.js, Remix and React Router, TanStack Start, Expo, AdonisJS and Laravel, and when to pick each. - [Add your own code](https://kitr.dev/docs/extending.md): Add your own state, services and drivers in three steps: a provider in your project, a swapped driver, a package of your own. - [Building a package](https://kitr.dev/docs/building-packages.md): Write a kitr package that the CLI can install and this site can list, with docs and a live example. - [Package contract](https://kitr.dev/docs/package-contract.md): How a package plugs into kitr add, the CLI and the build: questions, codemods, commands, generators. - [CLI](https://kitr.dev/docs/cli.md): Every kitr command and flag. - [Kits](https://kitr.dev/docs/kits.md): What each kit sets up, what the presets scaffold, and how to write a kit of your own. - [Platforms](https://kitr.dev/docs/platforms.md): Web, server, desktop and mobile platforms: options, commands and layout. - [Choosing a data source](https://kitr.dev/docs/data-sources.md): Actions, API routes, HTTP or realtime: which one to use, what each kit chose and how they mix. - [Packages](https://kitr.dev/docs/packages.md): What each package provides, which kit includes it, and the roadmap. - [Entry points](https://kitr.dev/docs/entry-points.md): How @kitr/* packages wrap upstream libraries, and the rules behind them. - [Design decisions](https://kitr.dev/docs/design.md): The rules behind kitr's architecture and what each one means for your code. - [Glossary](https://kitr.dev/docs/glossary.md): The words kitr uses, each in one line: platform, package, kit, provider, contract, effects and more. ## Guides - [Build a dashboard on an existing API](https://kitr.dev/guides/dashboard.md): A signed-in admin app with a sortable, paged table and a create form, against a backend you already have. - [Build a full-stack app](https://kitr.dev/guides/fullstack-app.md): One codebase with server-rendered pages, a database, server actions, a public API and live updates. - [Build an API server without React](https://kitr.dev/guides/api-server.md): A JSON API with controllers, validation, a database, auth, realtime events, OpenAPI and a typed client, and no React anywhere. - [Add sign-in, end to end](https://kitr.dev/guides/authentication.md): Users, password sign-in, cookie sessions, guarded pages, sessions in server actions and API routes, and permissions checked the same way in the browser and on the server. - [Add live updates](https://kitr.dev/guides/live-updates.md): Push changes from the server to every open screen over typed channels, so lists and details update without a reload. - [Test your app](https://kitr.dev/guides/testing.md): A test suite for a kitr app, from permission rules to a real browser, with a test database and a CI workflow that runs it on every push. - [Deploy to production](https://kitr.dev/guides/deploy.md): Build a kitr app, set its environment, run migrations and ship it as static files, one Node process, a Docker image or a Cloudflare Worker. - [Run on more than one instance](https://kitr.dev/guides/scale-out.md): Put every piece of state a kitr app keeps in memory into Redis and object storage, so two or twenty instances behind a load balancer behave like one. - [Keep several apps in one repository](https://kitr.dev/guides/monorepo.md): A pnpm workspace with a web app, an API server, a shared package of schemas and types, and a private kitr package, all checked and tested together. - [Build a phone app](https://kitr.dev/guides/mobile-app.md): Ship an iPhone and Android app from the same React code as your web app, with native navigation, sign-in that survives restarts, the share sheet and deep links. - [Build a desktop app](https://kitr.dev/guides/desktop-app.md): Turn your React app into a Windows, macOS and Linux app with Electron, a list beside the detail, a real app menu, native save dialogs over typed IPC, and signed installers. - [Ship one app to the web, phones and desktops](https://kitr.dev/guides/one-codebase.md): One kitr project that builds a web app, an iPhone and Android app and a desktop app from one route table, with per-platform pages, layouts and behaviour where they differ. - [Create a package](https://kitr.dev/guides/create-a-package.md): Write a kitr package that `kitr add` installs and wires, with a config file, a container service, a CLI command, a generator, doctor checks and docs. - [Migrate from Next.js](https://kitr.dev/guides/migrate-from-nextjs.md): Move a Next.js App Router project to kitr page by page, with a map from every Next.js concept to its kitr equivalent. ## Packages - [3D API reference](https://kitr.dev/packages/3d/api.md): Every export of @kitr/3d, with its signature. - [3D Guide](https://kitr.dev/packages/3d/guide.md): Render 3D scenes and models that stay smooth on phones and fall back when WebGL is missing. - [3D](https://kitr.dev/packages/3d.md): Render 3D scenes and models that stay smooth on phones and fall back when WebGL is missing. - [Server actions API reference](https://kitr.dev/packages/actions/api.md): Every export of @kitr/actions, with its signature. - [Server actions Guide](https://kitr.dev/packages/actions/guide.md): Call server code straight from a component, like a form submit, without writing an API route. - [Server actions](https://kitr.dev/packages/actions.md): Call server code straight from a component, like a form submit, without writing an API route. - [Analytics API reference](https://kitr.dev/packages/analytics/api.md): Every export of @kitr/analytics, with its signature. - [Analytics Guide](https://kitr.dev/packages/analytics/guide.md): Count page views and button clicks, and send them to the analytics service you choose. - [Analytics](https://kitr.dev/packages/analytics.md): Count page views and button clicks, and send them to the analytics service you choose. - [Animation API reference](https://kitr.dev/packages/animation/api.md): Every export of @kitr/animation, with its signature. - [Animation Guide](https://kitr.dev/packages/animation/guide.md): Animate components and page changes, and respect the visitor's reduced-motion setting. - [Animation](https://kitr.dev/packages/animation.md): Animate components and page changes, and respect the visitor's reduced-motion setting. - [API routes API reference](https://kitr.dev/packages/api/api.md): Every export of @kitr/api and @kitr/api/client. - [API routes Guide](https://kitr.dev/packages/api/guide.md): Build JSON API routes with validation, and call them from the browser fully typed. - [API routes](https://kitr.dev/packages/api.md): Build JSON API routes with validation, and call them from the browser fully typed. - [Auth API reference](https://kitr.dev/packages/auth/api.md): Every export of @kitr/auth and @kitr/auth/server. - [Auth Guide](https://kitr.dev/packages/auth/guide.md): Sign users in and out, protect pages, and check who can do what. - [Auth](https://kitr.dev/packages/auth.md): Sign users in and out, protect pages, and check who can do what. - [Cache API reference](https://kitr.dev/packages/cache/api.md): Every export of @kitr/cache, with its signature. - [Cache Guide](https://kitr.dev/packages/cache/guide.md): Remember slow results on the server and clear them by tag when the data changes. - [Cache](https://kitr.dev/packages/cache.md): Remember slow results on the server and clear them by tag when the data changes. - [Consent API reference](https://kitr.dev/packages/consent/api.md): Every export of @kitr/consent, with its signature. - [Consent Guide](https://kitr.dev/packages/consent/guide.md): Ask for cookie and tracking consent once, and hold analytics and error reports until people agree. - [Consent](https://kitr.dev/packages/consent.md): Ask for cookie and tracking consent once, and hold analytics and error reports until people agree. - [Database API reference](https://kitr.dev/packages/db/api.md): Every export of @kitr/db, with its signature. - [Database Guide](https://kitr.dev/packages/db/guide.md): Connect your database so every request can use it. - [Database](https://kitr.dev/packages/db.md): Connect your database so every request can use it. - [Desktop API reference](https://kitr.dev/packages/desktop/api.md): Every export of @kitr/desktop, with its signature. - [Desktop Guide](https://kitr.dev/packages/desktop/guide.md): Ship the same app to Windows, macOS and Linux in an Electron shell: Chromium ships with the app, so it renders the same everywhere. - [Desktop](https://kitr.dev/packages/desktop.md): Ship the same app to Windows, macOS and Linux in an Electron shell: Chromium ships with the app, so it renders the same everywhere. - [Devtools API reference](https://kitr.dev/packages/devtools/api.md): Every export of @kitr/devtools, with its signature. - [Devtools Guide](https://kitr.dev/packages/devtools/guide.md): A panel that shows what every package is doing, opened by a button, a shortcut or a gesture. On in development; one flag ships it. - [Devtools](https://kitr.dev/packages/devtools.md): A panel that shows what every package is doing, opened by a button, a shortcut or a gesture. On in development; one flag ships it. - [Files API reference](https://kitr.dev/packages/files/api.md): Every export of @kitr/files, with its signature. - [Files Guide](https://kitr.dev/packages/files/guide.md): Let people open, save and pick files on any platform, with a download fallback in older browsers. - [Files](https://kitr.dev/packages/files.md): Let people open, save and pick files on any platform, with a download fallback in older browsers. - [Feature flags API reference](https://kitr.dev/packages/flags/api.md): Every export of @kitr/flags, with its signature. - [Feature flags Guide](https://kitr.dev/packages/flags/guide.md): Turn features on for some users and off for others, with the same answer on the server and in the browser. - [Feature flags](https://kitr.dev/packages/flags.md): Turn features on for some users and off for others, with the same answer on the server and in the browser. - [Forms API reference](https://kitr.dev/packages/forms/api.md): Every export of @kitr/forms. - [Forms Guide](https://kitr.dev/packages/forms/guide.md): Build forms with validation, and show server errors next to the right field. - [Forms](https://kitr.dev/packages/forms.md): Build forms with validation, and show server errors next to the right field. - [HTTP client API reference](https://kitr.dev/packages/http/api.md): Every export of @kitr/http. - [HTTP client Guide](https://kitr.dev/packages/http/guide.md): Call a REST API with login tokens added for you and errors in one shape. - [HTTP client](https://kitr.dev/packages/http.md): Call a REST API with login tokens added for you and errors in one shape. - [Translations API reference](https://kitr.dev/packages/i18n/api.md): Every export of @kitr/i18n, with its signature. - [Translations Guide](https://kitr.dev/packages/i18n/guide.md): Translate your app into several languages with typed keys. - [Translations](https://kitr.dev/packages/i18n.md): Translate your app into several languages with typed keys. - [Jobs API reference](https://kitr.dev/packages/jobs/api.md): Every export of @kitr/jobs, with its signature. - [Jobs Guide](https://kitr.dev/packages/jobs/guide.md): Run work in the background or on a schedule, with retries when it fails. - [Jobs](https://kitr.dev/packages/jobs.md): Run work in the background or on a schedule, with retries when it fails. - [Logger API reference](https://kitr.dev/packages/logger/api.md): Every export of @kitr/logger, with its signature. - [Logger Guide](https://kitr.dev/packages/logger/guide.md): Write readable logs in development and structured logs in production. - [Logger](https://kitr.dev/packages/logger.md): Write readable logs in development and structured logs in production. - [Mail API reference](https://kitr.dev/packages/mail/api.md): Every export of @kitr/mail, with its signature. - [Mail Guide](https://kitr.dev/packages/mail/guide.md): Write emails as React components, send them through your provider, and preview them in development. - [Mail](https://kitr.dev/packages/mail.md): Write emails as React components, send them through your provider, and preview them in development. - [Mobile API reference](https://kitr.dev/packages/mobile/api.md): Every export of @kitr/mobile, with its signature. - [Mobile Guide](https://kitr.dev/packages/mobile/guide.md): Ship the same app to iPhone and Android, with every kitr package switched to its native version. - [Mobile](https://kitr.dev/packages/mobile.md): Ship the same app to iPhone and Android, with every kitr package switched to its native version. - [Mocks API reference](https://kitr.dev/packages/mocks/api.md): Every export of @kitr/mocks, with its signature. - [Mocks Guide](https://kitr.dev/packages/mocks/guide.md): Fake your API while you build the frontend or run tests. - [Mocks](https://kitr.dev/packages/mocks.md): Fake your API while you build the frontend or run tests. - [Monitoring API reference](https://kitr.dev/packages/monitoring/api.md): Every export of @kitr/monitoring, with its signature. - [Monitoring Guide](https://kitr.dev/packages/monitoring/guide.md): Catch errors in the browser and on the server, and see which user hit them and what they did first. - [Monitoring](https://kitr.dev/packages/monitoring.md): Catch errors in the browser and on the server, and see which user hit them and what they did first. - [Native API reference](https://kitr.dev/packages/native/api.md): Every export of @kitr/native, with its signature. - [Native Guide](https://kitr.dev/packages/native/guide.md): Clipboard, share sheet, haptics, location, camera and fingerprint unlock, each with a web fallback. - [Native](https://kitr.dev/packages/native.md): Clipboard, share sheet, haptics, location, camera and fingerprint unlock, each with a web fallback. - [Notifications API reference](https://kitr.dev/packages/notifications/api.md): Every export of @kitr/notifications, with its signature. - [Notifications Guide](https://kitr.dev/packages/notifications/guide.md): Ask for permission and show local or scheduled notifications that open the right page when tapped. - [Notifications](https://kitr.dev/packages/notifications.md): Ask for permission and show local or scheduled notifications that open the right page when tapped. - [Offline API reference](https://kitr.dev/packages/offline/api.md): Every export of @kitr/offline, with its signature. - [Offline Guide](https://kitr.dev/packages/offline/guide.md): Keep showing loaded data with no connection, and send queued changes when the network comes back. - [Offline](https://kitr.dev/packages/offline.md): Keep showing loaded data with no connection, and send queued changes when the network comes back. - [Platform API reference](https://kitr.dev/packages/platform/api.md): Every export of @kitr/platform, with its signature. - [Platform Guide](https://kitr.dev/packages/platform/guide.md): Know where your app is running, whether it is online or in the background, and handle the back button and deep links. - [Platform](https://kitr.dev/packages/platform.md): Know where your app is running, whether it is online or in the background, and handle the back button and deep links. - [Query API reference](https://kitr.dev/packages/query/api.md): Every export of @kitr/query. - [Query Guide](https://kitr.dev/packages/query/guide.md): Load data from your API, keep it cached, and refresh it when something changes. - [Query](https://kitr.dev/packages/query.md): Load data from your API, keep it cached, and refresh it when something changes. - [React API reference](https://kitr.dev/packages/react/api.md): Every export of @kitr/react, with its signature. - [React Guide](https://kitr.dev/packages/react/guide.md): React with the kitr app in context, so every component can reach services and config. - [React](https://kitr.dev/packages/react.md): React with the kitr app in context, so every component can reach services and config. - [Realtime API reference](https://kitr.dev/packages/realtime/api.md): Every export of @kitr/realtime, with its signature. - [Realtime Guide](https://kitr.dev/packages/realtime/guide.md): Define a live channel once and push updates to every open screen, over WebSockets, Socket.IO or server events. - [Realtime](https://kitr.dev/packages/realtime.md): Define a live channel once and push updates to every open screen, over WebSockets, Socket.IO or server events. - [Router API reference](https://kitr.dev/packages/router/api.md): Every export of @kitr/router, with its signature. - [Router Guide](https://kitr.dev/packages/router/guide.md): Pages on the kitr route table, rendered by TanStack Router: typed links, loaders and guards. Web, desktop and mobile apps get it free. - [Router](https://kitr.dev/packages/router.md): Pages on the kitr route table, rendered by TanStack Router: typed links, loaders and guards. Web, desktop and mobile apps get it free. - [Secure storage API reference](https://kitr.dev/packages/secure-storage/api.md): Every export of @kitr/secure-storage, with its signature. - [Secure storage Guide](https://kitr.dev/packages/secure-storage/guide.md): Keep login tokens and secrets in the phone or computer's secure vault instead of plain storage. - [Secure storage](https://kitr.dev/packages/secure-storage.md): Keep login tokens and secrets in the phone or computer's secure vault instead of plain storage. - [SEO API reference](https://kitr.dev/packages/seo/api.md): Every export of @kitr/seo, with its signature. - [SEO Guide](https://kitr.dev/packages/seo/guide.md): Give every page a title, a share preview and a sitemap entry so search engines and chat apps show it well. - [SEO](https://kitr.dev/packages/seo.md): Give every page a title, a share preview and a sitemap entry so search engines and chat apps show it well. - [Server API reference](https://kitr.dev/packages/server/api.md): Every export of @kitr/server. - [Server Guide](https://kitr.dev/packages/server/guide.md): Run a Node server that starts, logs and shuts down cleanly. - [Server](https://kitr.dev/packages/server.md): Run a Node server that starts, logs and shuts down cleanly. - [Shield API reference](https://kitr.dev/packages/shield/api.md): Every export of @kitr/shield, with its signature. - [Shield Guide](https://kitr.dev/packages/shield/guide.md): Turn on the security basics every API needs: CORS, CSRF protection, safe headers and rate limits. - [Shield](https://kitr.dev/packages/shield.md): Turn on the security basics every API needs: CORS, CSRF protection, safe headers and rate limits. - [State API reference](https://kitr.dev/packages/state/api.md): Every export of @kitr/state. - [State Guide](https://kitr.dev/packages/state/guide.md): Keep app-wide values like a cart or settings, and optionally save them in the browser. - [State](https://kitr.dev/packages/state.md): Keep app-wide values like a cart or settings, and optionally save them in the browser. - [Storage API reference](https://kitr.dev/packages/storage/api.md): Every export of @kitr/storage, with its signature. - [Storage Guide](https://kitr.dev/packages/storage/guide.md): Save small values in the browser or in cookies with types, and read the same cookies on the server. - [Storage](https://kitr.dev/packages/storage.md): Save small values in the browser or in cookies with types, and read the same cookies on the server. - [Tables API reference](https://kitr.dev/packages/table/api.md): Every export of @kitr/table. - [Tables Guide](https://kitr.dev/packages/table/guide.md): Show rows of data with sorting, paging and filters that stay in the URL. - [Tables](https://kitr.dev/packages/table.md): Show rows of data with sorting, paging and filters that stay in the URL. - [Tailwind API reference](https://kitr.dev/packages/tailwind/api.md): Every export of @kitr/tailwind, with its signature. - [Tailwind Guide](https://kitr.dev/packages/tailwind/guide.md): Style with Tailwind CSS classes, already set up with kitr's colours. - [Tailwind](https://kitr.dev/packages/tailwind.md): Style with Tailwind CSS classes, already set up with kitr's colours. - [Tauri API reference](https://kitr.dev/packages/tauri/api.md): Every export of @kitr/tauri, with its signature. - [Tauri Guide](https://kitr.dev/packages/tauri/guide.md): Ship the same app to Windows, macOS and Linux as a small Tauri binary on the operating system's webview. - [Tauri](https://kitr.dev/packages/tauri.md): Ship the same app to Windows, macOS and Linux as a small Tauri binary on the operating system's webview. - [Testing API reference](https://kitr.dev/packages/testing/api.md): Every export of @kitr/testing, with its signature. - [Testing Guide](https://kitr.dev/packages/testing/guide.md): Test components and API routes with everything already wired up. - [Testing](https://kitr.dev/packages/testing.md): Test components and API routes with everything already wired up. - [Theme API reference](https://kitr.dev/packages/theme/api.md): Every export of @kitr/theme, with its signature. - [Theme Guide](https://kitr.dev/packages/theme/guide.md): Light, dark and system themes with no flash on load, design tokens, and the components you copy into your app. - [Theme](https://kitr.dev/packages/theme.md): Light, dark and system themes with no flash on load, design tokens, and the components you copy into your app. - [Toast API reference](https://kitr.dev/packages/toast/api.md): Every export of @kitr/toast, with its signature. - [Toast Guide](https://kitr.dev/packages/toast/guide.md): Show short messages like "Saved" or "Could not send" from anywhere in your app, even outside React. - [Toast](https://kitr.dev/packages/toast.md): Show short messages like "Saved" or "Could not send" from anywhere in your app, even outside React. - [Updater API reference](https://kitr.dev/packages/updater/api.md): Every export of @kitr/updater, with its signature. - [Updater Guide](https://kitr.dev/packages/updater/guide.md): Tell people a new version is ready and update the app in place, on the web, desktop and mobile. - [Updater](https://kitr.dev/packages/updater.md): Tell people a new version is ready and update the app in place, on the web, desktop and mobile. - [Uploads API reference](https://kitr.dev/packages/uploads/api.md): Every export of @kitr/uploads, with its signature. - [Uploads Guide](https://kitr.dev/packages/uploads/guide.md): Accept file uploads with size limits, store them on disk or in the cloud, and show progress in the browser. - [Uploads](https://kitr.dev/packages/uploads.md): Accept file uploads with size limits, store them on disk or in the cloud, and show progress in the browser. - [Vite API reference](https://kitr.dev/packages/vite/api.md): Every export of @kitr/vite, with its signature. - [Vite Guide](https://kitr.dev/packages/vite/guide.md): Build and serve the browser side of your app with Vite, wired to kitrrc.ts by one plugin. - [Vite](https://kitr.dev/packages/vite.md): Build and serve the browser side of your app with Vite, wired to kitrrc.ts by one plugin. - [Web API reference](https://kitr.dev/packages/web/api.md): Every export of @kitr/web, with its signature. - [Web Guide](https://kitr.dev/packages/web/guide.md): Ship to the browser as a static site, a single-page app or a server-rendered app, installable if you want. - [Web](https://kitr.dev/packages/web.md): Ship to the browser as a static site, a single-page app or a server-rendered app, installable if you want.