summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock214
-rw-r--r--Cargo.toml10
-rw-r--r--assets/style.css18
-rw-r--r--src/layout.rs3
-rw-r--r--src/main.rs3
-rw-r--r--src/pages.rs37
-rw-r--r--src/projects/data.rs65
-rw-r--r--src/projects/mod.rs71
8 files changed, 268 insertions, 153 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 0cbe528..3a31ba6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
[[package]]
name = "addr2line"
-version = "0.20.0"
+version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3"
+checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
dependencies = [
"gimli",
]
@@ -43,9 +43,9 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.71"
+version = "1.0.75"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
+checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
[[package]]
name = "async-channel"
@@ -102,7 +102,7 @@ dependencies = [
"parking",
"polling",
"slab",
- "socket2",
+ "socket2 0.4.9",
"waker-fn",
"windows-sys 0.42.0",
]
@@ -162,7 +162,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
]
[[package]]
@@ -179,7 +179,7 @@ checksum = "a564d521dd56509c4c47480d00b80ee55f7e385ae48db5744c67ad50c92d2ebf"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
]
[[package]]
@@ -202,9 +202,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "backtrace"
-version = "0.3.68"
+version = "0.3.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12"
+checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
dependencies = [
"addr2line",
"cc",
@@ -249,21 +249,24 @@ dependencies = [
[[package]]
name = "bumpalo"
-version = "3.13.0"
+version = "3.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
[[package]]
name = "bytes"
-version = "1.4.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
[[package]]
name = "cc"
-version = "1.0.79"
+version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+dependencies = [
+ "libc",
+]
[[package]]
name = "cfg-if"
@@ -273,17 +276,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
-version = "0.4.26"
+version = "0.4.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5"
+checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
dependencies = [
"android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
- "time 0.1.45",
"wasm-bindgen",
- "winapi",
+ "windows-targets",
]
[[package]]
@@ -302,7 +304,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24"
dependencies = [
"percent-encoding",
- "time 0.3.23",
+ "time",
"version_check",
]
@@ -351,7 +353,7 @@ dependencies = [
"proc-macro2",
"proc-macro2-diagnostics",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
]
[[package]]
@@ -515,7 +517,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
]
[[package]]
@@ -569,14 +571,14 @@ checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
dependencies = [
"cfg-if",
"libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi",
]
[[package]]
name = "gimli"
-version = "0.27.3"
+version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
+checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
[[package]]
name = "glob"
@@ -629,9 +631,9 @@ checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
[[package]]
name = "hermit-abi"
-version = "0.3.2"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
[[package]]
name = "http"
@@ -690,7 +692,7 @@ dependencies = [
"httpdate",
"itoa",
"pin-project-lite",
- "socket2",
+ "socket2 0.4.9",
"tokio",
"tower-service",
"tracing",
@@ -841,9 +843,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.147"
+version = "0.2.148"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
[[package]]
name = "linux-raw-sys"
@@ -869,9 +871,9 @@ dependencies = [
[[package]]
name = "log"
-version = "0.4.19"
+version = "0.4.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
dependencies = [
"value-bag",
]
@@ -893,9 +895,9 @@ dependencies = [
[[package]]
name = "markdown"
-version = "1.0.0-alpha.11"
+version = "1.0.0-alpha.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f557389e7cdb1e3574c43d82965f0d933fff789c6ea2779cb0e9e72ec4b1224e"
+checksum = "d2a51befc5a2b4a052c473ffbc9ad462e358de59dcc2fde4997fd2a16403dcbd"
dependencies = [
"unicode-id",
]
@@ -932,9 +934,9 @@ dependencies = [
[[package]]
name = "memchr"
-version = "2.5.0"
+version = "2.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
[[package]]
name = "mime"
@@ -964,7 +966,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
dependencies = [
"libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi",
"windows-sys 0.48.0",
]
@@ -1010,9 +1012,9 @@ dependencies = [
[[package]]
name = "num-traits"
-version = "0.2.15"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
dependencies = [
"autocfg",
]
@@ -1029,9 +1031,9 @@ dependencies = [
[[package]]
name = "object"
-version = "0.31.1"
+version = "0.32.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1"
+checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
dependencies = [
"memchr",
]
@@ -1097,7 +1099,7 @@ dependencies = [
"proc-macro2",
"proc-macro2-diagnostics",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
]
[[package]]
@@ -1108,9 +1110,9 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
[[package]]
name = "pin-project-lite"
-version = "0.2.10"
+version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57"
+checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
[[package]]
name = "pin-utils"
@@ -1140,9 +1142,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "proc-macro2"
-version = "1.0.64"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
@@ -1155,16 +1157,16 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
"version_check",
"yansi 1.0.0-rc",
]
[[package]]
name = "quote"
-version = "1.0.29"
+version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
@@ -1225,7 +1227,7 @@ checksum = "68bf53dad9b6086826722cdc99140793afd9f62faa14a1ad07eb4f955e7a7216"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
]
[[package]]
@@ -1302,7 +1304,7 @@ dependencies = [
"serde_json",
"state",
"tempfile",
- "time 0.3.23",
+ "time",
"tokio",
"tokio-stream",
"tokio-util",
@@ -1323,7 +1325,7 @@ dependencies = [
"proc-macro2",
"quote",
"rocket_http",
- "syn 2.0.25",
+ "syn 2.0.37",
"unicode-xid",
]
@@ -1349,7 +1351,7 @@ dependencies = [
"smallvec",
"stable-pattern",
"state",
- "time 0.3.23",
+ "time",
"tokio",
"uncased",
]
@@ -1407,9 +1409,9 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
[[package]]
name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "serde"
@@ -1428,7 +1430,7 @@ checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
]
[[package]]
@@ -1480,9 +1482,9 @@ dependencies = [
[[package]]
name = "smallvec"
-version = "1.11.0"
+version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
+checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
[[package]]
name = "socket2"
@@ -1495,6 +1497,16 @@ dependencies = [
]
[[package]]
+name = "socket2"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e"
+dependencies = [
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
name = "spin"
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1531,9 +1543,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.25"
+version = "2.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
dependencies = [
"proc-macro2",
"quote",
@@ -1575,17 +1587,6 @@ dependencies = [
[[package]]
name = "time"
-version = "0.1.45"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
-dependencies = [
- "libc",
- "wasi 0.10.0+wasi-snapshot-preview1",
- "winapi",
-]
-
-[[package]]
-name = "time"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446"
@@ -1613,11 +1614,10 @@ dependencies = [
[[package]]
name = "tokio"
-version = "1.29.1"
+version = "1.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da"
+checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
dependencies = [
- "autocfg",
"backtrace",
"bytes",
"libc",
@@ -1626,7 +1626,7 @@ dependencies = [
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
- "socket2",
+ "socket2 0.5.4",
"tokio-macros",
"windows-sys 0.48.0",
]
@@ -1639,7 +1639,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
]
[[package]]
@@ -1727,7 +1727,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
]
[[package]]
@@ -1802,9 +1802,9 @@ checksum = "d70b6494226b36008c8366c288d77190b3fad2eb4c10533139c1c1f461127f1a"
[[package]]
name = "unicode-ident"
-version = "1.0.10"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-xid"
@@ -1847,12 +1847,6 @@ dependencies = [
[[package]]
name = "wasi"
-version = "0.10.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
-
-[[package]]
-name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
@@ -1878,7 +1872,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
"wasm-bindgen-shared",
]
@@ -1912,7 +1906,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.37",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -2026,17 +2020,17 @@ dependencies = [
[[package]]
name = "windows-targets"
-version = "0.48.1"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
- "windows_aarch64_gnullvm 0.48.0",
- "windows_aarch64_msvc 0.48.0",
- "windows_i686_gnu 0.48.0",
- "windows_i686_msvc 0.48.0",
- "windows_x86_64_gnu 0.48.0",
- "windows_x86_64_gnullvm 0.48.0",
- "windows_x86_64_msvc 0.48.0",
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
]
[[package]]
@@ -2047,9 +2041,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
[[package]]
name = "windows_aarch64_gnullvm"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_msvc"
@@ -2059,9 +2053,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
[[package]]
name = "windows_aarch64_msvc"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_i686_gnu"
@@ -2071,9 +2065,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
[[package]]
name = "windows_i686_gnu"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_msvc"
@@ -2083,9 +2077,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
[[package]]
name = "windows_i686_msvc"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_x86_64_gnu"
@@ -2095,9 +2089,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnullvm"
@@ -2107,9 +2101,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
[[package]]
name = "windows_x86_64_gnullvm"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_msvc"
@@ -2119,9 +2113,9 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "winnow"
diff --git a/Cargo.toml b/Cargo.toml
index 2f470c4..3eb154b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -5,14 +5,14 @@ edition = "2021"
[dependencies]
rocket = { version = "0.5.0-rc.3", features = ["json"] }
-tokio = { version = "1.29.1", features = ["full"] }
-log = "0.4.19"
+tokio = { version = "1.32.0", features = ["full"] }
+log = "0.4.20"
env_logger = "0.10.0"
async-std = "1.12.0"
include_dir = { version = "0.7.3", features = ["glob"] }
iso8601 = { version = "0.6.1", features = ["chrono"] }
futures = "0.3.28"
-anyhow = "1.0.71"
+anyhow = "1.0.75"
markup = "0.13.1"
-markdown = "1.0.0-alpha.11"
-chrono = "0.4.26"
+markdown = "1.0.0-alpha.14"
+chrono = "0.4.31"
diff --git a/assets/style.css b/assets/style.css
index 658ca43..52212db 100644
--- a/assets/style.css
+++ b/assets/style.css
@@ -83,3 +83,21 @@ input[type=submit] {
margin-left: 4em;
}
+
+.status {
+ display: inline-block;
+ padding: 0.1em;
+ font-size: small;
+ font-variant: small-caps;
+ color: black;
+ border-radius: 5px;
+ margin-left: 0.2em;
+ 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; }
diff --git a/src/layout.rs b/src/layout.rs
index 600b61a..3a9ca6c 100644
--- a/src/layout.rs
+++ b/src/layout.rs
@@ -7,8 +7,9 @@ Copyright (C) 2023 metamuffin <metamuffin.org>
use crate::blog::rocket_uri_macro_r_blog;
use crate::pages::{
rocket_uri_macro_r_about, rocket_uri_macro_r_contact, rocket_uri_macro_r_pgp_key,
- rocket_uri_macro_r_projects, rocket_uri_macro_r_stuff, rocket_uri_macro_r_toggle_css,
+ rocket_uri_macro_r_stuff, rocket_uri_macro_r_toggle_css,
};
+use crate::projects::rocket_uri_macro_r_projects;
use crate::source::rocket_uri_macro_r_source;
use crate::uri;
use markup::Render;
diff --git a/src/main.rs b/src/main.rs
index 85670c4..ebe217c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -3,16 +3,19 @@
which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
Copyright (C) 2023 metamuffin <metamuffin.org>
*/
+#![feature(const_trait_impl)]
pub mod blog;
pub mod error;
pub mod layout;
pub mod pages;
+pub mod projects;
pub mod source;
pub mod wellknown;
use blog::*;
use error::*;
use pages::*;
+use projects::*;
use rocket::{catchers, fairing::AdHoc, fs::FileServer, http::Header, routes};
use source::*;
use wellknown::*;
diff --git a/src/pages.rs b/src/pages.rs
index 47f9f98..1a00664 100644
--- a/src/pages.rs
+++ b/src/pages.rs
@@ -44,43 +44,6 @@ pub fn r_about() -> DynScaffold<'static> {
}
}
-#[get("/projects")]
-pub fn r_projects() -> DynScaffold<'static> {
- Scaffold {
- 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/pixelflut"]{"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/karlender"]{"code"} ")"
- }
- }
- },
- }
-}
-
#[get("/contact")]
pub fn r_contact() -> DynScaffold<'static> {
Scaffold {
diff --git a/src/projects/data.rs b/src/projects/data.rs
new file mode 100644
index 0000000..0e2b8dc
--- /dev/null
+++ b/src/projects/data.rs
@@ -0,0 +1,65 @@
+use super::{Project, Status::*};
+
+pub const PROJECTS: &'static [Project] = &[
+ Project {
+ name: "keks-meet",
+ status: Maintained,
+ description: "a simple secure web conferencing application.",
+ link: Some("https://meet.metamuffin.org"),
+ ..default()
+ },
+ Project {
+ name: "jellything",
+ status: Developing,
+ description: "media streaming solution (similiar to jellyfin). supports on-the-fly remuxing and federated content.",
+ ..default()
+ },
+ Project {
+ name: "voxelwagen",
+ status: Developing,
+ description: "voxel game engine made from scratch; made to host an automation game.",
+ repo_link: Some("https://codeberg.org/voxelwagen/voxelwagen"),
+ ..default()
+ },
+ Project {
+ name: "gnix",
+ status: Maintained,
+ description: "a stupid reverse proxy to replace nginx. serving the webpage you are viewing right now.",
+ link: Some("https://metamuffin.org"),
+ ..default()
+ },
+ Project {
+ name: "pfadfinder",
+ status: Stale,
+ description: "parallel anytime A* for openstreetmap with custom frontend and integration into the existing one.",
+ ..default()
+ },
+ Project {
+ name: "video-codec-experiments",
+ status: Stale,
+ 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,
+ 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,
+ 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()
+ },
+];
+
+const fn default() -> Project {
+ Project {
+ name: "",
+ status: super::Status::Unknown,
+ description: "",
+ link: None,
+ repo_link: None,
+ }
+}
diff --git a/src/projects/mod.rs b/src/projects/mod.rs
new file mode 100644
index 0000000..f399984
--- /dev/null
+++ b/src/projects/mod.rs
@@ -0,0 +1,71 @@
+use self::data::PROJECTS;
+use crate::layout::{DynScaffold, Scaffold};
+use markup::Render;
+use rocket::get;
+
+pub mod data;
+
+#[get("/projects")]
+pub fn r_projects() -> DynScaffold<'static> {
+ Scaffold {
+ title: "projects".to_string(),
+ content: markup::new! {
+ p { "I am starting a lot of projects - this page lists some of them." }
+ p {
+ "Starting so many means, that most of then are not maintained or not even properly developed."
+ "Here is a quick reference to what I define the status of a project to be:"
+ }
+ ol {
+ 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::Unknown.render() ": I have not bothered to write down the status" }
+ }
+ ul {
+ @for p in PROJECTS {
+ li { @p }
+ }
+ }
+ },
+ }
+}
+
+#[derive(Debug, Clone, Copy)]
+pub enum Status {
+ Unknown,
+ Planned,
+ Developing,
+ Stale,
+ Maintained,
+ Abandoned,
+}
+
+markup::define! { Project(
+ name: &'static str,
+ status: Status,
+ description: &'static str,
+ link: Option<&'static str>,
+ repo_link: Option<&'static str>
+) {
+ b { @name }
+ @status.render()
+ ": " @description
+ " ("
+ @if let Some(link) = link {
+ a[href=link] "Project page"
+ ", "
+ }
+ @let fallback = format!("https://codeberg.org/metamuffin/{name}");
+ a[href=repo_link.unwrap_or(&fallback)] "Source code"
+ ")"
+}}
+
+impl Status {
+ pub fn render(self) -> impl Render {
+ markup::new! {
+ div[class=format!("status status-{self:?}")] { @format!("{self:?}") }
+ }
+ }
+}