sidebar: add sidebar to portfolio
This commit is contained in:
@ -4,6 +4,7 @@ import { Routes, Route } from 'react-router-dom'
|
|||||||
import './App.css'
|
import './App.css'
|
||||||
import Home from './pages/Home'
|
import Home from './pages/Home'
|
||||||
import Navbar from './components/Navbar'
|
import Navbar from './components/Navbar'
|
||||||
|
import Sidebar from './components/Sidebar'
|
||||||
import Footer from './components/Footer'
|
import Footer from './components/Footer'
|
||||||
import Experience from './pages/Experience'
|
import Experience from './pages/Experience'
|
||||||
import Projects from './pages/Projects'
|
import Projects from './pages/Projects'
|
||||||
@ -24,14 +25,21 @@ function App() {
|
|||||||
<main className="bg-amber-50 px-10 dark:bg-gray-900">
|
<main className="bg-amber-50 px-10 dark:bg-gray-900">
|
||||||
<section className="min-h-screen">
|
<section className="min-h-screen">
|
||||||
<Navbar toggleDarkMode={toggleDarkMode} darkMode={darkMode} />
|
<Navbar toggleDarkMode={toggleDarkMode} darkMode={darkMode} />
|
||||||
<Router>
|
<div className="flex flex-row h-full">
|
||||||
<Routes>
|
<div className="w-1/4 max-w-[260px] border-2">
|
||||||
<Route path="/" element={<Home />} />
|
<Sidebar />
|
||||||
<Route path="/experience" element={<Experience />} />
|
</div>
|
||||||
<Route path="/projects" element={<Projects />} />
|
<div className="flex-1">
|
||||||
<Route path="/Interests" element={<Interests />} />
|
<Router>
|
||||||
</Routes>
|
<Routes>
|
||||||
</Router>
|
<Route path="/" element={<Home />} />
|
||||||
|
<Route path="/experience" element={<Experience />} />
|
||||||
|
<Route path="/projects" element={<Projects />} />
|
||||||
|
<Route path="/Interests" element={<Interests />} />
|
||||||
|
</Routes>
|
||||||
|
</Router>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<Footer />
|
<Footer />
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
47
frontend/src/components/Sidebar.tsx
Normal file
47
frontend/src/components/Sidebar.tsx
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import { Github, Linkedin, Mail, Twitter, Globe, Calendar } from 'lucide-react'
|
||||||
|
|
||||||
|
const Sidebar = () => {
|
||||||
|
return (
|
||||||
|
<div className="p-4 max-w-xs mx-auto">
|
||||||
|
<h2 className="text-blue-800 dark:text-blue-600 mb-2">Contact</h2>
|
||||||
|
<div className="mb-4 bg-gray-200 dark:bg-gray-800 p-4 rounded-lg shadow-sm text-sm">
|
||||||
|
<div className="flex items-center">
|
||||||
|
<Mail size={18} className="text-blue-600 dark:text-blue-400 mr-2" />
|
||||||
|
<a href="mailto:taqitahmid@gmail.com" className="text-blue-600 dark:text-blue-400">
|
||||||
|
taqitahmid@gmail.com
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="mb-4 bg-gray-200 dark:bg-gray-800 p-4 rounded-lg shadow-sm text-sm">
|
||||||
|
<div className="flex items-center">
|
||||||
|
<Globe size={18} className="text-blue-600 dark:text-blue-400 mr-2" />
|
||||||
|
<a href="https://portfolio.tahmidcloud.com" className="text-blue-600 dark:text-blue-400">
|
||||||
|
My Website
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h2 className="text-blue-800 dark:text-blue-600 mb-2">Connect</h2>
|
||||||
|
<div className="mb-4 bg-gray-200 dark:bg-gray-800 p-4 rounded-lg shadow-sm text-sm">
|
||||||
|
<div className="flex items-center">
|
||||||
|
<Linkedin size={18} className="text-blue-600 dark:text-blue-400 mr-2" />
|
||||||
|
<a
|
||||||
|
href="https://www.linkedin.com/in/taqi-tahmid/"
|
||||||
|
className="text-blue-600 dark:text-blue-400"
|
||||||
|
>
|
||||||
|
Taqi Tahmid
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="mb-4 bg-gray-200 dark:bg-gray-800 p-4 rounded-lg shadow-sm text-sm">
|
||||||
|
<div className="flex items-center">
|
||||||
|
<Github size={18} className="text-blue-600 dark:text-blue-400 mr-2" />
|
||||||
|
<a href="https://github.com/TheTaqiTahmid" className="text-blue-600 dark:text-blue-400">
|
||||||
|
TheTaqiTahmid
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Sidebar
|
||||||
@ -26,7 +26,6 @@ export const EMAIL = 'taqitahmid@gmail.com'
|
|||||||
export const RESUME =
|
export const RESUME =
|
||||||
'https://www.linkedin.com/in/taqi-tahmid/overlay/1735981754176/single-media-viewer/?profileId=ACoAACDU_GsBCgKtvw2bmzbVwTy2WixBG6-e3JM'
|
'https://www.linkedin.com/in/taqi-tahmid/overlay/1735981754176/single-media-viewer/?profileId=ACoAACDU_GsBCgKtvw2bmzbVwTy2WixBG6-e3JM'
|
||||||
|
|
||||||
|
|
||||||
export const PROJECTS = [
|
export const PROJECTS = [
|
||||||
{
|
{
|
||||||
title: 'Self-Hosted Kubernetes Homelab Cluster',
|
title: 'Self-Hosted Kubernetes Homelab Cluster',
|
||||||
@ -118,4 +117,67 @@ export const SKILLS = [
|
|||||||
{ name: 'Kubernetes', icon: kubernetesIcon },
|
{ name: 'Kubernetes', icon: kubernetesIcon },
|
||||||
{ name: 'Prometheus', icon: prometheusIcon },
|
{ name: 'Prometheus', icon: prometheusIcon },
|
||||||
{ name: 'Grafana', icon: grafanaIcon },
|
{ name: 'Grafana', icon: grafanaIcon },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
export const EXPERIENCE = [
|
||||||
|
{
|
||||||
|
title: 'Experienced Developer (DevOps)',
|
||||||
|
company: 'Ericsson',
|
||||||
|
location: 'Jorvas, Finland',
|
||||||
|
period: 'November-2022 - Present',
|
||||||
|
responsibilities: [
|
||||||
|
'Managing and optimizing Kubernetes clusters in production environments',
|
||||||
|
'Designing and implementing CI/CD pipelines for end to end product development flow using Jenkins',
|
||||||
|
'Automating infrastructure deployment using Terraform and Ansible',
|
||||||
|
'Develop and maintain monitoring solutions of various resources for greater observability and troubleshooting',
|
||||||
|
'Actively support development teams regarding product development flow and infrastructure issues',
|
||||||
|
'Develop and perform automated end-to-end product testing with Python, Robot Framework, Jenkins, Bash, etc.',
|
||||||
|
],
|
||||||
|
tools: 'Kubernetes, Docker, KVM, Openstack, Ansible, Terraform, Prometheus, Grafana',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Test Engineer',
|
||||||
|
company: 'Nokia',
|
||||||
|
location: 'Espoo, Finland',
|
||||||
|
period: 'June-2021 - October-2022',
|
||||||
|
responsibilities: [
|
||||||
|
'Develop and maintain Cloud RAN E2E test setup for vCU and vDU application testing on top of RedHat Openshift',
|
||||||
|
'Develop automation and CI/CD flow for Cloud RAN testing using Python, Robot Framework, Bash, Jenkins etc.',
|
||||||
|
'Develop and perform automated testing to validate the functionality of Nokia Cloud RAN base stations',
|
||||||
|
'Integrate new hardware and software into the test setup',
|
||||||
|
'Perform hands on debugging and log analysis to nd root cause and solve any software or hardware issues',
|
||||||
|
],
|
||||||
|
tools: 'Keysight Nemo Outdoor, Nemo Analyze, Qualcomm PCAT, QCAT, QXDM',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Testing and Prototyping Intern',
|
||||||
|
company: 'GE Healthcare',
|
||||||
|
location: 'Helsinki, Finland',
|
||||||
|
period: 'Jan-2019 - May-2021',
|
||||||
|
responsibilities: [
|
||||||
|
'Planning, writing, and performing manual and automated tests of different prototype wireless medical devices',
|
||||||
|
'Designing driver and PCB circuits in Altium Designer to test the performance of the Digital Sensor Interface',
|
||||||
|
'Ensuring the PCB componets used in the devices are EU RoHS and REACH compliant',
|
||||||
|
],
|
||||||
|
tools:
|
||||||
|
'LTSpice, Altium Designer, HP-ALM, Vector Network Analyzer, Spectrum Analyzer, Climate Chamber',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
export const EDUCATION = [
|
||||||
|
{
|
||||||
|
degree: "Master's in Wireless Communication & RF Systems",
|
||||||
|
institution: 'Tampere University',
|
||||||
|
location: 'Tampere, Finland',
|
||||||
|
period: '2018 - 2020',
|
||||||
|
thesis: '5G Reference Signals and their Possibility to be for 5G Based Positioning',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
degree: "Bachelor's in Electrical & Electronic Engineering",
|
||||||
|
institution: 'Khulna University of Engineering & Technology',
|
||||||
|
location: 'Khulna, Bangladesh',
|
||||||
|
period: '2013 - 2017',
|
||||||
|
thesis:
|
||||||
|
'Density-based smart traffic control system using Canny edge detection technique using Digital Image Processing',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|||||||
@ -1,70 +1,7 @@
|
|||||||
import { Building2, Calendar, GraduationCap, MapPin, Microscope, Wrench } from 'lucide-react'
|
import { Building2, Calendar, GraduationCap, MapPin, Microscope, Wrench } from 'lucide-react'
|
||||||
import { COLORS } from '../constants'
|
import { COLORS, EXPERIENCE, EDUCATION, } from '../constants'
|
||||||
|
|
||||||
const Experience = () => {
|
const Experience = () => {
|
||||||
const experiences = [
|
|
||||||
{
|
|
||||||
title: 'Experienced Developer (DevOps)',
|
|
||||||
company: 'Ericsson',
|
|
||||||
location: 'Jorvas, Finland',
|
|
||||||
period: 'November-2022 - Present',
|
|
||||||
responsibilities: [
|
|
||||||
'Managing and optimizing Kubernetes clusters in production environments',
|
|
||||||
'Designing and implementing CI/CD pipelines for end to end product development flow using Jenkins',
|
|
||||||
'Automating infrastructure deployment using Terraform and Ansible',
|
|
||||||
'Develop and maintain monitoring solutions of various resources for greater observability and troubleshooting',
|
|
||||||
'Actively support development teams regarding product development flow and infrastructure issues',
|
|
||||||
'Develop and perform automated end-to-end product testing with Python, Robot Framework, Jenkins, Bash, etc.',
|
|
||||||
],
|
|
||||||
tools: 'Kubernetes, Docker, KVM, Openstack, Ansible, Terraform, Prometheus, Grafana',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Test Engineer',
|
|
||||||
company: 'Nokia',
|
|
||||||
location: 'Espoo, Finland',
|
|
||||||
period: 'June-2021 - October-2022',
|
|
||||||
responsibilities: [
|
|
||||||
'Develop and maintain Cloud RAN E2E test setup for vCU and vDU application testing on top of RedHat Openshift',
|
|
||||||
'Develop automation and CI/CD flow for Cloud RAN testing using Python, Robot Framework, Bash, Jenkins etc.',
|
|
||||||
'Develop and perform automated testing to validate the functionality of Nokia Cloud RAN base stations',
|
|
||||||
'Integrate new hardware and software into the test setup',
|
|
||||||
'Perform hands on debugging and log analysis to nd root cause and solve any software or hardware issues',
|
|
||||||
],
|
|
||||||
tools: 'Keysight Nemo Outdoor, Nemo Analyze, Qualcomm PCAT, QCAT, QXDM',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Testing and Prototyping Intern',
|
|
||||||
company: 'GE Healthcare',
|
|
||||||
location: 'Helsinki, Finland',
|
|
||||||
period: 'Jan-2019 - May-2021',
|
|
||||||
responsibilities: [
|
|
||||||
'Planning, writing, and performing manual and automated tests of different prototype wireless medical devices',
|
|
||||||
'Designing driver and PCB circuits in Altium Designer to test the performance of the Digital Sensor Interface',
|
|
||||||
'Ensuring the PCB componets used in the devices are EU RoHS and REACH compliant',
|
|
||||||
],
|
|
||||||
tools:
|
|
||||||
'LTSpice, Altium Designer, HP-ALM, Vector Network Analyzer, Spectrum Analyzer, Climate Chamber',
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
const education = [
|
|
||||||
{
|
|
||||||
degree: "Master's in Wireless Communication & RF Systems",
|
|
||||||
institution: 'Tampere University',
|
|
||||||
location: 'Tampere, Finland',
|
|
||||||
period: '2018 - 2020',
|
|
||||||
thesis: '5G Reference Signals and their Possibility to be for 5G Based Positioning',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
degree: "Bachelor's in Electrical & Electronic Engineering",
|
|
||||||
institution: 'Khulna University of Engineering & Technology',
|
|
||||||
location: 'Khulna, Bangladesh',
|
|
||||||
period: '2013 - 2017',
|
|
||||||
thesis:
|
|
||||||
'Density-based smart traffic control system using Canny edge detection technique using Digital Image Processing',
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="p-4 max-w-4xl mx-auto">
|
<div className="p-4 max-w-4xl mx-auto">
|
||||||
<h2
|
<h2
|
||||||
@ -74,7 +11,7 @@ const Experience = () => {
|
|||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div className="space-y-8">
|
<div className="space-y-8">
|
||||||
{experiences.map((exp, index) => (
|
{EXPERIENCE.map((exp, index) => (
|
||||||
<div
|
<div
|
||||||
key={index}
|
key={index}
|
||||||
className={`border-l-4 ${COLORS.BORDER} ${COLORS.DARK_BORDER} pl-4 space-y-2`}
|
className={`border-l-4 ${COLORS.BORDER} ${COLORS.DARK_BORDER} pl-4 space-y-2`}
|
||||||
@ -128,7 +65,7 @@ const Experience = () => {
|
|||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
{education.map((edu, index) => (
|
{EDUCATION.map((edu, index) => (
|
||||||
<div
|
<div
|
||||||
key={index}
|
key={index}
|
||||||
className={`border-l-4 ${COLORS.BORDER} ${COLORS.DARK_BORDER} pl-4 space-y-2`}
|
className={`border-l-4 ${COLORS.BORDER} ${COLORS.DARK_BORDER} pl-4 space-y-2`}
|
||||||
|
|||||||
Reference in New Issue
Block a user