From 768411fb449d05428a55854eaf1e8d344ba46b79 Mon Sep 17 00:00:00 2001 From: AndreaTerenz Date: Wed, 21 Feb 2024 12:41:58 +0100 Subject: [PATCH] Updated Bootstrap, removed FontAwesome, improved favicon and more shenanigans I don't remember --- README.md | 10 ++- app.py | 29 +++++--- static/icons/new/android-chrome-144x144.png | Bin 0 -> 9014 bytes static/icons/new/apple-touch-icon.png | Bin 0 -> 4134 bytes static/icons/new/browserconfig.xml | 9 +++ static/icons/new/favicon-16x16.png | Bin 0 -> 694 bytes static/icons/new/favicon-32x32.png | Bin 0 -> 1255 bytes static/icons/new/favicon-base.png | Bin 0 -> 6486 bytes static/icons/new/favicon.ico | Bin 0 -> 15086 bytes static/icons/new/mstile-150x150.png | Bin 0 -> 5402 bytes static/icons/new/safari-pinned-tab.svg | 37 ++++++++++ static/icons/new/site.webmanifest | 14 ++++ static/scripts/contact-button.js | 29 -------- static/styles/style.less | 3 + templates/{better-index.html => index.html} | 76 +++++++++++--------- 15 files changed, 134 insertions(+), 73 deletions(-) create mode 100644 static/icons/new/android-chrome-144x144.png create mode 100644 static/icons/new/apple-touch-icon.png create mode 100644 static/icons/new/browserconfig.xml create mode 100644 static/icons/new/favicon-16x16.png create mode 100644 static/icons/new/favicon-32x32.png create mode 100644 static/icons/new/favicon-base.png create mode 100644 static/icons/new/favicon.ico create mode 100644 static/icons/new/mstile-150x150.png create mode 100644 static/icons/new/safari-pinned-tab.svg create mode 100644 static/icons/new/site.webmanifest delete mode 100644 static/scripts/contact-button.js rename templates/{better-index.html => index.html} (72%) diff --git a/README.md b/README.md index ad326de..2f624ba 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,18 @@ # AndreaTerenz.github.io

- site favicon + site favicon

