feat: switch Dioxus to fullstack, add a form for creating a project

This commit is contained in:
2024-08-17 00:30:17 +02:00
parent 283b3965db
commit 57705de44d
13 changed files with 944 additions and 50 deletions

View File

@@ -1,52 +1,22 @@
#![allow(non_snake_case)]
mod components;
mod models;
mod route;
mod schema;
mod server;
use components::app::App;
use dioxus::prelude::*;
use dioxus_logger::tracing::{info, Level};
#[derive(Clone, Routable, Debug, PartialEq)]
enum Route {
#[route("/")]
Home {},
#[route("/blog/:id")]
Blog { id: i32 },
}
fn main() {
// Init logger
dioxus_logger::init(Level::INFO).expect("failed to init logger");
dioxus_logger::init(Level::INFO).expect("failed to initialize logger");
info!("starting app");
launch(App);
}
fn App() -> Element {
rsx! {
Router::<Route> {}
}
}
let cfg = server_only!(
dioxus::fullstack::Config::new().addr(std::net::SocketAddr::from(([0, 0, 0, 0], 8000)))
);
#[component]
fn Blog(id: i32) -> Element {
rsx! {
Link { to: Route::Home {}, "Go to counter" }
"Blog post {id}"
}
}
#[component]
fn Home() -> Element {
let mut count = use_signal(|| 0);
rsx! {
Link {
to: Route::Blog {
id: count()
},
"Go to blog"
}
div {
h1 { "High-Five counter: {count}" }
button { onclick: move |_| count += 1, "Up high!" }
button { onclick: move |_| count -= 1, "Down low!" }
}
}
LaunchBuilder::fullstack().with_cfg(cfg).launch(App);
}