diff --git a/public/images/project1.jpg b/public/images/project1.jpg new file mode 100644 index 0000000..7778484 Binary files /dev/null and b/public/images/project1.jpg differ diff --git a/public/images/project2.jpg b/public/images/project2.jpg new file mode 100644 index 0000000..9ecbd45 Binary files /dev/null and b/public/images/project2.jpg differ diff --git a/public/images/project3.jpg b/public/images/project3.jpg new file mode 100644 index 0000000..0e59701 Binary files /dev/null and b/public/images/project3.jpg differ diff --git a/public/images/project4.jpg b/public/images/project4.jpg new file mode 100644 index 0000000..6e92c23 Binary files /dev/null and b/public/images/project4.jpg differ diff --git a/src/content_option.js b/src/content_option.js index 9689bbc..64c5d13 100644 --- a/src/content_option.js +++ b/src/content_option.js @@ -121,24 +121,24 @@ const services = [{ ]; const dataportfolio = [{ - img: "https://picsum.photos/400/300/?grayscale", + img: "/images/project1.jpg", description: "Built a React/TypeScript RAG AI chat application with n8n, achieving 95% query response accuracy", - link: "https://github.com/harivansh-afk/RAG-ui", + link: "https://rag-ui-six.vercel.app/", }, { - img: "https://picsum.photos/400/300/?grayscale", + img: "/images/project2.jpg", description: "Co-authored a research paper on cryptocurrency market predictability with a PHD student at CMU", - link: "https://github.com/harivansh-afk/CryptoCurrencyPredictionLSTM", + link: "https://docs.google.com/document/d/1i0IZgHYEERKVdRMBtCdK6jJGRoEoZUY7T43fuGKEDm8/edit?tab=t.0#heading=h.nazxqu6em5gk", }, { - img: "https://picsum.photos/400/300/?grayscale", + img: "/images/project3.jpg", description: "Built a full-stack habit tracker web app with React, TypeScript, and Supabase, boosting scalability by 25%", - link: "https://github.com/harivansh-afk/Habit-Tracker", + link: "https://habit-tracker-2-eta.vercel.app/", }, { - img: "https://picsum.photos/400/300/?grayscale", + img: "/images/project4.jpg", description: "Built a React/TypeScript app with Shadcn/UI and Tailwind, implementing lazy loading for 40% faster loads", - link: "https://github.com/harivansh-afk/ENGL-Final-Project", + link: "https://guidetoausten.netlify.app/", }, ]; diff --git a/src/header/index.js b/src/header/index.js index d0a58eb..e17c0f4 100644 --- a/src/header/index.js +++ b/src/header/index.js @@ -39,7 +39,7 @@ const Headermain = () => { Home
  • - Portfolio + Projects
  • About diff --git a/src/pages/home/index.js b/src/pages/home/index.js index 8008ab7..ebc5a44 100644 --- a/src/pages/home/index.js +++ b/src/pages/home/index.js @@ -69,7 +69,7 @@ export const Home = () => {

    {introdata.description}

    - +
    My Portfolio
    diff --git a/src/pages/portfolio/style.css b/src/pages/portfolio/style.css index d2c6ea6..55023a8 100644 --- a/src/pages/portfolio/style.css +++ b/src/pages/portfolio/style.css @@ -9,6 +9,390 @@ margin-top: 2rem; } +.project_item { + width: calc(33% - 2rem); + text-align: center; + margin: 0.5rem; + position: relative; + background: var(--card-bg, var(--background)); + padding: 0; + border: 1px solid var(--card-border, var(--muted)); + border-radius: 8px; + outline: 2px solid var(--card-outline-color, var(--primary)); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 0; + display: flex; + flex-direction: column; + align-items: stretch; + overflow: hidden; + aspect-ratio: 1; +} + +.project_item:hover { + transform: translateY(-2px); + border-color: var(--card-outline-hover, var(--primary)); +} + +@media (max-width: 768px) { + .project_item { + width: calc(50% - 2rem); + } +} + +@media (max-width: 576px) { + .project_item { + width: calc(100% - 2rem); + } +} + +.project_item img { + width: 100%; + height: 100%; + object-fit: cover; + aspect-ratio: 1; +} +.project_items_ho { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + gap: 2rem; + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; + margin-top: 2rem; +} + +.project_item { + width: calc(33% - 2rem); + text-align: center; + margin: 0.5rem; + position: relative; + background: var(--card-bg, var(--background)); + padding: 0; + border: 0.5px solid var(--card-border, var(--foreground)); + border-radius: 8px; + outline: 3px solid var(--card-outline-color, var(--primary)); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 0; + aspect-ratio: 1; + display: flex; + flex-direction: column; + align-items: stretch; + overflow: hidden; +} + +.project_item:hover { + transform: translateY(-2px); + border-color: var(--card-outline-hover, var(--primary)); +} + +@media (max-width: 768px) { + .project_item { + width: calc(50% - 2rem); + } +} + +@media (max-width: 576px) { + .project_item { + width: calc(100% - 2rem); + } +} + +.project_item img { + width: 100%; + height: 100%; + object-fit: cover; + aspect-ratio: 1; +} + +.project_item .content { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background: var(--overlay-bg, rgba(0, 0, 0, 0.7)); + backdrop-filter: blur(4px); + opacity: 0; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + padding: 1.5rem; + box-sizing: border-box; +} +>>>>>>>REPLACE > .project_items_ho { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + gap: 2rem; + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; + margin-top: 2rem; +} + +.project_item { + width: calc(33% - 2rem); + text-align: center; + margin: 0.5rem; + position: relative; + background: var(--card-bg, var(--background)); + padding: 0; + border: 0.5px solid var(--card-border, var(--foreground)); + border-radius: 8px; + outline: 3px solid var(--card-outline-color, var(--primary)); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 0; + display: flex; + flex-direction: column; + align-items: stretch; + overflow: hidden; + aspect-ratio: 1; +} +>>>>>>>REPLACE > .project_items_ho { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + gap: 2rem; + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; + margin-top: 2rem; +} + +.project_item { + width: calc(33% - 2rem); + text-align: center; + margin: 0.5rem; + position: relative; + background: var(--card-bg, var(--background)); + padding: 1rem; + border: 0.5px solid var(--card-border, var(--foreground)); + border-radius: 8px; + outline: 3px solid var(--card-outline-color, var(--primary)); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 0; + min-height: 300px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + overflow: hidden; +} + +.project_item:hover { + transform: translateY(-2px); + border-color: var(--card-outline-hover, var(--primary)); +} + +@media (max-width: 768px) { + .project_item { + width: calc(50% - 2rem); + } +} + +@media (max-width: 576px) { + .project_item { + width: calc(100% - 2rem); + } +} + +.project_item img { + width: 100%; + height: 100%; + object-fit: cover; + aspect-ratio: 1; +} +.project_items_ho { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + gap: 2rem; + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; + margin-top: 2rem; +} + +.project_item { + width: calc(33% - 2rem); + text-align: center; + margin: 0.5rem; + position: relative; + background: var(--card-bg, var(--background)); + padding: 1rem; + border: 0.5px solid var(--card-border, var(--foreground)); + border-radius: 8px; + outline: 3px solid var(--card-outline-color, var(--primary)); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 0; + min-height: 300px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + overflow: hidden; +} + +.project_item:hover { + transform: translateY(-2px); + border-color: var(--card-outline-hover, var(--primary)); +} + +@media (max-width: 768px) { + .project_item { + width: calc(50% - 2rem); + } +} + +@media (max-width: 576px) { + .project_item { + width: calc(100% - 2rem); + } +} + +.project_item img { + max-width: 100%; + max-height: 200px; + object-fit: cover; +} + +.project_item .content { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background: rgba(0, 0, 0, 0.7); + backdrop-filter: blur(4px); + opacity: 0; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + padding: 1.5rem; + box-sizing: border-box; +} + +.project_item:hover .content { + opacity: 1; +} + +.project_item .content p { + color: var(--overlay-text, white); + font-size: 0.875rem; + line-height: 1.25rem; + margin-bottom: 1rem; + text-align: center; + max-width: 90%; + background: var(--overlay-text-bg, rgba(0, 0, 0, 0.5)); + padding: 0.5rem; + border-radius: 4px; +} +>>>>>>>REPLACE > .project_items_ho { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + gap: 2rem; + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; + margin-top: 2rem; +} + +.project_item { + width: calc(33% - 2rem); + text-align: center; + margin: 0.5rem; + position: relative; + background: var(--card-bg, var(--background)); + padding: 0; + border: 0.5px solid var(--card-border, var(--foreground)); + border-radius: 8px; + outline: 3px solid var(--card-outline-color, var(--primary)); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 0; + display: flex; + flex-direction: column; + align-items: stretch; + overflow: hidden; + aspect-ratio: 1; +} +>>>>>>>REPLACE > .project_items_ho { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + gap: 2rem; + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; + margin-top: 2rem; +} + +.project_item { + width: calc(33% - 2rem); + text-align: center; + margin: 0.5rem; + position: relative; + background: var(--card-bg, var(--background)); + padding: 1rem; + border: 0.5px solid var(--card-border, var(--foreground)); + border-radius: 8px; + outline: 3px solid var(--card-outline-color, var(--primary)); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 0; + min-height: 300px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + overflow: hidden; +} + +.project_item:hover { + transform: translateY(-2px); + border-color: var(--card-outline-hover, var(--primary)); +} + +@media (max-width: 768px) { + .project_item { + width: calc(50% - 2rem); + } +} + +@media (max-width: 576px) { + .project_item { + width: calc(100% - 2rem); + } +} + +.project_item img { + width: 100%; + height: 100%; + object-fit: cover; + aspect-ratio: 1; +} +.project_items_ho { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + gap: 2rem; + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; + margin-top: 2rem; +} + .project_item { width: calc(33% - 2rem); text-align: center; @@ -76,29 +460,224 @@ } .project_item .content p { - color: var(--foreground); + color: white; font-size: 0.875rem; line-height: 1.25rem; margin-bottom: 1rem; text-align: center; max-width: 90%; + background: rgba(0, 0, 0, 0.5); + padding: 0.5rem; + border-radius: 4px; } .project_item .content a { - background: var(--button-bg, var(--background)); - border: 1px solid var(--button-border, var(--border)); + background: var(--overlay-button-bg, rgba(255, 255, 255, 0.9)); + border: 1px solid var(--overlay-button-border, rgba(255, 255, 255, 0.2)); border-radius: 6px; padding: 0.5rem 1rem; text-align: center; font-size: 0.875rem; font-weight: 500; - color: var(--foreground); + color: var(--overlay-button-text, black); text-decoration: none; transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); } .project_item .content a:hover { - background: var(--button-hover-bg, var(--muted)); + background: var(--overlay-button-hover-bg, rgba(255, 255, 255, 1)); + transform: translateY(-1px); + box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); +} +.project_items_ho { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + gap: 2rem; + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; + margin-top: 2rem; +} + +.project_item { + width: calc(33% - 2rem); + text-align: center; + margin: 0.5rem; + position: relative; + background: var(--card-bg, var(--background)); + padding: 0; + border: 0.5px solid var(--card-border, var(--foreground)); + border-radius: 8px; + outline: 3px solid var(--card-outline-color, var(--primary)); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 0; + display: flex; + flex-direction: column; + align-items: stretch; + overflow: hidden; + aspect-ratio: 1; +} +>>>>>>>REPLACE > .project_items_ho { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + gap: 2rem; + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; + margin-top: 2rem; +} + +.project_item { + width: calc(33% - 2rem); + text-align: center; + margin: 0.5rem; + position: relative; + background: var(--card-bg, var(--background)); + padding: 1rem; + border: 0.5px solid var(--card-border, var(--foreground)); + border-radius: 8px; + outline: 3px solid var(--card-outline-color, var(--primary)); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 0; + min-height: 300px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + overflow: hidden; +} + +.project_item:hover { + transform: translateY(-2px); + border-color: var(--card-outline-hover, var(--primary)); +} + +@media (max-width: 768px) { + .project_item { + width: calc(50% - 2rem); + } +} + +@media (max-width: 576px) { + .project_item { + width: calc(100% - 2rem); + } +} + +.project_item img { + width: 100%; + height: 100%; + object-fit: cover; + aspect-ratio: 1; +} +.project_items_ho { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + gap: 2rem; + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; + margin-top: 2rem; +} + +.project_item { + width: calc(33% - 2rem); + text-align: center; + margin: 0.5rem; + position: relative; + background: var(--card-bg, var(--background)); + padding: 1rem; + border: 0.5px solid var(--card-border, var(--foreground)); + border-radius: 8px; + outline: 3px solid var(--card-outline-color, var(--primary)); + box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 0; + min-height: 300px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + overflow: hidden; +} + +.project_item:hover { + transform: translateY(-2px); + border-color: var(--card-outline-hover, var(--primary)); +} + +@media (max-width: 768px) { + .project_item { + width: calc(50% - 2rem); + } +} + +@media (max-width: 576px) { + .project_item { + width: calc(100% - 2rem); + } +} + +.project_item img { + max-width: 100%; + max-height: 200px; + object-fit: cover; +} + +.project_item .content { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background: rgba(0, 0, 0, 0.85); + backdrop-filter: blur(4px); + opacity: 0; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + padding: 1.5rem; + box-sizing: border-box; +} + +.project_item:hover .content { + opacity: 1; +} + +.project_item .content p { + color: white; + font-size: 0.875rem; + line-height: 1.25rem; + margin-bottom: 1rem; + text-align: center; + max-width: 90%; + background: rgba(0, 0, 0, 0.5); + padding: 0.5rem; + border-radius: 4px; +} + +.project_item .content a { + background: rgba(255, 255, 255, 0.9); + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 6px; + padding: 0.5rem 1rem; + text-align: center; + font-size: 0.875rem; + font-weight: 500; + color: black; + text-decoration: none; + transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); +} + +.project_item .content a:hover { + background: rgba(255, 255, 255, 1); transform: translateY(-1px); box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); }