# leptos-axum **Repository Path**: adyfang/leptos-axum ## Basic Information - **Project Name**: leptos-axum - **Description**: No description available - **Primary Language**: Rust - **License**: Unlicense - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-17 - **Last Updated**: 2026-10-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Leptos Logo # Leptos Axum Workspace with Tailwind CSS This is a full-stack web application built with [Leptos](https://github.com/leptos-rs/leptos) and [Axum](https://github.com/tokio-rs/axum), featuring Tailwind CSS for styling. Based on the [start-axum-workspace](https://github.com/leptos-rs/start-axum-workspace) template with added Tailwind CSS integration. ## Features - **Leptos** - Reactive web framework for Rust - **Axum** - Modern web server framework - **Tailwind CSS** - Utility-first CSS framework - **Rust 2024 Edition** - Shared across all workspace crates - **Workspace Structure** - Organized into `app`, `frontend`, and `server` crates - **Islands Architecture** - For selective hydration - **End-to-End Testing** - Playwright integration ## Getting Started ### Prerequisites If you don't have `cargo-leptos` installed: ```bash cargo install cargo-leptos --locked ``` ### Installation Clone this repository: ```bash git clone https://github.com/g1ibby/leptos-axum cd leptos-axum ``` ### Islands support Note that for islands to work correctly, you need to have a `use app;` in your frontend `lib.rs` otherwise rustc / wasm_bindgen gets confused. To prevent clippy from complaining, at the top of the `frontend/lib.rs` file place: ```rust #[allow(clippy::single_component_path_imports)] #[allow(unused_imports)] use app; ``` ## Development Start the development server: ```bash cargo leptos watch ``` The application will be available at `http://127.0.0.1:3000`. ### Leptos DX This project includes a few development-experience defaults recommended by the Leptos book: - `console_error_panic_hook` is enabled during WASM hydration for useful browser panic traces. - `leptosfmt` is configured for Leptos `view!` macros, with Rust 2024 set in `rustfmt.toml`. Install `leptosfmt` if it is not already available: ```bash cargo install leptosfmt ``` ### Helix Project-local Helix settings live in `.helix/languages.toml`: - rust-analyzer ignores the `#[server]` proc macro from `leptos_macro`, which improves completions inside server functions. - rust-analyzer analyzes all Cargo features so `ssr` and `hydrate` code are both visible in the editor. - Helix formats Rust files with `leptosfmt`. Make sure rust-analyzer is installed for the active Rust toolchain: ```bash rustup component add rust-analyzer rust-src clippy ``` ## Installing Additional Tools By default, `cargo-leptos` uses `nightly` Rust, `cargo-generate`, and `sass`. If you run into any trouble, you may need to install one or more of these tools. 1. `rustup toolchain install nightly --allow-downgrade` - make sure you have Rust nightly 2. `rustup default nightly` - setup nightly as default, or you can use rust-toolchain file later on 3. `rustup target add wasm32-unknown-unknown` - add the ability to compile Rust to WebAssembly 4. `cargo install cargo-generate` - install `cargo-generate` binary (should be installed automatically in future) 5. `npm install -g sass` - install `dart-sass` (should be optional in future ## Building for Production ```bash cargo leptos build --release ``` Will generate your server binary in `target/server/release` and your site package in `target/site`. ## Testing Your Project Cargo-leptos uses (https://playwright.dev)[Playwright] as the end-to-end test tool. Prior to the first run of the end-to-end tests run Playwright must be installed. In the project's `end2end` directory run `npm install -D playwright @playwright/test` to install playwright and browser specific APIs. To run the tests during development in the project root run: ```bash cargo leptos end-to-end ``` To run tests for release in the project root run: ```bash cargo leptos end-to-end --release ``` There are some examples tests are located in `end2end/tests` directory that pass tests with the sample Leptos app. A web-based report on tests is available by running `npx playwright show-report` in the `end2end` directory. ## Executing a Server on a Remote Machine Without the Toolchain After running a `cargo leptos build --release` the minimum files needed are: 1. The server binary located in `target/server/release` 2. The `site` directory and all files within located in `target/site` Copy these files to your remote server. The directory structure should be: ```text leptos-axum/ site/ ``` Set the following environment variables (updating for your project as needed): ```text LEPTOS_OUTPUT_NAME="leptos-axum" LEPTOS_SITE_ROOT="site" LEPTOS_SITE_PKG_DIR="pkg" LEPTOS_SITE_ADDR="127.0.0.1:3000" LEPTOS_RELOAD_PORT="3001" ``` Finally, run the server binary. ## Licensing This template itself is released under the Unlicense. You should replace the LICENSE for your own application with an appropriate license if you plan to release it publicly.