summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-09-25 20:59:19 +0200
committermetamuffin <metamuffin@disroot.org>2023-09-25 20:59:19 +0200
commitd8d7bde604440a2186c9af6b5891c418fa98c462 (patch)
tree6a1da93a22c32eeb5b7be89a7d3ddc444de2841a
parent01bd18c75fd3652ce0b9eb76e23e967b0cba064b (diff)
downloadmetamuffin-website-d8d7bde604440a2186c9af6b5891c418fa98c462.tar
metamuffin-website-d8d7bde604440a2186c9af6b5891c418fa98c462.tar.bz2
metamuffin-website-d8d7bde604440a2186c9af6b5891c418fa98c462.tar.zst
all repos from codeberg
-rw-r--r--assets/style.css27
-rw-r--r--src/projects/data.rs283
-rw-r--r--src/projects/mod.rs37
3 files changed, 320 insertions, 27 deletions
diff --git a/assets/style.css b/assets/style.css
index 52212db..888a420 100644
--- a/assets/style.css
+++ b/assets/style.css
@@ -48,19 +48,20 @@ nav a:hover {
background-size: 0 2px, 100% 2px;
}
-h1 {font-size: xx-large }
-h2 {font-size: x-large }
-h3 {font-size: large }
-h4 {font-size: medium }
+h1 { font-size: xx-large }
+h2 { font-size: x-large }
+h3 { font-size: large }
+h4 { font-size: medium }
-p,h1,h2,h3,h4,h5,h6,li { font-family: "Ubuntu", sans-serif; }
+p,h1,h2,h3,h4,h5,h6,li,summary { font-family: "Ubuntu", sans-serif; }
h1,h2 { color: var(--ac1) }
h3 { color: var(--ac2); margin-left: 1em }
h4 { color: var(--ac3); margin-left: 2em }
-p,li { color: white; margin-left: 3em }
+p,li,summary { color: white; margin-left: 3em }
a { color: var(--ac2); font-style: italic; text-decoration: underline }
a:hover { color: var(--ac3) }
hr { border: 1px solid grey }
+summary { font-size: large; }
math { color:white }
@@ -95,9 +96,11 @@ input[type=submit] {
margin-right: 0.3em;
}
-.status-Unknown { background-color: #4b4b4b; }
-.status-Planned { background-color: #6d5dff; }
-.status-Developing { background-color: #5dfff1; }
-.status-Stale { background-color: #d6d44b; }
-.status-Maintained { background-color: #8cff56; }
-.status-Abandoned { background-color: #ff9854; }
+.status-unknown { background-color: #4b4b4b; }
+.status-planned { background-color: #6d5dff; }
+.status-developing { background-color: #5dfff1; }
+.status-paused-working { background-color: #53b11d; }
+.status-paused-unfinished { background-color: #d6d44b; }
+.status-maintained { background-color: #95ff63; }
+.status-abandoned-working { background-color: #ff9854; }
+.status-abandoned-unfinished { background-color: #ff6854; }
diff --git a/src/projects/data.rs b/src/projects/data.rs
index 0e2b8dc..21f9462 100644
--- a/src/projects/data.rs
+++ b/src/projects/data.rs
@@ -1,4 +1,4 @@
-use super::{Project, Status::*};
+use super::{Project, Status::*, State::*};
pub const PROJECTS: &'static [Project] = &[
Project {
@@ -15,6 +15,12 @@ pub const PROJECTS: &'static [Project] = &[
..default()
},
Project {
+ name: "mond",
+ status: Developing,
+ description: "server monitoring software, no much code written so far",
+ ..default()
+ },
+ Project {
name: "voxelwagen",
status: Developing,
description: "voxel game engine made from scratch; made to host an automation game.",
@@ -30,29 +36,296 @@ pub const PROJECTS: &'static [Project] = &[
},
Project {
name: "pfadfinder",
- status: Stale,
+ status: Paused(Working),
description: "parallel anytime A* for openstreetmap with custom frontend and integration into the existing one.",
..default()
},
Project {
name: "video-codec-experiments",
- status: Stale,
+ status: Paused(Working),
description: "a few attempts of creating my own video codecs, making use of motion compensation, dct, quantization and more. ",
..default()
},
Project {
name: "pixelflut tools",
- status: Stale,
+ status: Paused(Working),
description: "the programs I hacked together when playing pixelflut. includes GPU-acceleration for updating the canvas with minimal bandwidth usage.",
..default()
},
Project {
name: "karlender",
- status: Stale,
+ status: Paused(Working),
description: " 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.",
..default()
},
];
+pub const EXTRA_PROJECTS: &'static [Project] = &[
+ Project {
+ name: "bad-editor",
+ status: Paused(Unfinished),
+ description: "A really bad editor",
+ ..default()
+ },
+ Project {
+ name: "cosu",
+ status: Paused(Unfinished),
+ description: "a simple fast osu! client in c (not nearly a working client yet)",
+ ..default()
+ },
+ Project {
+ name: "sprakc",
+ status: Abandoned(Working),
+ description: "A compiler from c++ to sprak",
+ ..default()
+ },
+ Project {
+ name: "sprak-runtime",
+ status: Abandoned(Working),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "ehb-data",
+ status: Abandoned(Working),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "sgf",
+ status: Unknown,
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "circuit-simulator",
+ status: Unknown,
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "metabot",
+ status: Paused(Unfinished),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "website",
+ status: Maintained,
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "ld49",
+ status: Abandoned(Unfinished),
+ description: "Ludum dare 49",
+ ..default()
+ },
+ Project {
+ name: "bot-game",
+ status: Unknown,
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "game-platform",
+ status: Unknown,
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "simple-game-engine",
+ status: Paused(Unfinished),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "voice-control",
+ status: Paused(Unfinished),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "libreverse-old",
+ status: Abandoned(Unfinished),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "golf-lang",
+ status: Abandoned(Unfinished),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "mumble-music",
+ status: Paused(Unfinished),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "muon",
+ status: Paused(Unfinished),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "libresyncedvideoplayer",
+ status: Unknown,
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "fireworks",
+ status: Abandoned(Unfinished),
+ description: "Fireworks with Three.js",
+ ..default()
+ },
+ Project {
+ name: "bj1",
+ status: Unknown,
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "so-survey",
+ status: Paused(Working),
+ description: "Some code for processing the stackoverflow developer survey's results",
+ ..default()
+ },
+ Project {
+ name: "rubberkeys",
+ status: Abandoned(Working),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "lunar-lander",
+ status: Abandoned(Working),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "molecule-viewer",
+ status: Paused(Working),
+ description: "Web application to visualize layout of molecules",
+ ..default()
+ },
+ Project {
+ name: "oxelpot",
+ status: Paused(Working),
+ description: "text-board service using pure html on the client",
+ ..default()
+ },
+ Project {
+ name: "CUBE",
+ status: Abandoned(Unfinished),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "godot-mumble-link",
+ status: Paused(Unfinished),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "libreverse-server",
+ status: Unknown,
+ description: "2d multiplayer game engine server",
+ ..default()
+ },
+ Project {
+ name: "twclient",
+ status: Paused(Unfinished),
+ description: "A teeworlds client in rust, based on libtw2",
+ ..default()
+ },
+ Project {
+ name: "minetest_meta_uhc",
+ status: Paused(Unfinished),
+ description: "ultra hardcore mod for minetest with decreasing border size",
+ ..default()
+ },
+ Project {
+ name: "guitar-chords",
+ status: Paused(Unfinished),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "gnu-netcat",
+ status: Paused(Working),
+ description: "Mirror of the “GNU“ netcat utility (imported from CVS)",
+ ..default()
+ },
+ Project {
+ name: "stonk-game",
+ status: Abandoned(Unfinished),
+ description: "simple game to compete in trading stocks",
+ ..default()
+ },
+ Project {
+ name: "pw-patchbay",
+ status: Paused(Working),
+ description: "Tool to setup links for pipewire",
+ ..default()
+ },
+ Project {
+ name: "desterr",
+ status: Maintained,
+ description: "dead simple tool to distinguish stderr and stdout",
+ ..default()
+ },
+ Project {
+ name: "staticwiki",
+ status: Paused(Working),
+ description: "tools to convert MediaWiki XML dumps to static HTML pages",
+ ..default()
+ },
+ Project {
+ name: "trash-proxy",
+ status: Paused(Working),
+ description: "A minecraft reverse proxy for offline auth.",
+ ..default()
+ },
+ Project {
+ name: "trash-map",
+ status: Paused(Working),
+ description: "A minecraft map renderer",
+ ..default()
+ },
+ Project {
+ name: "acoustsearch",
+ status: Paused(Unfinished),
+ description: "Search the acoustid database locally.",
+ ..default()
+ },
+ Project {
+ name: "meta_shell",
+ status: Paused(Unfinished),
+ description: "Simple wayland shell only including a status dock.",
+ ..default()
+ },
+ Project {
+ name: "3d-frame-interpolation",
+ status: Paused(Working),
+ description: "",
+ ..default()
+ },
+ Project {
+ name: "librelambda",
+ status: Paused(Working),
+ description: "A lambda calculus \"solver\".",
+ ..default()
+ },
+ Project {
+ name: "automato",
+ status: Paused(Unfinished),
+ description: "A minimal, gridless automation game." ,
+ ..default()
+ },
+];
+
const fn default() -> Project {
Project {
diff --git a/src/projects/mod.rs b/src/projects/mod.rs
index f399984..d3ceb40 100644
--- a/src/projects/mod.rs
+++ b/src/projects/mod.rs
@@ -1,4 +1,4 @@
-use self::data::PROJECTS;
+use self::data::{EXTRA_PROJECTS, PROJECTS};
use crate::layout::{DynScaffold, Scaffold};
use markup::Render;
use rocket::get;
@@ -19,27 +19,32 @@ pub fn r_projects() -> DynScaffold<'static> {
li { @Status::Planned.render() ": No code has been written yet." }
li { @Status::Developing.render() ": Project is under active development." }
li { @Status::Maintained.render() ": Project is in a working state and receives regular updates." }
- li { @Status::Stale.render() ": Project has been discontinued for an unspecified amount of time, but might be resumed if i feel like it." }
- li { @Status::Abandoned.render() ": Project has been discontinued and will likely not be continued forever." }
+ li { @Status::Paused(State::Working).render() @Status::Paused(State::Unfinished).render() ": Project has been discontinued for an unspecified amount of time, but might be resumed if i feel like it." }
+ li { @Status::Abandoned(State::Working).render() @Status::Abandoned(State::Unfinished).render() ": Project has been discontinued and will likely not ever be continued." }
li { @Status::Unknown.render() ": I have not bothered to write down the status" }
}
- ul {
- @for p in PROJECTS {
- li { @p }
- }
+ ul { @for p in PROJECTS { li { @p } } }
+ details { summary { "Other not-so-important projects" }
+ ul { @for p in EXTRA_PROJECTS { li { @p } } }
}
},
}
}
#[derive(Debug, Clone, Copy)]
+pub enum State {
+ Working,
+ Unfinished,
+}
+
+#[derive(Debug, Clone, Copy)]
pub enum Status {
Unknown,
Planned,
Developing,
- Stale,
+ Paused(State),
Maintained,
- Abandoned,
+ Abandoned(State),
}
markup::define! { Project(
@@ -63,9 +68,21 @@ markup::define! { Project(
}}
impl Status {
+ fn ident(self) -> &'static str {
+ match self {
+ Status::Unknown => "unknown",
+ Status::Planned => "planned",
+ Status::Developing => "developing",
+ Status::Maintained => "maintained",
+ Status::Paused(State::Unfinished) => "paused-unfinished",
+ Status::Paused(State::Working) => "paused-working",
+ Status::Abandoned(State::Unfinished) => "abandoned-unfinished",
+ Status::Abandoned(State::Working) => "abandoned-working",
+ }
+ }
pub fn render(self) -> impl Render {
markup::new! {
- div[class=format!("status status-{self:?}")] { @format!("{self:?}") }
+ div[class=format!("status status-{}", self.ident())] { @format!("{self:?}") }
}
}
}