The backend is straight Rust. Bun is used as a package management tool & as a script runner, to invoke Tauri commands that start up a Vite webserver to provide the UI, and start something that rebuilds the binary when Rust files change.
Typescript is used for the Svelte UI. Svelte talks to the Rust backend through Tauri (by default). Both support a headless/web mode where the Svelte frontend connects to the backend over HTTP.