Skip to content

Commit

Permalink
subjects: ["Mechanical Engineering", "Tools Design", "Projects Manag…
Browse files Browse the repository at this point in the history
…ement"],
  • Loading branch information
zobkazi committed Aug 28, 2024
1 parent 3c2c066 commit 265f120
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 68 deletions.
1 change: 1 addition & 0 deletions src/app/projects/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
];

Expand Down
156 changes: 106 additions & 50 deletions src/components/ui-utils/ProjectShowcase.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"use client";
import Link from "next/link";
import React from "react";
import React, { useState } from "react";

interface Project {
name: string;
Expand All @@ -16,62 +17,117 @@ interface ProjectShowcaseProps {
}

const ProjectShowcase: React.FC<ProjectShowcaseProps> = ({ 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 (
<div className="flex flex-wrap justify-center gap-8 p-8 bg-[linear-gradient(to_right,#80808012_1px,transparent_1px),linear-gradient(to_bottom,#80808012_1px,transparent_1px)] bg-[size:24px_24px] shadow-lg rounded-2xl lg:p-12">
{projects.map((project, index) => (
<div
key={index}
className="max-w-xs rounded-lg shadow-lg overflow-hidden transform hover:scale-105 transition-transform duration-300"
>
<img
className="w-full h-48 object-cover"
src={project.imageUrl}
alt={project.name}
/>
<div className="p-6">
<h3 className="text-xl font-semibold mb-2">{project.name}</h3>
<p className="text-gray-400 mb-4">{project.description}</p>
<div className="flex flex-wrap gap-2 mb-4">
{project.techStack.map((tech, i) => (
<span
key={i}
className="text-sm bg-purple-600 text-white px-2 py-1 rounded"
>
{tech}
</span>
))}
</div>
<Link
href={project.projectUrl}
target="_blank"
rel="noopener noreferrer"
className="text-purple-400 hover:text-purple-600 transition-colors"
>
View Project
</Link>
{project.docsUrl && (
<Link
href={project.docsUrl}
target="_blank"
rel="noopener noreferrer"
className="text-purple-400 hover:text-purple-600 transition-colors ml-2"
>
View Docs
</Link>
)}
{project.dockerUrl && (
<div className="flex flex-col items-center">
<div className="flex flex-wrap justify-center gap-8 p-8 bg-[linear-gradient(to_right,#80808012_1px,transparent_1px),linear-gradient(to_bottom,#80808012_1px,transparent_1px)] bg-[size:24px_24px] shadow-lg rounded-2xl lg:p-12">
{currentProjects.map((project, index) => (
<div
key={index}
className="max-w-xs rounded-lg shadow-lg shadow-purple-500 border border-purple-500 p-1 overflow-hidden transform hover:scale-105 transition-transform duration-300"
>
<picture>
<img
className="w-full h-48 object-cover"
src={project.imageUrl}
alt={project.name}
/>
</picture>
<div className="p-6">
<h3 className="text-xl font-semibold mb-2">{project.name}</h3>
<p className="text-gray-400 mb-4">{project.description}</p>
<div className="flex flex-wrap gap-2 mb-4">
{project.techStack.map((tech, i) => (
<span
key={i}
className="text-sm bg-purple-600 text-white px-2 py-1 rounded"
>
{tech}
</span>
))}
</div>
<Link
href={project.dockerUrl}
href={project.projectUrl}
target="_blank"
rel="noopener noreferrer"
className="text-purple-400 hover:text-purple-600 transition-colors ml-2"
className="text-purple-400 hover:text-purple-600 transition-colors"
>
View Docker
View Project
</Link>
)}
{project.docsUrl && (
<Link
href={project.docsUrl}
target="_blank"
rel="noopener noreferrer"
className="text-purple-400 hover:text-purple-600 transition-colors ml-2"
>
View Docs
</Link>
)}
{project.dockerUrl && (
<Link
href={project.dockerUrl}
target="_blank"
rel="noopener noreferrer"
className="text-purple-400 hover:text-purple-600 transition-colors ml-2"
>
View Docker
</Link>
)}
</div>
</div>
</div>
))}
))}
</div>

{/* Pagination Controls */}
<div className="flex justify-between w-full max-w-md mt-6">
<button
onClick={handlePrevPage}
disabled={currentPage === 1}
className={`px-4 py-2 text-white rounded-lg ${
currentPage === 1
? "bg-gray-400 cursor-not-allowed"
: "bg-purple-500 hover:bg-purple-700"
}`}
>
Previous
</button>
<button
onClick={handleNextPage}
disabled={currentPage === totalPages}
className={`px-4 py-2 text-white rounded-lg ${
currentPage === totalPages
? "bg-gray-400 cursor-not-allowed"
: "bg-purple-500 hover:bg-purple-700"
}`}
>
Next
</button>
</div>
</div>
);
};
Expand Down
6 changes: 3 additions & 3 deletions src/components/ui/about/EducationDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ const EducationCard: React.FC<EducationCardProps> = ({ educationDetails }) => {
{educationDetails.map((detail, index) => (
<motion.div
key={index}
className="container mx-auto bg-gray-100 dark:bg-gray-800-600 shadow-lg rounded-lg mb-8"
className="container mx-auto w-full sm:w-4/6 lg:w-full flex flex-col bg-gray-100 dark:bg-gray-800-600 shadow-lg rounded-lg mb-8"
initial="hidden"
animate="visible"
variants={itemVariants}
Expand All @@ -74,7 +74,7 @@ const EducationCard: React.FC<EducationCardProps> = ({ educationDetails }) => {
{/* Card header */}
<div className="flex justify-between items-center mb-3">
{/* Title */}
<h2 className="text-2xl leading-snug font-extrabold text-purple-800 dark:text-purple-100 truncate mb-1 sm:mb-0">
<h2 className="text-xl leading-snug font-extrabold text-purple-800 dark:text-purple-100 truncate mb-1 sm:mb-0">
<AccessibilityIcon />
{detail.schoolName}
</h2>
Expand All @@ -87,7 +87,7 @@ const EducationCard: React.FC<EducationCardProps> = ({ educationDetails }) => {
</div>
</div>
{/* Course Name */}
<div className="flex items-center gap-2 mb-2 text-xl font-semibold text-gray-700 dark:text-gray-200">
<div className="flex items-center gap-2 mb-2 text-lg font-semibold text-gray-700 dark:text-gray-200">
<CheckCircledIcon className="w-6 h-6 text-green-600" />
{detail.courseName}
</div>
Expand Down
5 changes: 3 additions & 2 deletions src/components/ui/skills/SkillsShow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -29,7 +30,7 @@ const SkillsShow: React.FC = () => {
<div className="flex justify-center flex-wrap gap-3">
{skillsArray.map((skill: Skill, index) => (
<Tooltip key={index} text={skill.name}>
<a
<Link
href={skill.link}
target="_blank"
rel="noopener noreferrer"
Expand All @@ -42,7 +43,7 @@ const SkillsShow: React.FC = () => {
alt={skill.alt}
/>
</picture>
</a>
</Link>
</Tooltip>
))}
</div>
Expand Down
11 changes: 6 additions & 5 deletions src/contexts/data/educationDetails.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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
];
29 changes: 21 additions & 8 deletions src/contexts/skillsData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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/",
},
Expand All @@ -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: [
{
Expand Down Expand Up @@ -256,7 +275,7 @@ export const skills = {
link: "https://www.netlify.com/",
},
],
cli: [
Cli: [
{
name: "Git",
src: "https://skillicons.dev/icons?i=git",
Expand Down Expand Up @@ -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: [
{
Expand Down

0 comments on commit 265f120

Please sign in to comment.