Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/leptos-rs/start-axum-workspace
https://github.com/leptos-rs/start-axum-workspace
Last synced: 5 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/leptos-rs/start-axum-workspace
- Owner: leptos-rs
- License: unlicense
- Created: 2023-03-20T02:52:54.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-11T19:10:52.000Z (8 months ago)
- Last Synced: 2024-05-12T15:52:16.595Z (8 months ago)
- Language: Rust
- Size: 74.2 KB
- Stars: 35
- Watchers: 4
- Forks: 13
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-leptos - leptos-rs/start-axum-workspace - (Starter Templates / Official)
README
# Leptos Axum Starter Template
This is a template for use with the [Leptos](https://github.com/leptos-rs/leptos) web framework and the [cargo-leptos](https://github.com/akesson/cargo-leptos) tool using [Axum](https://github.com/tokio-rs/axum).
## Creating your template repo
If you don't have `cargo-leptos` installed you can install it with
```bash
cargo install cargo-leptos --locked
```Then run
```bash
cargo leptos new --git https://github.com/leptos-rs/start-axum-workspace/
```to generate a new project template.
```bash
cd {projectname}
```to go to your newly created project.
Feel free to explore the project structure, but the best place to start with your application code is in `src/app.rs`.
Addtionally, Cargo.toml may need updating as new versions of the dependencies are released, especially if things are not working after a `cargo update`.### 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;
```## Running your project
```bash
cargo leptos watch
```## 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## Compiling for Release
```bash
cargo leptos build --release
```Will generate your server binary in target/server/release and your site package in target/site
## Testing Your Project
```bash
cargo leptos end-to-end
``````bash
cargo leptos end-to-end --release
```Cargo-leptos uses Playwright as the end-to-end test tool.
Tests are located in end2end/tests 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
start-axum
site/
```
Set the following enviornment variables (updating for your project as needed):
```text
LEPTOS_OUTPUT_NAME="start-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.