3.1 KiB
Rezervovator
Simple application for booking sport or service facilities.
Building project
You will need cargo-leptos tool:
cargo install cargo-leptos
The wasm-bindgen command line tool must be exactly the same version as the wasm-bindgen dependency pinned in Cargo.toml:
cargo install -f wasm-bindgen-cli --version 0.2.129
Running project
cargo leptos watch
Configuration
The server reads config.toml from the working directory, or from the path given with -c. Use config_sample.toml as a template.
The file contains the database and SMTP passwords and the session key. Keep it outside the site directory (target/site): everything in there is served as static files. The server refuses to start when the config file is inside it.
Data directory
Files created while the application runs (the uploaded banner and the styles generated for it) are stored in the data directory and served under /data. By default it is data in the working directory; change it with data_dir in the [storage] section of the config. Keep this directory when you upgrade the application and include it in backups. Never put the config file into it.
When upgrading from a version that kept these files in target/site/data, move the banner image to the data directory. The style for it is generated again on start.
Running in Docker
Mount the config file to /app/config/config.toml and a persistent volume for the data directory to /app/data:
docker run -p 3000:3000 -v /path/to/config-dir:/app/config -v rezervator-data:/app/data rezervator
Set bind_ip = '0.0.0.0' in the config so the server is reachable from outside the container.
Older versions of the image expected the config in /app/target/site/data/config.toml, where it could be downloaded from /data/config.toml. If you ran such a container, move the file and change the database password, the SMTP password and the session key.
Running tests
cargo test --features ssr
Executing a Server on a Remote Machine Without the Toolchain
After running a cargo leptos build --release the minimum files needed are:
- The server binary located in
target/server/release - The
sitedirectory and all files within located intarget/site
Copy these files to your remote server. The directory structure should be:
leptos_start
site/
Set the following environment variables (updating for your project as needed):
export LEPTOS_OUTPUT_NAME="leptos_start"
export LEPTOS_SITE_ROOT="site"
export LEPTOS_SITE_PKG_DIR="pkg"
export LEPTOS_SITE_ADDR="127.0.0.1:3000"
export LEPTOS_RELOAD_PORT="3001"
Finally, run the server binary.
Notes about SSG and Trunk:
Although it is not recommended, you can also run your project without server integration using the feature csr and trunk serve:
trunk serve --open --features csr
This may be useful for integrating external tools which require a static site, e.g. tauri.