From a4ecba34014fc51cdb963b9dbc9b7606fe0f574b Mon Sep 17 00:00:00 2001 From: Tommy Yu Date: Fri, 9 Aug 2024 14:14:55 +1200 Subject: [PATCH] Readme for `pmrapp`. --- pmrapp/README.md | 80 +++++++++++++----------------------------------- 1 file changed, 22 insertions(+), 58 deletions(-) diff --git a/pmrapp/README.md b/pmrapp/README.md index b9cc620..40740dc 100644 --- a/pmrapp/README.md +++ b/pmrapp/README.md @@ -1,58 +1,47 @@ - - - Leptos Logo - +# pmrapp - Web application for serving Physiome Model Repository -# Leptos Axum Starter Template +This is the web application service for hosting a running instance of +the next generation of the Physiome Model Repository platform. It is +built on top of the [Leptos](https://github.com/leptos-rs/leptos) web +framework for the UI and [Axum](https://github.com/tokio-rs/axum) web +application framework for the integration between various components. -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). +## Building `pmrapp` -## Creating your template repo +Ensure the Rust compiler can produce the wasm target, which may be done +using `rustup target add wasm32-unknown-unknown`. -If you don't have `cargo-leptos` installed you can install it with +The `cargo-leptos` tool streamlines the whole development and build +process, install it with: ```bash cargo install cargo-leptos --locked ``` -Then run -```bash -cargo leptos new --git leptos-rs/start-axum -``` - -to generate a new project template. +Once ready, simply run: ```bash -cd {{project-name}} +cargo leptos watch ``` -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`. +Which will start the application server, and once it started point your +browser to `http://127.0.0.1:3000`. -## Running your project +## Compiling for Release ```bash -cargo leptos watch +cargo leptos build --release ``` -## Installing Additional Tools +Will generate your server binary in target/server/release and your site +package in target/site. -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. +## Testing -1. `rustup toolchain install nightly --allow-downgrade` - make sure you have Rust nightly -2. `rustup target add wasm32-unknown-unknown` - add the ability to compile Rust to WebAssembly -3. `cargo install cargo-generate` - install `cargo-generate` binary (should be installed automatically in future) -4. `npm install -g sass` - install `dart-sass` (should be optional in future +TODO -## Compiling for Release -```bash -cargo leptos build --release -``` - -Will generate your server binary in target/server/release and your site package in target/site +Though once we have tests, the following may be done: -## Testing Your Project ```bash cargo leptos end-to-end ``` @@ -63,28 +52,3 @@ 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 -{{project-name}} -site/ -``` -Set the following environment variables (updating for your project as needed): -```text -LEPTOS_OUTPUT_NAME="{{project-name}}" -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.