summaryrefslogtreecommitdiff
path: root/src/pages.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-02-12 21:24:04 +0100
committermetamuffin <metamuffin@disroot.org>2023-02-12 21:24:04 +0100
commitdd57e08795efe27b314bcaf1407faca3b205142a (patch)
tree9c0c76750f5e71111bfb314506e5004057ebd308 /src/pages.rs
parent4423c2e86179168339d90adbda53d9777e953db5 (diff)
downloadmetamuffin-website-dd57e08795efe27b314bcaf1407faca3b205142a.tar
metamuffin-website-dd57e08795efe27b314bcaf1407faca3b205142a.tar.bz2
metamuffin-website-dd57e08795efe27b314bcaf1407faca3b205142a.tar.zst
copy some content from the old page
Diffstat (limited to 'src/pages.rs')
-rw-r--r--src/pages.rs104
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}") }
+ },
+ }
+}