summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.py14
-rw-r--r--pages.py60
-rw-r--r--www/about/index.html2
-rw-r--r--www/projects/index.html2
-rw-r--r--www/scripts/onload.js3
5 files changed, 76 insertions, 5 deletions
diff --git a/main.py b/main.py
index 23f201f..78074cc 100644
--- a/main.py
+++ b/main.py
@@ -138,4 +138,18 @@ def event_page_redirect(event_name: str):
)
+@app.get("/")
+def index_page():
+ status, html = pages.render_index()
+
+ return fastapi.responses.Response(content=html, media_type="text/html", status_code=status)
+
+
+@app.get("/blog/")
+def bloglist_page():
+ status, html = pages.render_blog_list()
+
+ return fastapi.responses.Response(content=html, media_type="text/html", status_code=status)
+
+
app.mount("/", fastapi.staticfiles.StaticFiles(directory="./www/", html=True), name="static")
diff --git a/pages.py b/pages.py
index e204a3e..04c1671 100644
--- a/pages.py
+++ b/pages.py
@@ -13,11 +13,15 @@ PATH_HTML_EVENT_TEMPLATE = "./templates/eventdetails.html"
PATH_EVENT_INDEX = "./data/events.json"
PATH_HTML_VIDEO_TEMPLATE = "./templates/video.html"
PATH_VIDEO_INDEX = "./data/videos.json"
+PATH_INDEX = "./www/index.html"
+PATH_BLOGLIST = "./www/blog/index.html"
HTML_PROJECT_TEMPLATE = """"""
HTML_BLOGPOST_TEMPLATE = """"""
HTML_EVENT_TEMPLATE = """"""
HTML_VIDEO_TEMPLATE = """"""
+HTML_INDEX = """"""
+HTML_BLOGLIST = """"""
PROJECT_INDEX = {}
BLOGPOST_INDEX = {}
@@ -34,6 +38,10 @@ with open(PATH_HTML_EVENT_TEMPLATE) as f:
HTML_EVENT_TEMPLATE = f.read()
with open(PATH_HTML_VIDEO_TEMPLATE) as f:
HTML_VIDEO_TEMPLATE = f.read()
+with open(PATH_INDEX) as f:
+ HTML_INDEX = f.read()
+with open(PATH_BLOGLIST) as f:
+ HTML_BLOGLIST = f.read()
with open(PATH_PROJECT_INDEX) as f:
PROJECT_INDEX = json.load(f)
@@ -234,3 +242,55 @@ def render_event(event_name: str) -> tuple:
soup.title.string = soup.title.string.replace("{[{title}]}", metadata["title"])
return (200, str(soup))
+
+
+def render_index() -> tuple:
+ html = HTML_INDEX
+
+ soup = BeautifulSoup(html, "html.parser")
+
+ soup.select_one("#blog-container").append(render_blogpost_card(len(BLOGPOST_INDEX["posts"]) - 1))
+ soup.select_one("#blog-container").append(render_blogpost_card(len(BLOGPOST_INDEX["posts"]) - 2))
+
+ return (200, soup)
+
+
+def render_blog_list() -> tuple:
+ html = HTML_BLOGLIST
+
+ soup = BeautifulSoup(html, "html.parser")
+
+ for i in range(len(BLOGPOST_INDEX["posts"]) - 1, -1, -1):
+ soup.select_one("#blog-container").append(render_blogpost_card(i))
+
+ return (200, soup)
+
+
+def render_blogpost_card(idx: int) -> BeautifulSoup:
+ if idx >= len(BLOGPOST_INDEX["posts"]):
+ print(f"blog of index {idx} doesn't exist")
+ return None
+
+ post = BLOGPOST_INDEX["posts"][idx]
+
+ evaluatedTags = ""
+
+ for tag in post["tags"]:
+ evaluatedTags += f"<span class=\"chip\">{tag}</span>"
+
+ snippet = f"""
+ <div class="card" tabindex="9999">
+ <img src="{post["thumbnail"]}"
+ alt="">
+ <div>
+ <div class="flex-container-normal chip-container">
+ {evaluatedTags}
+ </div>
+ <a href="/blog/{idx}" class="link"><h2>{post["title"]}</h2></a>
+ <p class="half-opacity-text"><i class="fa-solid fa-calendar"></i> {post["date"]}</p>
+ <p>{post["description"]}</p>
+ </div>
+ </div>
+ """
+
+ return BeautifulSoup(snippet, "html.parser")
diff --git a/www/about/index.html b/www/about/index.html
index bc49f24..46572ee 100644
--- a/www/about/index.html
+++ b/www/about/index.html
@@ -130,7 +130,7 @@
<div class="timeline-item shadow-filter">
<div>
<span class="half-opacity-text"><i class="fa-solid fa-code"></i> Project</span>
- <h2>Tank Shooter</h2>
+ <h2>Tank Shooter <i class="half-opacity-text fa-brands fa-unity"></i></h2>
<p>Created and published my first major game project. A 2D pixel art arcade shooter game.</p>
<p><a class="link" href="https://altaf-creator.itch.io/tank-shooter"><i class="fa-brands fa-itch-io"></i> / Tank Shooter &rarr;</a></p>
</div>
diff --git a/www/projects/index.html b/www/projects/index.html
index cfd3ba2..fd053a2 100644
--- a/www/projects/index.html
+++ b/www/projects/index.html
@@ -123,7 +123,7 @@
</div>
<div class="flex full-img-card gallery-card"
style="background-image: url(/assets/images/game-hero/.png);">
- <a href="https://github.com/altaf-creator/droid-esp32-blockly" class="fill-div gradient-overlay">
+ <a href="/209.html" class="fill-div gradient-overlay">
</a>
<div class="img-card-titlebox">
<span class="img-card-subtitle"><i class="fa-solid fa-microchip"></i> Electronics</span>
diff --git a/www/scripts/onload.js b/www/scripts/onload.js
index 539df36..f6089f7 100644
--- a/www/scripts/onload.js
+++ b/www/scripts/onload.js
@@ -33,16 +33,13 @@ function blog(n) {
}
function index() {
- postList(2);
addNodes();
}
function library() {
- postList();
addNodes();
}
function blogPost() {
- postList(3);
addNodes();
}