Welcome to my personal portfolio website. ## Tools used -- standard JS/CSS/HTML (duh) +### Client side + - [Bootstrap 5](https://getbootstrap.com/docs/5.0/getting-started/introduction/) - [Less](https://lesscss.org/) -- [Font Awesome](https://fontawesome.com/icons/) icons \ No newline at end of file + +### Server side + +Just a simple [Flask](https://flask.palletsprojects.com/en/3.0.x/) server \ No newline at end of file diff --git a/app.py b/app.py index 9a220a5..69e51ec 100644 --- a/app.py +++ b/app.py @@ -2,7 +2,7 @@ from datetime import date import flask -from flask import Flask +from flask import Flask, send_from_directory, request app = Flask(__name__) @@ -23,7 +23,6 @@ class Contact: name: str icon: str = "" social: str = "" - brand: bool = True def calculateAge(birthDate): @@ -32,12 +31,24 @@ def calculateAge(birthDate): return age +@app.route("/static/icons/new/") +def newicons(filename): + return send_from_directory(app.static_folder, f"icons/new/{filename}") + +@app.route("/static/scripts/") +def scripts(filename): + return send_from_directory(app.static_folder, f"scripts/{filename}") + +@app.route("/static/styles/") +def styles(filename): + return send_from_directory(app.static_folder, f"styles/{filename}") + @app.route('/') def index(): share_socials = [ - ShareSocial("facebook", "https://www.facebook.com/sharer/sharer.php?u=http://terenz.dev/"), - ShareSocial("twitter", "https://twitter.com/intent/tweet?url=http://terenz.dev/&text="), - ShareSocial("linkedin", "https://www.linkedin.com/shareArticle?mini=true&url=http://terenz.dev/"), + ShareSocial("facebook", f"https://www.facebook.com/sharer/sharer.php?u={request.url}"), + ShareSocial("twitter", f"https://twitter.com/intent/tweet?url={request.url}&text="), + ShareSocial("linkedin", f"https://www.linkedin.com/shareArticle?mini=true&url={request.url}"), ] about_logos = [ @@ -52,19 +63,19 @@ def index(): Repo("AoC 2020", "Some of my solutions for the 2020 Advent of Code challenges", "Advent-of-Code-2020"), Repo("p5 Pong", "Pong clone made with p5.js and Node.js", "p5-pong"), Repo("GodotMaze", "A demonstration of some maze generation algorithms made with Godot", "GodotMaze"), - Repo("This very website", "This portfolio website, made with Bootstrap 5 and Less", "AndreaTerenz.github.io"), + Repo("This very website", "This portfolio website, made with Bootstrap 5 and Less", "Portfolio"), ] contacts = [ - Contact("mailto:contact.me@terenz.dev", "Email", icon="envelope", brand=False, social="google"), + Contact("mailto:contact.me@terenz.dev", "Email", icon="envelope", social="google"), Contact("https://www.linkedin.com/in/andrea-terenz/", "Linkedin"), Contact("https://www.github.com/AndreaTerenz", "Github"), - Contact("https://www.twitter.com/AtTerenziani", "Twitter", icon="x-twitter"), + Contact("https://www.twitter.com/AtTerenziani", "Twitter", icon="twitter-x"), ] age = calculateAge(date(1999, 10, 30)) - return flask.render_template("better-index.html", + return flask.render_template("index.html", age=age, share_socials=share_socials, about_logos=about_logos, diff --git a/static/icons/new/android-chrome-144x144.png b/static/icons/new/android-chrome-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..cd45ae4ab5cefb73e399504c629f28127c6dd436 GIT binary patch literal 9014 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 + + + + + #da532c + + + diff --git a/static/icons/new/favicon-16x16.png b/static/icons/new/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..f03f4463d8cf5e0c8f5507e5588ac35b6653ff45 GIT binary patch literal 694 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{Xiaj ziKnkC`wJ!!5o=+CXx6n142;p9E{-7@=VLG0W=~FJXnpv)^1gW>k4sms@S-b99S?#O zz1tr=Ss)@VyCzt@uJn%{Y=IQf=8p4o2ZRIFxKrd!aW-nsqe-97&vJbAnH!bfir*5u@iH`YX(rT@Bo z^vAIniCdvNR%KrmeXd#^CpGJH)JW|9bKZUmpz%(k+Q;JqSf!< z&-*H#%wG52D8EK1@~?g-u9$l-pDrA(f4fj;ONMCJ(l=?0GlUV03##05(}IhjrcTEXDy>gTe~DWM4fKy?xC literal 0 HcmV?d00001 diff --git a/static/icons/new/favicon-32x32.png b/static/icons/new/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cb7a0d16992baa9862b7ba47fde5d78d3aa224 GIT binary patch literal 1255 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 literal 0 HcmV?d00001 diff --git a/static/icons/new/favicon.ico b/static/icons/new/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a300d8e4740f7a6976f12380a1389b7d8300956b GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/static/icons/new/mstile-150x150.png b/static/icons/new/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..21b0a55112203e9be8572091259dd93e33b37598 GIT binary patch literal 5402 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 EKTX<1CjbBd literal 0 HcmV?d00001 diff --git a/static/icons/new/safari-pinned-tab.svg b/static/icons/new/safari-pinned-tab.svg new file mode 100644 index 0000000..ed922f9 --- /dev/null +++ b/static/icons/new/safari-pinned-tab.svg @@ -0,0 +1,37 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + diff --git a/static/icons/new/site.webmanifest b/static/icons/new/site.webmanifest new file mode 100644 index 0000000..bc9a76f --- /dev/null +++ b/static/icons/new/site.webmanifest @@ -0,0 +1,14 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-144x144.png", + "sizes": "144x144", + "type": "image/png" + } + ], + "theme_color": "#656565", + "background_color": "#656565", + "display": "standalone" +} diff --git a/static/scripts/contact-button.js b/static/scripts/contact-button.js deleted file mode 100644 index b5d2cce..0000000 --- a/static/scripts/contact-button.js +++ /dev/null @@ -1,29 +0,0 @@ -document.addEventListener('DOMContentLoaded', () => { - return - document.querySelectorAll('a.contact-button').forEach((el) => { - el.classList.add(..."btn btn-lg btn-block btn-social text-left fw-bold".split(" ")) - - let social = el.getAttribute('data-social'); - - if (!social) { - let link = el.getAttribute("href") - let regex_var = new RegExp(/(\.[^\.]{0,2})(\.[^\.]{0,2})(\.*$)|(\.[^\.]*)(\.*$)/); - social = link.replace(regex_var, '').split('.').pop() - } - - el.classList.add(`btn-${social}`) - - let text = el.textContent - let icon = el.getAttribute('data-icon') - - if (!icon) { - icon = social - } - - if (!text) - text = social.capitalize() - - brnds = (text !== "Email") ? "fa-brands" : "" - el.innerHTML = `${text}` - }) -}) \ No newline at end of file diff --git a/static/styles/style.less b/static/styles/style.less index f5b9522..ae46c86 100644 --- a/static/styles/style.less +++ b/static/styles/style.less @@ -38,6 +38,9 @@ a.anchor { background-color: royalblue; color: white; font-size: 22px; + justify-content: center; + align-items: center; + display: flex; border: transparent 3px solid; &:hover, &:focus { diff --git a/templates/better-index.html b/templates/index.html similarity index 72% rename from templates/better-index.html rename to templates/index.html index d48df66..9330cf0 100644 --- a/templates/better-index.html +++ b/templates/index.html @@ -1,5 +1,5 @@ -{% set PARAGRAPH_CLASSES = "py-3 px-0 px-sm-3 mx-auto mx-md-5" %} -{% set FAVICON = url_for('static', filename='icons/favicon2.svg') %} +{% set PARAGRAPH_CLASSES = "row section-div py-3 px-0 px-sm-3 mx-auto mx-md-5 shadow-lg animateOnLoad" %} +{% set FAVICON = url_for('newicons', filename='favicon-base.png') %} @@ -9,15 +9,21 @@ - + + + + + + - - - + + @@ -27,14 +33,12 @@ - - + + - - + - {##} @@ -45,7 +49,7 @@