Platforms
Pick the platform, not the framework.
Where your app runs is a platform. Each one is a package you add with one command, and they all share the same app/ folder, the same packages and the same CLI.
Every platform at a glance
| Platform | Targets | Built with | Add it |
|---|---|---|---|
| Web | Static, SPA, SSR, PWA | Vite + TanStack Start | kitr add web site --mode ssr |
| Server | Node, Bun, Deno, Workers | h3 | kitr add server api --runtime node |
| DesktopComing soon | Windows, macOS, Linux | Electron | kitr add desktop app |
| TauriComing soon | Windows, macOS, Linux | Rust + system webview | kitr add tauri app |
| MobileComing soon | iOS, Android | Capacitor | kitr add mobile phone |
Need something else, like a kiosk or a browser extension? A platform is a package with a definePlatform() factory, so you can write your own. Write a platform →
Mix and match
One app. As many platforms as you need.
A platform is one named line in kitrrc.ts. Add one with a single command, keep several of the same type, and run them all with kitr dev. They share your app/ folder, your data contracts and your packages.
Electron or Tauri: a project keeps one desktop shell.
// kitrrc.ts
import { defineKitrConfig } from 'kitr/app'
import { server } from 'kitr/server'
import { web } from 'kitr/web'
export default defineKitrConfig({
platforms: {
site: web({ mode: 'ssr' }),
api: server({ runtime: 'node' }),
},
})$ kitr add web site --mode ssr
$ kitr add server api
$ kitr dev
✓ site http://localhost:3000
✓ api http://localhost:3001