diff --git a/src/blog_posts/mod.rs b/src/blog_posts/mod.rs index bcaca0f..2efd6bc 100644 --- a/src/blog_posts/mod.rs +++ b/src/blog_posts/mod.rs @@ -1,3 +1,2 @@ pub mod blog_post_model; pub mod featured_blog_posts; -pub mod tag_list; diff --git a/src/main.rs b/src/main.rs index f2d0f90..c79b559 100644 --- a/src/main.rs +++ b/src/main.rs @@ -41,8 +41,6 @@ async fn main() { .nest_service("/config.yml", ServeDir::new("static/resources/config.yml")) // Decap CMS config .nest_service("/robots.txt", ServeDir::new("robots.txt")); - let app = app.fallback(handler_404); - #[cfg(debug_assertions)] let app = app.layer(LiveReloadLayer::new()); @@ -54,21 +52,8 @@ async fn main() { axum::serve(listener, app).await.unwrap(); } -async fn handler_404(OriginalUri(original_uri): OriginalUri) -> impl IntoResponse { - info!("{original_uri} not found"); - (StatusCode::NOT_FOUND, "nothing to see here") -} - // TODO Socials // - fotos -// background gradient color -// TODO Change DNS system // THINK deploy to alula? rather then katelyn? can be change whenever -// TODO after release -// OG tags -// - projects page -// TODO broken links -// showcase/eggfetcher -// broadcasts/ -// manifest.json // +// TODO 404 page diff --git a/src/pages/blog_post_list.rs b/src/pages/blog_post_list.rs index 8a0763b..c86ed58 100644 --- a/src/pages/blog_post_list.rs +++ b/src/pages/blog_post_list.rs @@ -1,4 +1,3 @@ -use askama::Template; use axum::{ extract::{OriginalUri, Path}, http::StatusCode, @@ -7,28 +6,16 @@ use tokio::try_join; use tracing::debug; use crate::{ - blog_posts::{ - blog_post_model::{BlogPostMetadata, BLOG_POST_PATH}, - tag_list::{get_popular_tags, get_posts_by_tag}, - }, + blog_posts::blog_post_model::{BlogPostMetadata, BLOG_POST_PATH}, components::site_header::{HeaderProps, Link}, - filters, - post_utils::{post_listing::get_post_list, post_parser::ParseResult}, - projects::{featured_projects::get_featured_projects, project_model::ProjectMetadata}, + post_utils::{ + post_listing::get_post_list, + tags::{get_popular_tags, get_posts_by_tag}, + }, + projects::featured_projects::get_featured_projects, }; -#[derive(Template)] -#[template(path = "blog_post_list.html")] -pub struct PostListTemplate { - pub title: String, - pub og_title: String, - pub segment: String, - pub posts: Vec>, - pub header_props: HeaderProps, - pub tags: Vec, - pub featured_projects: Vec>, - pub current_url: String, -} +use super::post_list::PostListTemplate; pub async fn render_blog_post_list( tag: Option>, diff --git a/src/pages/broadcast_list.rs b/src/pages/broadcast_list.rs index 6c6ff3b..8321e91 100644 --- a/src/pages/broadcast_list.rs +++ b/src/pages/broadcast_list.rs @@ -6,16 +6,16 @@ use tokio::try_join; use tracing::debug; use crate::{ - blog_posts::{ - blog_post_model::{BlogPostMetadata, BLOG_POST_PATH}, - tag_list::{get_popular_tags, get_posts_by_tag}, - }, + blog_posts::blog_post_model::{BlogPostMetadata, BLOG_POST_PATH}, components::site_header::{HeaderProps, Link}, - post_utils::post_listing::get_post_list, + post_utils::{ + post_listing::get_post_list, + tags::{get_popular_tags, get_posts_by_tag}, + }, projects::featured_projects::get_featured_projects, }; -use super::blog_post_list::PostListTemplate; +use super::post_list::PostListTemplate; pub async fn render_broadcast_post_list( tag: Option>, diff --git a/src/pages/index.rs b/src/pages/index.rs index 6de96e0..77660d6 100644 --- a/src/pages/index.rs +++ b/src/pages/index.rs @@ -3,13 +3,10 @@ use axum::http::StatusCode; use tokio::try_join; use crate::{ - blog_posts::{ - blog_post_model::BlogPostMetadata, featured_blog_posts::get_featured_blog_posts, - tag_list::get_popular_tags, - }, + blog_posts::{blog_post_model::BlogPostMetadata, featured_blog_posts::get_featured_blog_posts}, components::site_header::HeaderProps, filters, - post_utils::post_parser::ParseResult, + post_utils::{post_parser::ParseResult, tags::get_popular_tags}, projects::{featured_projects::get_featured_projects, project_model::ProjectMetadata}, }; diff --git a/src/pages/mod.rs b/src/pages/mod.rs index 43f6d8e..2bab04b 100644 --- a/src/pages/mod.rs +++ b/src/pages/mod.rs @@ -4,5 +4,7 @@ pub mod blog_post_page; pub mod broadcast_list; pub mod contact; pub mod index; +pub mod not_found; +pub mod post_list; pub mod project_list; pub mod showcase; diff --git a/src/pages/not_found.rs b/src/pages/not_found.rs new file mode 100644 index 0000000..17df806 --- /dev/null +++ b/src/pages/not_found.rs @@ -0,0 +1,25 @@ +use askama::Template; +use axum::{extract::OriginalUri, http::StatusCode}; +use tracing::info; + +use crate::components::site_header::HeaderProps; + +#[derive(Template)] +#[template(path = "not_found.html")] +pub struct NotFoundPage { + title: String, + header_props: HeaderProps, +} + +pub async fn render_not_found( + OriginalUri(original_uri): OriginalUri, +) -> Result<(StatusCode, NotFoundPage), StatusCode> { + info!("{original_uri} not found"); + Ok(( + StatusCode::NOT_FOUND, + NotFoundPage { + title: "This page does not exists".to_owned(), + header_props: HeaderProps::default(), + }, + )) +} diff --git a/src/pages/post_list.rs b/src/pages/post_list.rs new file mode 100644 index 0000000..6ef81d1 --- /dev/null +++ b/src/pages/post_list.rs @@ -0,0 +1,19 @@ +use askama::Template; + +use crate::{ + blog_posts::blog_post_model::BlogPostMetadata, components::site_header::HeaderProps, filters, + post_utils::post_parser::ParseResult, projects::project_model::ProjectMetadata, +}; + +#[derive(Template)] +#[template(path = "post_list.html")] +pub struct PostListTemplate { + pub title: String, + pub og_title: String, + pub segment: String, + pub posts: Vec>, + pub header_props: HeaderProps, + pub tags: Vec, + pub featured_projects: Vec>, + pub current_url: String, +} diff --git a/src/picture_generator/image_src_generator.rs b/src/picture_generator/image_src_generator.rs index f289da7..dcc245b 100644 --- a/src/picture_generator/image_src_generator.rs +++ b/src/picture_generator/image_src_generator.rs @@ -2,7 +2,6 @@ use std::{path::Path, sync::Arc}; use anyhow::Context; use image::ImageReader; -use tracing::debug; use super::{ image_generator::generate_images, diff --git a/src/post_utils/mod.rs b/src/post_utils/mod.rs index 8c2382e..0629f5a 100644 --- a/src/post_utils/mod.rs +++ b/src/post_utils/mod.rs @@ -1,2 +1,3 @@ pub mod post_listing; pub mod post_parser; +pub mod tags; diff --git a/src/post_utils/post_parser.rs b/src/post_utils/post_parser.rs index 167a9fe..bdc0c79 100644 --- a/src/post_utils/post_parser.rs +++ b/src/post_utils/post_parser.rs @@ -10,7 +10,7 @@ use pulldown_cmark::{CodeBlockKind, Event, Options, Parser, Tag, TagEnd}; use serde::{de::DeserializeOwned, Deserialize, Deserializer}; use syntect::{highlighting::ThemeSet, html::highlighted_html_for_string, parsing::SyntaxSet}; use tokio::fs; -use tracing::{debug, error, info}; +use tracing::{debug, error}; use crate::picture_generator::{ picture_markup_generator::generate_picture_markup, resolutions::get_max_resolution, diff --git a/src/blog_posts/tag_list.rs b/src/post_utils/tags.rs similarity index 91% rename from src/blog_posts/tag_list.rs rename to src/post_utils/tags.rs index ad49ebd..8a5b58d 100644 --- a/src/blog_posts/tag_list.rs +++ b/src/post_utils/tags.rs @@ -2,10 +2,9 @@ use axum::http::StatusCode; use std::collections::HashMap; use tracing::debug; -use crate::{ - blog_posts::blog_post_model::{BlogPostMetadata, BLOG_POST_PATH}, - post_utils::{post_listing::get_post_list, post_parser::ParseResult}, -}; +use crate::blog_posts::blog_post_model::{BlogPostMetadata, BLOG_POST_PATH}; + +use super::{post_listing::get_post_list, post_parser::ParseResult}; pub async fn get_popular_tags(segment: Option) -> Result, StatusCode> { const TAGS_LENGTH: usize = 7; diff --git a/src/router.rs b/src/router.rs index c450c4c..9002518 100644 --- a/src/router.rs +++ b/src/router.rs @@ -3,8 +3,8 @@ use crate::{ pages::{ admin::render_admin, blog_post_list::render_blog_post_list, blog_post_page::render_blog_post, broadcast_list::render_broadcast_post_list, - contact::render_contact, index::render_index, project_list::render_projects_list, - showcase::egg_fetcher::render_egg_fetcher, + contact::render_contact, index::render_index, not_found::render_not_found, + project_list::render_projects_list, showcase::egg_fetcher::render_egg_fetcher, }, }; use axum::{extract::MatchedPath, http::Request, routing::get, Router}; @@ -42,4 +42,5 @@ pub fn get_router() -> Router { ) }), ) + .fallback(render_not_found) } diff --git a/styles/output.css b/styles/output.css index efd8f5e..e0c86ee 100644 --- a/styles/output.css +++ b/styles/output.css @@ -702,6 +702,11 @@ video { margin-bottom: 1.25rem; } +.mx-3 { + margin-left: 0.75rem; + margin-right: 0.75rem; +} + .mb-1 { margin-bottom: 0.25rem; } @@ -818,6 +823,10 @@ video { max-width: 64rem; } +.flex-1 { + flex: 1 1 0%; +} + .flex-grow { flex-grow: 1; } @@ -868,6 +877,10 @@ video { justify-content: space-between; } +.justify-around { + justify-content: space-around; +} + .gap-2 { gap: 0.5rem; } @@ -1034,6 +1047,16 @@ video { line-height: 1.75rem; } +.text-6xl { + font-size: 3.75rem; + line-height: 1; +} + +.text-9xl { + font-size: 8rem; + line-height: 1; +} + .font-bold { font-weight: 700; } diff --git a/templates/components/social_card.html b/templates/components/social_card.html index e7c961e..bbe5873 100644 --- a/templates/components/social_card.html +++ b/templates/components/social_card.html @@ -2,7 +2,7 @@
-

{{heading|safe}}

diff --git a/templates/components/talent_card.html b/templates/components/talent_card.html index 67d20d8..a7d3b1e 100644 --- a/templates/components/talent_card.html +++ b/templates/components/talent_card.html @@ -2,7 +2,7 @@
diff --git a/templates/not_found.html b/templates/not_found.html new file mode 100644 index 0000000..d8737fb --- /dev/null +++ b/templates/not_found.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} +{% block content %} + +
+

+ This page doesn't exists +

+

😓 +

+

+ check out introduction page or contact page +

+
+ +{% endblock %} diff --git a/templates/blog_post_list.html b/templates/post_list.html similarity index 89% rename from templates/blog_post_list.html rename to templates/post_list.html index 110968b..995026d 100644 --- a/templates/blog_post_list.html +++ b/templates/post_list.html @@ -10,8 +10,8 @@ {% block content %} -
-
+
+
{% if posts.len() == 0 %}

You've found void in the space.

{% else %} @@ -19,7 +19,7 @@ {{title}} -
+
    {% for tag in tags %}
  • @@ -40,7 +40,7 @@ {% endfor %}
{% endif %} -
+
@@ -59,5 +59,5 @@ check out more projects
-
+
{% endblock %} diff --git a/templates/site_footer.html b/templates/site_footer.html index 10bccf1..748baa8 100644 --- a/templates/site_footer.html +++ b/templates/site_footer.html @@ -1,7 +1,8 @@