A proof of concept web server to explore the following
- Learn rust
- Learn htmx
- Embracing RESTful archiceture, Hypermedia, and HATEOAS
- Find a suitable web framework (Default is axum)
- Find a suitable html template engine (type-safe)
- Determine how to serve css (assummning tailwind css)
- UI component library / design system to build upon
- Minimize client side js but have a defined path when needed
- A enjoyable developer experience building an app that spans client and server.
Port of Python's jinja.
- Aksama
- There is a jsx template engine?
- Maud
- Tera (also jinja inspired)
Defaulting to axum as it is the current library being used in the production app that spear-headed this POC.
axum is designed to work with tokio and hyper. Runtime and transport layer independence is not a goal, at least for the time being.
- TailwindCSS
- XtendUI
- Flowbite
- Leptos (specifically Leptos SSR)
- Yew (is there SSR support?)
- https://docs.rs/axum/latest/axum/
- https://tokio.rs/blog/2021-07-announcing-axum
- Tokio: asynchronous runtime
A baseline for modern web development is the ability to automatically reload the server and client on changes of the source code. On the client, this should also include live reloading where applicable.
This should allow us to restart our axum web server:
cargo watch -x run
This crate should allow us to live reload the browser so we don't need to manually refresh after the server reloads.