diff options
Diffstat (limited to 'src/pages.rs')
-rw-r--r-- | src/pages.rs | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/pages.rs b/src/pages.rs new file mode 100644 index 0000000..82b56ca --- /dev/null +++ b/src/pages.rs @@ -0,0 +1,104 @@ +use rocket::{catch, get, http::Status, response::Redirect, uri, Request}; + +use crate::layout::{DynLayoutPage, LayoutPage}; + +#[get("/")] +pub fn r_root() -> Redirect { + Redirect::to(uri!(r_about())) +} + +#[get("/about")] +pub fn r_about() -> DynLayoutPage<'static> { + LayoutPage { + title: "about".to_string(), + content: markup::new! { + p { + "Hi. I am a normal person from planet earth. " + "I enjoy starting projects and never finishing them. " + "I am also supporting the free software movement by writing exclusively free software in my spare time. " + } + h2 { "current interests" } + ul { + li { "development of a general-purpose systems programming language" } + li { "replacing existing software with rust rewrites and rocket emotes" } + li { "stuff" } + } + h2 { "languages I know" } + ul { + li { "Rust" } + li { "English" } + li { "Haskell" } + li { "German" } + li { "Typescript" } + li { "C" } + li { "toki pona" } + li { "Python" } + li { "Nim, Zig and some others that i don't care about" } + } + }, + } +} + +#[get("/projects")] +pub fn r_projects() -> DynLayoutPage<'static> { + LayoutPage { + title: "projects".to_string(), + content: markup::new! { + p { "I am starting a lot of projects - here are a few selected ones:" } + ul { + li { + b{"keks-meet:"} " a simple secure web conferencing application. " + "(" a[href="https://meet.metamuffin.org"]{"hosted"} "; " a[href="https://codeberg.org/metamuffin/keks-meet"]{"code"} ")" + } + li { + b{"gnix:"} " a stupid reverse proxy to replace nginx. serving the webpage you are viewing right now. " + "(" a[href="https://metamuffin.org"]{"hosted"} "; " a[href="https://codeberg.org/metamuffin/gnix"]{"code"} ")" + } + li { + b{"pfadfinder:"} " parallel anytime A* for openstreetmap with custom frontend and integration into the existing one. " + "(" a[href="https://codeberg.org/metamuffin/pfadfinder"]{"code"} ")" + } + li { + b{"video-codec-experiments:"} " a few attempts of creating my own video codecs, making use of motion compensation, dct, quantization and more. " + "(" a[href="https://codeberg.org/metamuffin/video-codec-experiments"]{"code"} ")" + } + li { + b{"pixelflut tools:"} " the programs i hacked together when playing pixelflut. includes GPU-acceleration for updating the canvas with minimal bandwidth usage. " + "(" a[href="https://codeberg.org/metamuffin/video-codec-experiments"]{"code"} ")" + } + li { + b{"karlender:"} " a personal calender suite consisting of a daemon, a graphical and a command-line user interface. " + "supports very flexible condition based recurring tasks and automatic scheduling so you dont need to decide. " + "(" a[href="https://codeberg.org/metamuffin/video-codec-experiments"]{"code"} ")" + } + } + }, + } +} + +#[get("/contact")] +pub fn r_contact() -> DynLayoutPage<'static> { + LayoutPage { + title: "contact".to_string(), + content: markup::new! { + p { "You can reach out to me in a bunch of ways. I am also generally looking for nice software ideas to implement." } + ul { + li { "matrix: " a[href="https://matrix.to/#/@metamuffin:metamuffin.org"]{"@metamuffin:metamuffin.org"} } + li { "fedi: " a[href="https://social.metamuffin.org/@metamuffin"]{"@metamuffin@social.metamuffin.org"} } + li { "electronic mail: " a[href="mailto:metamuffin@disroot.org"]{"mailto:metamuffin@disroot.org"} } + li { "telepathy: come on, just try hard enough" } + } + }, + } +} + +#[catch(default)] +pub fn r_catch<'a>(status: Status, _request: &Request) -> DynLayoutPage<'a> { + LayoutPage { + title: "Error".to_string(), + content: markup::new! { + h2 { "Error" } + p { @format!("{status}") } + }, + } +} |