Project Structure
A Tauri project is usually made of 2 parts, a Rust project and a JavaScript project (optional), and typically the setup looks something like this:
.├── package.json├── index.html├── src/│ ├── main.js├── src-tauri/│ ├── Cargo.toml│ ├── Cargo.lock│ ├── build.rs│ ├── tauri.conf.json│ ├── src/│ │ ├── main.rs│ │ └── lib.rs│ ├── icons/│ │ ├── icon.png│ │ ├── icon.icns│ │ └── icon.ico│ └── capabilities/│ └── default.jsonIn this case, the JavaScript project is at the top level, and the Rust project is inside src-tauri/,
the Rust project is a normal Cargo project with some extra files:
tauri.conf.jsonis the main configuration file for Tauri, it contains everything from the application identifier to dev server url, this file is also a marker for the Tauri CLI to find the Rust project, to learn more about it, see Tauri Configcapabilities/directory is the default folder Tauri reads capability files from (in short, you need to allow commands here to use them in your JavaScript code), to learn more about it, see Securityicons/directory is the default output directory of thetauri iconcommand, it’s usually referenced intauri.conf.json > bundle > iconand used for the app’s iconsbuild.rscontainstauri_build::build()which is used for tauri’s build systemsrc/lib.rscontains the Rust code and the mobile entry point (the function marked with#[cfg_attr(mobile, tauri::mobile_entry_point)]), the reason we don’t write directly inmain.rsis because we compile your app to a library in mobile builds and load them through the platform frameworkssrc/main.rsis the main entry point for the desktop, and we runapp_lib::run()inmainto use the same entry point as mobile, so to keep it simple, don’t modify this file, modifylib.rsinstead. Note thatapp_libcorresponds to[lib.name]in Cargo.toml.
Tauri works similar to a static web host, and the way it builds is that you would compile your JavaScript project to static files first, and then compile the Rust project that will bundle those static files in, so the JavaScript project setup is basically the same as if you were to build a static website, to learn more, see Frontend Configuration
If you want to work with Rust code only, simply remove everything else and use the src-tauri/ folder as your top level project or as a member of your Rust workspace
© 2025 Tauri Contributors. CC-BY / MIT