frotnend: add more refactoring
This commit is contained in:
@ -1,9 +1,28 @@
|
|||||||
import { COLORS, SOCIALLINKS } from '../constants'
|
import { Linkedin, Github, Award } from 'lucide-react'
|
||||||
|
import { COLORS } from '../constants'
|
||||||
import { Tooltip } from './Tooltip'
|
import { Tooltip } from './Tooltip'
|
||||||
|
|
||||||
const Introduction = () => {
|
const Introduction = () => {
|
||||||
const BoldStyle = 'text-blue-900 dark:text-blue-300 font-semibold'
|
const BoldStyle = 'text-blue-900 dark:text-blue-300 font-semibold'
|
||||||
|
|
||||||
|
const socialLinks = [
|
||||||
|
{
|
||||||
|
icon: <Linkedin size={32} />,
|
||||||
|
href: 'https://www.linkedin.com/in/taqi-tahmid/',
|
||||||
|
label: 'LinkedIn',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <Github size={32} />,
|
||||||
|
href: 'https://github.com/TheTaqiTahmid',
|
||||||
|
label: 'GitHub',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <Award size={32} />,
|
||||||
|
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 (
|
return (
|
||||||
<div className="text-center p-4 max-w-4xl mx-auto">
|
<div className="text-center p-4 max-w-4xl mx-auto">
|
||||||
<h1
|
<h1
|
||||||
@ -37,7 +56,7 @@ const Introduction = () => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex justify-center gap-8 py-3">
|
<div className="flex justify-center gap-8 py-3">
|
||||||
{SOCIALLINKS.map((link, index) => (
|
{socialLinks.map((link, index) => (
|
||||||
<div key={index} className="group relative">
|
<div key={index} className="group relative">
|
||||||
<Tooltip label={link.label} position="top">
|
<Tooltip label={link.label} position="top">
|
||||||
<a
|
<a
|
||||||
|
|||||||
@ -1,6 +1,33 @@
|
|||||||
import { COLORS, SKILLS } from '../constants'
|
import pythonIcon from '../assets/python.svg'
|
||||||
|
import robotIcon from '../assets/robotframework-svgrepo-com.svg'
|
||||||
|
import goIcon from '../assets/go-original.svg'
|
||||||
|
import reactIcon from '../assets/react.svg'
|
||||||
|
import ansibleIcon from '../assets/ansible.svg'
|
||||||
|
import terraformIcon from '../assets/terraform-icon.svg'
|
||||||
|
import jenkinsIcon from '../assets/jenkins.svg'
|
||||||
|
import gitIcon from '../assets/git-icon.svg'
|
||||||
|
import dockerIcon from '../assets/docker-icon.svg'
|
||||||
|
import kubernetesIcon from '../assets/kubernetes.svg'
|
||||||
|
import prometheusIcon from '../assets/prometheus.svg'
|
||||||
|
import grafanaIcon from '../assets/grafana.svg'
|
||||||
|
import { COLORS } from '../constants'
|
||||||
|
|
||||||
const Skills = () => {
|
const Skills = () => {
|
||||||
|
const skills = [
|
||||||
|
{ name: 'Python', icon: pythonIcon },
|
||||||
|
{ name: 'Golang', icon: goIcon },
|
||||||
|
{ name: 'React', icon: reactIcon },
|
||||||
|
{ name: 'Robot Framework', icon: robotIcon },
|
||||||
|
{ name: 'Ansible', icon: ansibleIcon },
|
||||||
|
{ name: 'Terraform', icon: terraformIcon },
|
||||||
|
{ name: 'Jenkins', icon: jenkinsIcon },
|
||||||
|
{ name: 'Git', icon: gitIcon },
|
||||||
|
{ name: 'Docker', icon: dockerIcon },
|
||||||
|
{ name: 'Kubernetes', icon: kubernetesIcon },
|
||||||
|
{ name: 'Prometheus', icon: prometheusIcon },
|
||||||
|
{ name: 'Grafana', icon: grafanaIcon },
|
||||||
|
]
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<h1 className={`text-2xl py-5 font-burtons ${COLORS.PRIMARY} ${COLORS.DARK_PRIMARY}`}>
|
<h1 className={`text-2xl py-5 font-burtons ${COLORS.PRIMARY} ${COLORS.DARK_PRIMARY}`}>
|
||||||
@ -9,7 +36,7 @@ const Skills = () => {
|
|||||||
<div
|
<div
|
||||||
className={`grid grid-cols-4 gap-6 text-md py-5 leading-8 ${COLORS.TEXT} ${COLORS.DARK_TEXT} mx-auto max-w-2xl md:text-xl`}
|
className={`grid grid-cols-4 gap-6 text-md py-5 leading-8 ${COLORS.TEXT} ${COLORS.DARK_TEXT} mx-auto max-w-2xl md:text-xl`}
|
||||||
>
|
>
|
||||||
{SKILLS.map((skill) => (
|
{skills.map((skill) => (
|
||||||
<div key={skill.name} className="flex flex-col items-center">
|
<div key={skill.name} className="flex flex-col items-center">
|
||||||
<img src={skill.icon} alt={skill.name} className="h-10 w-10" />
|
<img src={skill.icon} alt={skill.name} className="h-10 w-10" />
|
||||||
<p className="mt-2 text-center">{skill.name}</p>
|
<p className="mt-2 text-center">{skill.name}</p>
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { Linkedin, Github, Award, Link } from 'lucide-react'
|
import { Linkedin, Github, Award, Link } from 'lucide-react'
|
||||||
|
import { Camera, Plane, Film, Server, Cpu, Trophy, Car, Gamepad2 } from 'lucide-react'
|
||||||
import pythonIcon from './assets/python.svg'
|
import pythonIcon from './assets/python.svg'
|
||||||
import robotIcon from './assets/robotframework-svgrepo-com.svg'
|
import robotIcon from './assets/robotframework-svgrepo-com.svg'
|
||||||
import goIcon from './assets/go-original.svg'
|
import goIcon from './assets/go-original.svg'
|
||||||
@ -26,7 +27,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 +118,129 @@ 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 INTERESTS = [
|
||||||
|
{
|
||||||
|
title: 'Travelling',
|
||||||
|
icon: <Plane size={32} />,
|
||||||
|
description:
|
||||||
|
'Exploring new places, experiencing different cultures, and creating lasting memories through adventures around the world. From scenic landscapes to bustling cities, every journey is an opportunity to learn and grow.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Photography',
|
||||||
|
icon: <Camera size={32} />,
|
||||||
|
description:
|
||||||
|
'Capturing moments and perspectives through the lens. Particularly interested in landscape and street photography, always looking to improve composition skills and trying new techniques.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Movies & Shows',
|
||||||
|
icon: <Film size={32} />,
|
||||||
|
description:
|
||||||
|
'Passionate about cinema across various genres and cultures. Enjoy analyzing cinematography, storytelling techniques, and discovering hidden gems from different parts of the world.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Homelab',
|
||||||
|
icon: <Server size={32} />,
|
||||||
|
description:
|
||||||
|
'Managing a personal homelab setup for experimenting with self-hosted services, networking configurations, and learning about system administration in a hands-on environment.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'New Technologies',
|
||||||
|
icon: <Cpu size={32} />,
|
||||||
|
description:
|
||||||
|
'Keeping up with the latest technological advancements, particularly in cloud computing, automation, and emerging DevOps tools. Enjoy experimenting with new frameworks and platforms.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Playing Video Games',
|
||||||
|
icon: <Gamepad2 size={32} />,
|
||||||
|
description:
|
||||||
|
'Enthusiastic gamer with a deep appreciation for interactive storytelling and virtual worlds. Enjoy exploring diverse genres from immersive RPGs to strategic multiplayer games.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Sports',
|
||||||
|
icon: <Trophy size={32} />,
|
||||||
|
description: 'Avid sports enthusiast following multiple disciplines:',
|
||||||
|
subInterests: [
|
||||||
|
{
|
||||||
|
name: 'Football',
|
||||||
|
details:
|
||||||
|
'Following major leagues and international tournaments, appreciating the tactical aspects and team dynamics of the beautiful game.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Cricket',
|
||||||
|
details:
|
||||||
|
'Enjoying both test matches and limited-overs formats, following international competitions and analyzing game strategies.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Formula 1',
|
||||||
|
icon: <Car size={24} />,
|
||||||
|
details:
|
||||||
|
'Following the high-speed world of F1, keeping up with team developments, race strategies, and technical innovations in motorsport.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
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`}
|
||||||
|
|||||||
@ -1,69 +1,6 @@
|
|||||||
import { Camera, Plane, Film, Server, Cpu, Trophy, Car, Gamepad2 } from 'lucide-react'
|
import { COLORS, INTERESTS } from '../constants'
|
||||||
import { COLORS } from '../constants'
|
|
||||||
|
|
||||||
const Interests = () => {
|
const Interests = () => {
|
||||||
const interests = [
|
|
||||||
{
|
|
||||||
title: 'Travelling',
|
|
||||||
icon: <Plane size={32} />,
|
|
||||||
description:
|
|
||||||
'Exploring new places, experiencing different cultures, and creating lasting memories through adventures around the world. From scenic landscapes to bustling cities, every journey is an opportunity to learn and grow.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Photography',
|
|
||||||
icon: <Camera size={32} />,
|
|
||||||
description:
|
|
||||||
'Capturing moments and perspectives through the lens. Particularly interested in landscape and street photography, always looking to improve composition skills and trying new techniques.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Movies & Shows',
|
|
||||||
icon: <Film size={32} />,
|
|
||||||
description:
|
|
||||||
'Passionate about cinema across various genres and cultures. Enjoy analyzing cinematography, storytelling techniques, and discovering hidden gems from different parts of the world.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Homelab',
|
|
||||||
icon: <Server size={32} />,
|
|
||||||
description:
|
|
||||||
'Managing a personal homelab setup for experimenting with self-hosted services, networking configurations, and learning about system administration in a hands-on environment.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'New Technologies',
|
|
||||||
icon: <Cpu size={32} />,
|
|
||||||
description:
|
|
||||||
'Keeping up with the latest technological advancements, particularly in cloud computing, automation, and emerging DevOps tools. Enjoy experimenting with new frameworks and platforms.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Playing Video Games',
|
|
||||||
icon: <Gamepad2 size={32} />,
|
|
||||||
description:
|
|
||||||
'Enthusiastic gamer with a deep appreciation for interactive storytelling and virtual worlds. Enjoy exploring diverse genres from immersive RPGs to strategic multiplayer games.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Sports',
|
|
||||||
icon: <Trophy size={32} />,
|
|
||||||
description: 'Avid sports enthusiast following multiple disciplines:',
|
|
||||||
subInterests: [
|
|
||||||
{
|
|
||||||
name: 'Football',
|
|
||||||
details:
|
|
||||||
'Following major leagues and international tournaments, appreciating the tactical aspects and team dynamics of the beautiful game.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Cricket',
|
|
||||||
details:
|
|
||||||
'Enjoying both test matches and limited-overs formats, following international competitions and analyzing game strategies.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Formula 1',
|
|
||||||
icon: <Car size={24} />,
|
|
||||||
details:
|
|
||||||
'Following the high-speed world of F1, keeping up with team developments, race strategies, and technical innovations in motorsport.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="p-4 max-w-4xl mx-auto">
|
<div className="p-4 max-w-4xl mx-auto">
|
||||||
<h1
|
<h1
|
||||||
@ -73,7 +10,7 @@ const Interests = () => {
|
|||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<div className="grid gap-6 md:grid-cols-2">
|
<div className="grid gap-6 md:grid-cols-2">
|
||||||
{interests.map((interest, index) => (
|
{INTERESTS.map((interest, index) => (
|
||||||
<div
|
<div
|
||||||
key={index}
|
key={index}
|
||||||
className={`group p-6 rounded-lg border-2 border-gray-300 dark:border-gray-700 hover:shadow-lg transition-all duration-300 ${
|
className={`group p-6 rounded-lg border-2 border-gray-300 dark:border-gray-700 hover:shadow-lg transition-all duration-300 ${
|
||||||
|
|||||||
Reference in New Issue
Block a user