Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jbertovic/svelte-axum-project
Starting project template for Rust Axum backend and Svelte frontend
https://github.com/jbertovic/svelte-axum-project
axum backend rust svelte
Last synced: 4 days ago
JSON representation
Starting project template for Rust Axum backend and Svelte frontend
- Host: GitHub
- URL: https://github.com/jbertovic/svelte-axum-project
- Owner: jbertovic
- License: mpl-2.0
- Created: 2022-06-28T11:36:44.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-17T21:53:07.000Z (about 1 year ago)
- Last Synced: 2024-08-01T19:58:24.076Z (3 months ago)
- Topics: axum, backend, rust, svelte
- Language: Rust
- Homepage:
- Size: 2.12 MB
- Stars: 146
- Watchers: 5
- Forks: 12
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# svelte-axum-project
Starting project template for Rust Axum backend and Svelte frontend. Simple Single-Page-App (SPA) example. Does not use SvelteKit.
![](FullScreenCapture.png)
![](MobileScreenCapture.png)# New Version 0.4.2
- migration of `axum-sessions` to `tower-sessions` see [pr#14](https://github.com/jbertovic/svelte-axum-project/pull/14)
- removal of secret key warning due to migration# New Version 0.4.1
- bumped version on backend; `axum` to 0.6.20, `axum-sessions` to 0.5, `tower-http` to 0.4
- bumped versions on front-end; `vite-plugin-svelte` to 2.4.2, `svelte` to 4.0.5, `vite` to 4.4.5
- backend changed how servedir works from `tower-http` for serving front end static assets# New Version 0.4.0
- updated to `axum` 0.6
- changes to State usage; how its setup with route and called from middleware
- changes to ordering of parameters in functions; last parameter can consume request body
- eliminated `axum::extract::RequestParts` with help from update on `axum-sessions`
- updated to `axum-sessions` 0.4 to match
- incremented `tokio` version to 1.24
- old `axum` 0.5 version is kept under branch `v0.3_Axum0.5`# Help
- We currently have a build script that builds the full stack concurrently for Linux. We would appreciate alternatives for Mac (should be minor tweak of Linux build script) and Windows.# Template
## Using Cargo
- Must have cargo generate installed: `cargo install cargo-generate`
- Then use `cargo generate jbertovic/svelte-axum-project -n `## Using git template
- you can also just hit the "use this template" button in green on top of the repo
- if you have gh cli installed check out `--template` option# Back end - Rust Axum
- located in `./back_end`
- serves front end directory
- middleware for checking authorization header
- middleware for checking session that user exists
- store example that holds token secret for authorization
- /api route example using authorization header
- /secure route example using sessions for authorizationNote there is no persistance beyond what's held in memory while the application is running
run as `cargo run` from parent directory and not needed to run inside `./back_end` folder
# Front end - Svelte
- Located in `./front_end`
- navbar with login and logout
- secure page that shows session information once logged in
- api fetch example, log in not requiredrun as `npm run build` from inside the `./front_end` directory to build the static serve file directory.
# Setup
Install the following
NodeJs - [Install](https://nodejs.org/en/download/)
Rust - [Install](https://www.rust-lang.org/tools/install)Clone the repository
- cd repository
- inside the `./front_end` folder run `npm install` to download all module dependencies inside root directory of project
- inside the `./front_end` folder run `npm run build` to bundle the js/svelte code into public folder
- inside the top level folder run `cargo run` to start the the server
- access in browser at http://localhost:8080/In case you need to build both at once and use Linux, run `./build-fullstack.sh`