From 4af1325ad60dc36cb37268550ec0ae34383ab412 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Fri, 16 Jan 2026 00:20:32 -0500 Subject: [PATCH] added font --- Cargo.lock | 125 ++++++++++++++++++++++++++++++++ Cargo.toml | 3 + src/main.rs | 11 ++- static/ethnocentric.otf | Bin 0 -> 68388 bytes static/{root.html => home.html} | 70 +++++++++++------- static/style.css | 59 +++++++++++++++ 6 files changed, 237 insertions(+), 31 deletions(-) create mode 100644 static/ethnocentric.otf rename static/{root.html => home.html} (93%) create mode 100644 static/style.css diff --git a/Cargo.lock b/Cargo.lock index a3b8947..537a738 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -60,6 +60,12 @@ dependencies = [ "tracing", ] +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + [[package]] name = "bytes" version = "1.11.0" @@ -90,6 +96,12 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + [[package]] name = "futures-task" version = "0.3.31" @@ -108,6 +120,15 @@ dependencies = [ "pin-utils", ] +[[package]] +name = "getopts" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df" +dependencies = [ + "unicode-width", +] + [[package]] name = "http" version = "1.4.0" @@ -141,6 +162,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + [[package]] name = "httparse" version = "1.10.1" @@ -208,6 +235,15 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "markdown" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5cab8f2cadc416a82d2e783a1946388b31654d391d1c7d92cc1f03e295b1deb" +dependencies = [ + "unicode-id", +] + [[package]] name = "matchit" version = "0.8.4" @@ -226,6 +262,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "mio" version = "1.1.1" @@ -270,6 +316,25 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "pulldown-cmark" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0" +dependencies = [ + "bitflags", + "getopts", + "memchr", + "pulldown-cmark-escape", + "unicase", +] + +[[package]] +name = "pulldown-cmark-escape" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae" + [[package]] name = "quote" version = "1.0.43" @@ -355,7 +420,10 @@ name = "site" version = "0.1.0" dependencies = [ "axum", + "markdown", + "pulldown-cmark", "tokio", + "tower-http", ] [[package]] @@ -397,6 +465,7 @@ version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" dependencies = [ + "bytes", "libc", "mio", "pin-project-lite", @@ -416,6 +485,19 @@ dependencies = [ "syn", ] +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + [[package]] name = "tower" version = "0.5.3" @@ -432,6 +514,31 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -464,12 +571,30 @@ dependencies = [ "once_cell", ] +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-id" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ba288e709927c043cbe476718d37be306be53fb1fafecd0dbe36d072be2580" + [[package]] name = "unicode-ident" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index 136c00a..65c52f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,4 +5,7 @@ edition = "2024" [dependencies] axum = "0.8.8" +markdown = "1.0.0" +pulldown-cmark = "0.13.0" tokio = { version = "1.49.0", features = ["macros", "rt-multi-thread"] } +tower-http = { version = "0.5", features = ["fs"] } diff --git a/src/main.rs b/src/main.rs index 23bfecc..2fd7a15 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,17 +3,20 @@ use axum::{ Router, response::Html, }; +use tower_http::services::ServeDir; #[tokio::main] async fn main() { - let site = Router::new().route("/", get(root)); + let site = Router::new() + .route("/", get(home)) + .nest_service("/static", ServeDir::new("static")); let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); println!("Running on http://127.0.0.1:3000"); axum::serve(listener, site).await.unwrap(); } -async fn root() -> Html<&'static str> { - const HTML: &str = include_str!("../static/root.html"); +async fn home() -> Html<&'static str> { + const HTML: &'static str = include_str!("../static/home.html"); Html(HTML) -} \ No newline at end of file +} diff --git a/static/ethnocentric.otf b/static/ethnocentric.otf new file mode 100644 index 0000000000000000000000000000000000000000..c1dadc899eba54824c8119e2d7da1969688cd6d8 GIT binary patch literal 68388 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 Yur--*PqkOH7TQ|7>HABH+)>j%0mP|JmH+?% literal 0 HcmV?d00001 diff --git a/static/root.html b/static/home.html similarity index 93% rename from static/root.html rename to static/home.html index 52f55a5..57fe883 100644 --- a/static/root.html +++ b/static/home.html @@ -1,32 +1,50 @@ - + + + - - - + + + + -
-

Hey! My name is

- -

- An experienced cybersecurity analyst and full stack developer with a - certificate in penetration testing. - Co-Op Computer Science Student at - the University of Toronto specializing - in Software Engineering, with a major in statistics and minor in astrophysics. - Active in CTFs, hackathons, programming competitions, and developing a videogame. -

-

- This site is still being ported! More of my projects are listed on my resume -

- -
+
+ +
+
+

Jeremy Janella

+

About me

+ +
+ + -
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/style.css b/static/style.css new file mode 100644 index 0000000..6869cfc --- /dev/null +++ b/static/style.css @@ -0,0 +1,59 @@ +@font-face { + font-family: 'Ethnocentric'; + src: url('/static/ethnocentric.otf') format('opentype'); + font-weight: normal; + font-style: normal; + font-display: swap; /* Shows fallback font until custom font loads */ +} + + +header { + background-color: transparent; /* Light grey background */ + border-bottom: 1px solid #ddd; + padding: 1rem 1rem; +} + +nav { + display: flex; /* Aligns logo and menu horizontally */ + justify-content: space-between; /* Pushes logo to left, menu to right */ + align-items: center; + max-width: 1000px; + margin: 0 auto; /* Centers the header content */ +} + +nav ul { + list-style: none; /* Removes bullet points */ + display: flex; + gap: 20px; /* Space between links */ + margin: 0; + padding: 0; +} + +#name { + font-size: 3rem; + margin: 20px; + padding: 0px; + text-shadow: + 1px 1px orangered, + 2px 2px yellow, + 3px 3px green, + 4px 4px cornflowerblue; + letter-spacing: 2px; + width: fit-content; + color: whitesmoke; + font-family: "Ethnocentric", sans-serif; +} + +nav a { + text-decoration: none; + color: #333; + font-family: sans-serif; +} + +nav a:hover { + color: #007bff; /* Changes color when you hover */ +} + +body { + background-color: #111; +}