From 265f12009a969024238d5889b7d4ac0b56847c4f Mon Sep 17 00:00:00 2001 From: Zobaidul Kazi Date: Wed, 28 Aug 2024 21:19:49 +0600 Subject: [PATCH] subjects: ["Mechanical Engineering", "Tools Design", "Projects Management"], --- src/app/projects/page.tsx | 1 + src/components/ui-utils/ProjectShowcase.tsx | 156 +++++++++++++------- src/components/ui/about/EducationDetail.tsx | 6 +- src/components/ui/skills/SkillsShow.tsx | 5 +- src/contexts/data/educationDetails.ts | 11 +- src/contexts/skillsData.ts | 29 +++- 6 files changed, 140 insertions(+), 68 deletions(-) diff --git a/src/app/projects/page.tsx b/src/app/projects/page.tsx index b73a89e..939a515 100644 --- a/src/app/projects/page.tsx +++ b/src/app/projects/page.tsx @@ -37,6 +37,7 @@ const ProjectsPage = () => { imageUrl: "https://via.placeholder.com/300", projectUrl: "https://github.com/zobkazi/job-board-api", }, + // Add more projects as needed ]; diff --git a/src/components/ui-utils/ProjectShowcase.tsx b/src/components/ui-utils/ProjectShowcase.tsx index a03c6a9..1601c68 100644 --- a/src/components/ui-utils/ProjectShowcase.tsx +++ b/src/components/ui-utils/ProjectShowcase.tsx @@ -1,5 +1,6 @@ +"use client"; import Link from "next/link"; -import React from "react"; +import React, { useState } from "react"; interface Project { name: string; @@ -16,62 +17,117 @@ interface ProjectShowcaseProps { } const ProjectShowcase: React.FC = ({ projects }) => { + const [currentPage, setCurrentPage] = useState(1); + const projectsPerPage = 3; // Number of projects to display per page + + // Calculate the number of pages + const totalPages = Math.ceil(projects.length / projectsPerPage); + + // Get the projects for the current page + const currentProjects = projects.slice( + (currentPage - 1) * projectsPerPage, + currentPage * projectsPerPage + ); + + // Handle page changes + const handleNextPage = () => { + if (currentPage < totalPages) { + setCurrentPage(currentPage + 1); + } + }; + + const handlePrevPage = () => { + if (currentPage > 1) { + setCurrentPage(currentPage - 1); + } + }; + return ( -
- {projects.map((project, index) => ( -
- {project.name} -
-

{project.name}

-

{project.description}

-
- {project.techStack.map((tech, i) => ( - - {tech} - - ))} -
- - View Project - - {project.docsUrl && ( - - View Docs - - )} - {project.dockerUrl && ( +
+
+ {currentProjects.map((project, index) => ( +
+ + {project.name} + +
+

{project.name}

+

{project.description}

+
+ {project.techStack.map((tech, i) => ( + + {tech} + + ))} +
- View Docker + View Project - )} + {project.docsUrl && ( + + View Docs + + )} + {project.dockerUrl && ( + + View Docker + + )} +
-
- ))} + ))} +
+ + {/* Pagination Controls */} +
+ + +
); }; diff --git a/src/components/ui/about/EducationDetail.tsx b/src/components/ui/about/EducationDetail.tsx index 3a6070b..b0f3a71 100644 --- a/src/components/ui/about/EducationDetail.tsx +++ b/src/components/ui/about/EducationDetail.tsx @@ -60,7 +60,7 @@ const EducationCard: React.FC = ({ educationDetails }) => { {educationDetails.map((detail, index) => ( = ({ educationDetails }) => { {/* Card header */}
{/* Title */} -

+

{detail.schoolName}

@@ -87,7 +87,7 @@ const EducationCard: React.FC = ({ educationDetails }) => {
{/* Course Name */} -
+
{detail.courseName}
diff --git a/src/components/ui/skills/SkillsShow.tsx b/src/components/ui/skills/SkillsShow.tsx index d831888..ee6c2ab 100644 --- a/src/components/ui/skills/SkillsShow.tsx +++ b/src/components/ui/skills/SkillsShow.tsx @@ -3,6 +3,7 @@ import React from "react"; import { motion } from "framer-motion"; import Tooltip from "@/components/common/Tooltip"; import { skills } from "@/contexts/skillsData"; +import Link from "next/link"; interface Skill { name: string; src: string; @@ -29,7 +30,7 @@ const SkillsShow: React.FC = () => {
{skillsArray.map((skill: Skill, index) => ( - { alt={skill.alt} /> - + ))}
diff --git a/src/contexts/data/educationDetails.ts b/src/contexts/data/educationDetails.ts index 1166f6d..e474074 100644 --- a/src/contexts/data/educationDetails.ts +++ b/src/contexts/data/educationDetails.ts @@ -7,18 +7,19 @@ export const educationDetails = [ years: "2019 - 2023", length: "4 years", results: "GPA: 3.8", - description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", + description: + "Completed a rigorous 4-year program focused on Mechanical Engineering. Gained hands-on experience in tools design, project management, and engineering principles. Graduated with a solid GPA, demonstrating consistent academic performance.", }, { courseName: "Secondary School Certificate", - schoolName: "Sylhet Govt. High School", + schoolName: "M B M T H S", location: "Ulipur, Kurigram, Bangladesh", subjects: ["Mathematics", "Networking Basics", "Information Technology"], years: "2017 - 2019", length: "2 years", results: "GPA: 4.71", description: - "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", + "Achieved a high GPA in a comprehensive 2-year program with a focus on core subjects such as Mathematics, Networking Basics, and Information Technology. This foundation paved the way for advanced studies in engineering and technology.", }, { courseName: "Full Stack Army", @@ -36,10 +37,10 @@ export const educationDetails = [ "Cloud Computing", ], years: "2019 - remaining", - length: "remaining", + length: "Ongoing", results: "Full Time", description: - "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", + "Enrolled in an intensive, ongoing Full Stack Development program. Covering a wide range of subjects from web development and advanced JavaScript to system design, DevOps, and cloud computing. Continuously expanding skills to stay at the forefront of technology.", }, // Add more education details as needed ]; diff --git a/src/contexts/skillsData.ts b/src/contexts/skillsData.ts index e322949..0ceb882 100644 --- a/src/contexts/skillsData.ts +++ b/src/contexts/skillsData.ts @@ -23,6 +23,19 @@ export const skills = { ], frontend: [ + { + name: "HTML", + src: "https://skillicons.dev/icons?i=html", + alt: "HTML", + link: "https://developer.mozilla.org/en-US/docs/Web/HTML", + }, + { + name: "CSS", + src: "https://skillicons.dev/icons?i=css", + alt: "CSS", + link: "https://developer.mozilla.org/en-US/docs/Web/CSS", + }, + { name: "React", src: "https://skillicons.dev/icons?i=react", @@ -121,7 +134,7 @@ export const skills = { api_Documentation: [ { name: "Swagger", - src: "https://skillicons.dev/icons?i=swagger", + src: "https://raw.githubusercontent.com/zobkazi/zobkazi.github.io/3c2c06679b46dea205193dc814580e2951fe1eea/src/assets/images/swagger.svg", alt: "Swagger", link: "https://swagger.io/", }, @@ -137,6 +150,12 @@ export const skills = { alt: "Markdown", link: "https://daringfireball.net/projects/markdown/", }, + { + name: "notion", + src: "https://skillicons.dev/icons?i=notion", + alt: "Notion", + link: "https://www.notion.so/", + }, ], microservices: [ { @@ -256,7 +275,7 @@ export const skills = { link: "https://www.netlify.com/", }, ], - cli: [ + Cli: [ { name: "Git", src: "https://skillicons.dev/icons?i=git", @@ -307,12 +326,6 @@ export const skills = { alt: "pnpm", link: "https://pnpm.io/", }, - { - name: "notion", - src: "https://skillicons.dev/icons?i=notion", - alt: "Notion", - link: "https://www.notion.so/", - }, ], degian_Tools: [ {