From 0abc6ce6e5640834de62f8be4536af5bfc83964c Mon Sep 17 00:00:00 2001 From: Taqi Tahmid Date: Wed, 1 Jan 2025 10:27:17 +0200 Subject: [PATCH] updated frontend with CKA info and footer --- frontend/Dockerfile => Dockerfile | 0 frontend/package-lock.json | 9 +++ frontend/package.json | 1 + frontend/src/App.tsx | 2 + frontend/src/components/Footer.tsx | 42 ++++++++++ frontend/src/components/Introduction.tsx | 99 ++++++++++++++++-------- frontend/src/components/Navbar.tsx | 22 +++--- 7 files changed, 131 insertions(+), 44 deletions(-) rename frontend/Dockerfile => Dockerfile (100%) create mode 100644 frontend/src/components/Footer.tsx diff --git a/frontend/Dockerfile b/Dockerfile similarity index 100% rename from frontend/Dockerfile rename to Dockerfile diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 2d2200f..c19c56c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,6 +8,7 @@ "name": "portfolio", "version": "0.0.0", "dependencies": { + "lucide-react": "^0.469.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-icons": "^5.3.0" @@ -2778,6 +2779,14 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-react": { + "version": "0.469.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.469.0.tgz", + "integrity": "sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 4945748..145558c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "lucide-react": "^0.469.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-icons": "^5.3.0" diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 7171610..1f1800d 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -3,6 +3,7 @@ import './App.css' import Navbar from './components/Navbar' import Introduction from './components/Introduction' import Skills from './components/Skills' +import Footer from './components/Footer' function App() { const [darkMode, setDarkMode] = useState(true) @@ -18,6 +19,7 @@ function App() { +
diff --git a/frontend/src/components/Footer.tsx b/frontend/src/components/Footer.tsx new file mode 100644 index 0000000..7bfc19a --- /dev/null +++ b/frontend/src/components/Footer.tsx @@ -0,0 +1,42 @@ +import { Server, Coffee } from "lucide-react"; + +const Footer = () => { + const currentYear = new Date().getFullYear(); + + return ( +
+
+
+
+ + Self-hosted on my homelab Kubernetes cluster +
+ +
+ © {currentYear} Taqi Tahmid + + Built with React & Tailwind CSS + + + View Source + +
+ +
+ + + Powered by coffee and countless hours of debugging + +
+
+
+
+ ); +}; + +export default Footer; \ No newline at end of file diff --git a/frontend/src/components/Introduction.tsx b/frontend/src/components/Introduction.tsx index aaf2113..9a6d307 100644 --- a/frontend/src/components/Introduction.tsx +++ b/frontend/src/components/Introduction.tsx @@ -1,44 +1,75 @@ -import { AiFillGithub, AiFillLinkedin } from "react-icons/ai"; +import React from "react"; +import { Linkedin, Github, Award } from "lucide-react"; const Introduction = () => { - const BoldStyle = "text-blue-900 dark:text-blue-400"; + const BoldStyle = "text-blue-900 dark:text-blue-400 font-semibold"; + + const socialLinks = [ + { + icon: , + href: "https://www.linkedin.com/in/taqi-tahmid/", + label: "LinkedIn" + }, + { + icon: , + href: "https://github.com/TheTaqiTahmid", + label: "GitHub" + }, + { + icon: , + href: "https://ti-user-certificates.s3.amazonaws.com/e0df7fbf-a057-42af-8a1f-590912be5460/3da54db2-f994-4148-a0ca-705ae1d748cd-mohammad-taqi-tahmid-094cf8b4-0db8-4a9f-b787-b4efbb2a90fe-certificate.pdf", + label: "CKA Certificate" + } + ]; + return ( -
-

+
+

Taqi Tahmid -

-

+

+ +

Test Automation and DevOps Engineer -

-

- I am a Test Automation and{" "} - DevOps Engineer - with a Bachelor’s from Khulna University of Engineering & Technology - (KUET) and a Master’s from Tampere University. I am currently working at - Ericsson in Finland as a DevOps Engineer. -
-
I specialize in designing CI/CD pipelines and test automation for - diverse applications and architectures with four years of industry - experience. -

-

+ +
+

+ I am a DevOps and{" "} + Test Automation engineer with a{" "} + certified Kubernetes Administrator (CKA) certification, + specializing in managing Kubernetes clusters and cloud infrastructure. + Currently working at Ericsson in Finland as a DevOps Engineer. +

+ +

+ I bring four years of industry experience in designing CI/CD pipelines + and test automation for diverse applications and architectures. I hold a Bachelor's + degree from Khulna University of Engineering & Technology (KUET) and a Master's + degree from Tampere University. My expertise spans across the entire DevOps lifecycle, + from cluster management and infrastructure automation to implementing robust testing frameworks. +

+
+ +
+ {socialLinks.map((link, index) => ( +
+ + {link.icon} + + + {link.label} + +
+ ))}
); }; -export default Introduction; +export default Introduction; \ No newline at end of file diff --git a/frontend/src/components/Navbar.tsx b/frontend/src/components/Navbar.tsx index 03342c3..c3ec7f1 100644 --- a/frontend/src/components/Navbar.tsx +++ b/frontend/src/components/Navbar.tsx @@ -1,32 +1,34 @@ import React from "react" +import { Sun, Moon, FileText } from "lucide-react" interface NavProps { darkMode: boolean toggleDarkMode: () => void } -const Navbar: React.FC = ( {toggleDarkMode, darkMode} ) => { - const mode = darkMode ? "Light" : "Dark" +const Navbar: React.FC = ({toggleDarkMode, darkMode}) => { return ( - <> -