diff --git a/public/index.html b/public/index.html
index b3693d1..e7ec990 100644
--- a/public/index.html
+++ b/public/index.html
@@ -33,7 +33,7 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
-
CodeBucks | Awesome portfolio built with React JS
+ Tuhin Kairi
You need to enable JavaScript to run this app.
diff --git a/src/App.js b/src/App.js
index d1c1139..e4cc762 100644
--- a/src/App.js
+++ b/src/App.js
@@ -11,9 +11,23 @@ import BlogPage from "./components/BlogPage";
import WorkPage from "./components/WorkPage";
import MySkillsPage from "./components/MySkillsPage";
import SoundBar from "./subComponents/SoundBar";
+import { useEffect } from "react";
+import { userData } from "./config";
function App() {
const location = useLocation();
+ useEffect(()=>{
+ document.title = userData.meta_Title;
+ const metaDescription = document.querySelector('meta[name="description"]');
+ if (metaDescription) {
+ metaDescription.setAttribute("content", userData.meta_description);
+ } else {
+ const meta = document.createElement('meta');
+ meta.name = "description";
+ meta.content = userData.meta_description;
+ document.head.appendChild(meta);
+ }
+ })
return (
<>
diff --git a/src/assets/Images/profile-img.png b/src/assets/Images/profile-img.png
index 80c3d91..2d5a4df 100644
Binary files a/src/assets/Images/profile-img.png and b/src/assets/Images/profile-img.png differ
diff --git a/src/components/AboutPage.js b/src/components/AboutPage.js
index 674b1b6..3dbaab4 100644
--- a/src/components/AboutPage.js
+++ b/src/components/AboutPage.js
@@ -1,40 +1,39 @@
-import React from 'react'
-import styled, { keyframes, ThemeProvider } from 'styled-components'
-import {DarkTheme} from './Themes';
+import React from "react";
+import styled, { keyframes, ThemeProvider } from "styled-components";
+import { DarkTheme } from "./Themes";
-
-import LogoComponent from '../subComponents/LogoComponent';
-import SocialIcons from '../subComponents/SocialIcons';
-import PowerButton from '../subComponents/PowerButton';
-import ParticleComponent from '../subComponents/ParticleComponent';
-import BigTitle from '../subComponents/BigTitlte'
-import astronaut from '../assets/Images/spaceman.png'
+import LogoComponent from "../subComponents/LogoComponent";
+import SocialIcons from "../subComponents/SocialIcons";
+import PowerButton from "../subComponents/PowerButton";
+import ParticleComponent from "../subComponents/ParticleComponent";
+import BigTitle from "../subComponents/BigTitlte";
+import astronaut from "../assets/Images/spaceman.png";
const Box = styled.div`
-background-color: ${props => props.theme.body};
-width: 100vw;
-height:100vh;
-position: relative;
-overflow: hidden;
-`
+ background-color: ${(props) => props.theme.body};
+ width: 100vw;
+ height: 100vh;
+ position: relative;
+ overflow: hidden;
+`;
const float = keyframes`
0% { transform: translateY(-10px) }
50% { transform: translateY(15px) translateX(15px) }
100% { transform: translateY(-10px) }
-`
+`;
const Spaceman = styled.div`
-position: absolute;
-top: 10%;
-right: 5%;
-width: 20vw;
-animation: ${float} 4s ease infinite;
-img{
+ position: absolute;
+ top: 10%;
+ right: 5%;
+ width: 20vw;
+ animation: ${float} 4s ease infinite;
+ img {
width: 100%;
height: auto;
-}
-`
-const Main = styled.div`
+ }
+`;
+const Main = styled.div`
border: 2px solid ${(props) => props.theme.text};
color: ${(props) => props.theme.text};
padding: 2rem;
@@ -46,47 +45,46 @@ const Main = styled.div`
justify-content: center;
align-items: center;
font-size: calc(0.6rem + 1vw);
- backdrop-filter: blur(4px);
-
+ backdrop-filter: blur(4px);
+
position: absolute;
left: calc(5rem + 5vw);
top: 10rem;
- font-family: 'Ubuntu Mono', monospace;
+ font-family: "Ubuntu Mono", monospace;
font-style: italic;
-`
-
-
-
+`;
const AboutPage = () => {
- return (
-
-
-
-
-
-
-
+ return (
+
+
+
+
+
+
-
-
+
+
- I'm a front-end developer located in India. I love to create simple yet beautiful websites with great user experience.
-
-I'm interested in the whole frontend stack Like trying new things and building great projects. I'm an independent freelancer and blogger. I love to write blogs and read books.
-
-I believe everything is an Art when you put your consciousness in it. You can connect with me via social links.
+ I'm Tuhin Kairi a full-stack developer from West Bengal, India, specializing in
+ MERN/NEXT.js and AI-powered solutions. I love integrating cutting-edge
+ technologies to solve real-world problems.
+
+
+ From academic publishing platforms to intelligent recruitment systems,
+ I turn complex ideas into elegant, user-friendly experiences. I
+ believe in writing clean code that makes a difference.
+
+
+ Every line of code is an opportunity to create something meaningful.
+ Let's build something amazing together.
+
+
+ );
+};
-
-
-
-
-
- )
-}
-
-export default AboutPage
+export default AboutPage;
diff --git a/src/components/Intro.js b/src/components/Intro.js
index ecf25a8..4c12d11 100644
--- a/src/components/Intro.js
+++ b/src/components/Intro.js
@@ -2,6 +2,7 @@ import React from 'react'
import styled from 'styled-components'
import {motion} from 'framer-motion'
import Me from '../assets/Images/profile-img.png'
+import { userData } from '../config'
const Box = styled(motion.div)`
@@ -44,7 +45,7 @@ display: flex;
bottom: 0;
left: 50%;
transform: translate(-50%,0%);
- width: 100%;
+ max-height:450px;
height: auto;
}
`
@@ -80,8 +81,8 @@ const Intro = () => {
Hi,
- I'm CodeBucks.
- I design and Code simple yet beautiful websites.
+ I'm {userData.name}.
+ {userData.description}
diff --git a/src/components/Main.js b/src/components/Main.js
index bce3550..4667e43 100644
--- a/src/components/Main.js
+++ b/src/components/Main.js
@@ -1,5 +1,5 @@
import { motion } from 'framer-motion'
-import React, { useState } from 'react'
+import { useState } from 'react'
import { NavLink } from 'react-router-dom'
import styled, { keyframes } from 'styled-components'
import LogoComponent from '../subComponents/LogoComponent'
@@ -8,6 +8,7 @@ import SocialIcons from '../subComponents/SocialIcons'
import { YinYang } from './AllSvgs'
import Intro from './Intro'
;
+import { userData } from '../config'
const MainContainer = styled.div`
@@ -145,7 +146,7 @@ const Main = () => {
click here
-
+
props.theme.body};
-width: 100vw;
-height:100vh;
-position: relative;
-display: flex;
-justify-content: space-evenly;
-align-items: center;
-
-
-`
-
-const Main = styled.div`
-border: 2px solid ${props => props.theme.text};
-color: ${props => props.theme.text};
-background-color: ${props => props.theme.body};
-padding: 2rem;
-width: 30vw;
-height: 60vh;
-z-index:3;
-line-height: 1.5;
-cursor: pointer;
-
-font-family: 'Ubuntu Mono',monospace;
-display: flex;
-flex-direction: column;
-justify-content: space-between;
-
-&:hover{
- color: ${props => props.theme.body};
- background-color: ${props => props.theme.text};
-}
-`
-
-const Title = styled.h2`
-display: flex;
-justify-content: center;
-align-items: center;
-font-size: calc(1em + 1vw);
-
-${Main}:hover &{
- &>*{
- fill:${props => props.theme.body};
+ background-color: ${(props) => props.theme.body};
+ width: 100vw;
+ height: 100vh;
+ position: relative;
+ overflow: hidden;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+`;
+
+const GridContainer = styled.div`
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ grid-template-rows: 1fr 1fr;
+ gap: 3rem;
+ width: 80vw;
+ height: 70vh;
+ z-index: 3;
+`;
+
+const SkillCard = styled.div`
+ border: 2px solid ${(props) => props.theme.text};
+ color: ${(props) => props.theme.text};
+ background-color: ${(props) => props.theme.body};
+ padding: 2rem;
+ border-radius: 10px;
+ cursor: pointer;
+ font-family: "Ubuntu Mono", monospace;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ transition: all 0.3s ease;
+
+ &:hover {
+ color: ${(props) => props.theme.body};
+ background-color: ${(props) => props.theme.text};
+ transform: translateY(-10px);
+ box-shadow: 0 15px 30px rgba(0, 0, 0, 0.3);
+ }
+`;
+
+const CardTitle = styled.h2`
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: calc(1.2em + 0.5vw);
+ margin-bottom: 1.5rem;
+
+ ${SkillCard}:hover & {
+ & > * {
+ fill: ${(props) => props.theme.body};
}
-}
+ }
-&>*:first-child{
-margin-right: 1rem;
-}
-`
+ & > *:first-child {
+ margin-right: 1rem;
+ }
+`;
-const Description = styled.div`
-color: ${props => props.theme.text};
-font-size: calc(0.6em + 1vw);
-padding: 0.5rem 0;
+const CardContent = styled.div`
+ text-align: center;
+
+ .skills {
+ font-size: calc(0.9em + 0.2vw);
+ font-weight: bold;
+ margin-bottom: 1rem;
+ line-height: 1.4;
+ }
+
+ .impact {
+ font-size: calc(0.7em + 0.2vw);
+ opacity: 0.8;
+ font-style: italic;
+ line-height: 1.3;
+ }
+ ${SkillCard}:hover & {
+ color: ${(props) => props.theme.body};
+ }
+`;
-${Main}:hover &{
-
- color:${props => props.theme.body};
-
-}
+const Modal = styled.div`
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100vw;
+ height: 100vh;
+ background: rgba(0, 0, 0, 0.8);
+ display: ${(props) => (props.isOpen ? "flex" : "none")};
+ justify-content: center;
+ align-items: center;
+ z-index: 1000;
+`;
+
+const ModalContent = styled.div`
+ background-color: ${(props) => props.theme.body};
+ color: ${(props) => props.theme.text};
+ padding: 3rem;
+ border-radius: 15px;
+ max-width: 600px;
+ max-height: 80vh;
+ overflow-y: auto;
+ border: 3px solid ${(props) => props.theme.text};
+ font-family: "Ubuntu Mono", monospace;
+ position: relative;
+`;
+
+const CloseButton = styled.button`
+ position: absolute;
+ top: 1rem;
+ right: 1rem;
+ background: none;
+ border: 2px solid ${(props) => props.theme.text};
+ color: ${(props) => props.theme.text};
+ font-size: 1.5rem;
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ cursor: pointer;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-family: "Ubuntu Mono", monospace;
-strong{
+ &:hover {
+ background-color: ${(props) => props.theme.text};
+ color: ${(props) => props.theme.body};
+ }
+`;
+
+const ModalTitle = styled.h2`
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: calc(1.5em + 0.5vw);
+ margin-bottom: 2rem;
+ top:0;
+ & > *:first-child {
+ margin-right: 1rem;
+ }
+`;
+
+const ModalSection = styled.div`
+ margin-bottom: 2rem;
+
+ h3 {
+ font-size: calc(1em + 0.2vw);
margin-bottom: 1rem;
text-transform: uppercase;
-}
-ul,p{
- margin-left: 2rem;
-}
-`
+ border-bottom: 1px solid ${(props) => props.theme.text}33;
+ padding-bottom: 0.5rem;
+ }
+
+ ul {
+ list-style: none;
+ padding: 0;
+
+ li {
+ padding: 0.3rem 0;
+ padding-left: 1rem;
+ position: relative;
+
+ &:before {
+ content: "▶";
+ position: absolute;
+ left: 0;
+ color: ${(props) => props.theme.text};
+ font-size: 0.8em;
+ }
+ }
+ }
+
+ p {
+ line-height: 1.5;
+ margin: 0.5rem 0;
+ }
+`;
const MySkillsPage = () => {
- return (
-
-
-
-
-
-
-
-
-
- Designer
-
-
-I love to create design which speaks, Keep it clean, minimal and simple.
-
-
-I like to Design
-
-
- Web Design
-
-
- Mobile Apps
-
-
-
-
-Tools
-
-
-
-
-
-
- Frontend Developer
-
-
-I value business or brand for which i'm creating, thus i enjoy bringing new ideas to life.
-
-
-Skills
-
-Html, Css, Js, React, Redux, Sass, Bootstrap, Tailwind, Firebase etc.
-
-
-
-Tools
-
-VScode, Github, Codepen etc.
-
-
-
-
-
-
-
-
-
-
-
- )
-}
-
-export default MySkillsPage
+ const [selectedCard, setSelectedCard] = useState(null);
+
+ const skillsData = [
+ {
+ id: "fullstack",
+ title: "Full Stack Developer",
+ icon: ,
+ skills: "React.js • Next.js • Node.js",
+ impact: "Built 5+ production apps • 60% faster workflows",
+ details: {
+ description: "I build scalable, production-grade web applications that solve real-world problems. Passionate about creating efficient, user-centric solutions with modern technologies.",
+ sections: [
+ {
+ title: "Frontend Technologies",
+ items: [
+ "React.js, Next.js, Vue.js",
+ "TypeScript, JavaScript (ES6+)",
+ "Tailwind CSS, Bootstrap, Shadcn",
+ "Redux Toolkit, State Management"
+ ]
+ },
+ {
+ title: "Backend & APIs",
+ items: [
+ "Node.js, Express.js",
+ "REST APIs, GraphQL",
+ "JWT Authentication, OAuth",
+ "Server-side rendering"
+ ]
+ },
+ {
+ title: "Tools & Deployment",
+ items: [
+ "Git, GitHub, VSCode",
+ "Vercel, Firebase, Docker",
+ "Performance Optimization",
+ "Responsive Design"
+ ]
+ }
+ ]
+ }
+ },
+ {
+ id: "backend",
+ title: "Backend & Database",
+ icon: ,
+ skills: "Python • PostgreSQL • Docker",
+ impact: "35% faster APIs • High-traffic systems",
+ details: {
+ description: "I architect robust server-side solutions with optimized database designs, delivering APIs that are 35% faster and handle high-traffic loads efficiently.",
+ sections: [
+ {
+ title: "Backend Technologies",
+ items: [
+ "Node.js, Express.js",
+ "Flask, FastAPI, Laravel",
+ "Microservices Architecture",
+ "API Design & Documentation"
+ ]
+ },
+ {
+ title: "Databases & Storage",
+ items: [
+ "MongoDB, PostgreSQL, MySQL",
+ "Redis, ChromaDB",
+ "Database Optimization",
+ "Data Migration & Backup"
+ ]
+ },
+ {
+ title: "Infrastructure & DevOps",
+ items: [
+ "Docker, Kubernetes",
+ "CI/CD Pipelines",
+ "Firebase, Vercel",
+ "Performance Monitoring"
+ ]
+ }
+ ]
+ }
+ },
+ {
+ id: "aiml",
+ title: "AI/ML Engineer",
+ icon: ,
+ skills: "LangChain • OpenAI • TensorFlow",
+ impact: "28% improved accuracy • 99.47% precision",
+ details: {
+ description: "I integrate cutting-edge AI capabilities into web applications, creating intelligent systems with 28% improved accuracy and enhanced user experiences.",
+ sections: [
+ {
+ title: "AI/ML Frameworks",
+ items: [
+ "LangChain, Hugging Face",
+ "OpenAI APIs, Gemma",
+ "TensorFlow, Scikit-learn",
+ "RAG Systems, LLM Fine-tuning"
+ ]
+ },
+ {
+ title: "Data & Computer Vision",
+ items: [
+ "Computer Vision, OpenCV",
+ "Data Mining, Pandas, NumPy",
+ "Vector Databases (ChromaDB)",
+ "ML Model Deployment"
+ ]
+ },
+ {
+ title: "Specialized Applications",
+ items: [
+ "Chatbots & Virtual Assistants",
+ "Real-time AI Integration",
+ "Anomaly Detection Systems",
+ "Automated Workflow Solutions"
+ ]
+ }
+ ]
+ }
+ },
+ {
+ id: "realtime",
+ title: "Real-time & DevOps",
+ icon: ,
+ skills: "WebRTC • Socket.io • CI/CD",
+ impact: "Real-time systems • Scalable deployment",
+ details: {
+ description: "I build real-time communication systems and maintain efficient development workflows with modern tools and automated deployment pipelines.",
+ sections: [
+ {
+ title: "Real-time Technologies",
+ items: [
+ "Socket.io, WebRTC",
+ "Live Streaming, ZegoCloud",
+ "Real-time Chat, Video Calls",
+ "WebSockets, Event-driven Architecture"
+ ]
+ },
+ {
+ title: "DevOps & Automation",
+ items: [
+ "Git, GitHub Actions",
+ "Docker, CI/CD Pipelines",
+ "Testing & Quality Assurance",
+ "Performance Monitoring"
+ ]
+ },
+ {
+ title: "Development Tools",
+ items: [
+ "Selenium, Automated Testing",
+ "Code Quality & Reviews",
+ "Deployment Strategies",
+ "System Monitoring & Alerts"
+ ]
+ }
+ ]
+ }
+ }
+ ];
+
+ const handleCardClick = (card) => {
+ setSelectedCard(card);
+ };
+
+ const handleCloseModal = () => {
+ setSelectedCard(null);
+ };
+
+ const handleModalClick = (e) => {
+ if (e.target === e.currentTarget) {
+ handleCloseModal();
+ }
+ };
+
+ return (
+
+
+
+
+
+
+
+
+ {skillsData.map((skill) => (
+ handleCardClick(skill)}>
+
+ {skill.icon} {skill.title}
+
+
+ {skill.skills}
+ {skill.impact}
+
+
+ ))}
+
+
+
+ {selectedCard && (
+
+ ×
+
+ {selectedCard.icon} {selectedCard.title}
+
+
+ {selectedCard.details.description}
+
+ {selectedCard.details.sections.map((section, index) => (
+
+ {section.title}
+
+ {section.items.map((item, itemIndex) => (
+ {item}
+ ))}
+
+
+ ))}
+
+ )}
+
+
+
+
+
+ );
+};
+
+export default MySkillsPage;
\ No newline at end of file
diff --git a/src/components/WorkPage.js b/src/components/WorkPage.js
index 63435ae..2dde7ba 100644
--- a/src/components/WorkPage.js
+++ b/src/components/WorkPage.js
@@ -14,22 +14,29 @@ import BigTitlte from "../subComponents/BigTitlte";
const Box = styled.div`
background-color: ${(props) => props.theme.body};
-
- height: 400vh;
+ height: 220rem;
+ width: 100vw;
position: relative;
display: flex;
align-items: center;
+ padding-left: 8rem;
+ overflow: hidden;
`;
-const Main = styled(motion.ul)`
+const ScrollContainer = styled.div`
position: fixed;
top: 12rem;
- left: calc(10rem + 15vw);
- height: 40vh;
- display: flex;
+ left: 8rem;
+ width: 100%;
+ overflow-x: hidden;
+`;
+const Main = styled(motion.ul)`
+ min-width:100%;
+ display: flex;
color: white;
`;
+
const Rotate = styled.span`
display: block;
position: fixed;
@@ -61,7 +68,7 @@ const WorkPage = () => {
let element = ref.current;
const rotate = () => {
- element.style.transform = `translateX(${-window.pageYOffset}px)`;
+ element.style.transform = `translateX(${-(window.pageYOffset)}px)`;
return (yinyang.current.style.transform =
"rotate(" + -window.pageYOffset + "deg)");
@@ -80,11 +87,14 @@ const WorkPage = () => {
-
- {Work.map((d) => (
-
- ))}
-
+
+
+ {Work.map((d) => (
+
+ ))}
+ END
+
+
diff --git a/src/config.js b/src/config.js
new file mode 100644
index 0000000..eb1ff12
--- /dev/null
+++ b/src/config.js
@@ -0,0 +1,13 @@
+export const userData = {
+ "logo":"TK",
+ "name":"Tuhin Kairi",
+ "description":"I Design & Build Clean, Intelligent, and Scalable Digital Experiences",
+ "insta":"",
+ "mail":"tuhinkairii@gmail.com",
+ "fb":"",
+ "git":"",
+ "twiter":"",
+ "youtube":"",
+ "meta_description":"Welcome to my portfolio website showcasing my projects and skills.",
+ "meta_Title":"Tuhin Kairi | PortFolio"
+}
\ No newline at end of file
diff --git a/src/data/WorkData.js b/src/data/WorkData.js
index a0cadae..a99b8f8 100644
--- a/src/data/WorkData.js
+++ b/src/data/WorkData.js
@@ -3,61 +3,66 @@
export const Work = [
{
id:1,
- name:"Agency Landing Page",
- description:"It is build on top of the React JS, with styledComponents and GSAP for smooth scrolling animations.",
- tags:["react","gsap","styledComponents"],
-
- demo:"https://agency-website-eta.vercel.app/",
- github:"https://github.com/codebucks27/Agency-website"
+ name:"ijsreat.com - Research Publication Platform",
+ description:"Academic research platform with article archiving, peer review, and advanced search.",
+ tags:["react","node.js","mongodb","express"],
+ demo:"https://ijsreat.com/",
+ github:"https://github.com/tuhinkairii/ijsreat"
},
{
id:2,
- name:"Job listing website",
- description:"A Job listing website build in ReactJS. With searching and filtering functionalities.",
- tags:["react","sass"],
-
- demo:"http://react-job-listing-website.codebucks27.vercel.app/",
- github:"https://github.com/codebucks27/react-job-listing-website"
-
+ name:"AI-Powered End-to-End Hiring Platform",
+ description:"Recruitment platform with resume analysis, job matching, and automated screening.",
+ tags:["react","python","flask","ai/ml","nlp"],
+ demo:"https://ai-hiring-platform.vercel.app/",
+ github:"https://github.com/tuhinkairii/ai-hiring-platform"
},
{
id:3,
- name:"Dev.to Clone",
- description:"A clone of Dev.to build using ReactJS. With realtime fetching of articles from dev.to using API.",
- tags:["react","api","sass"],
-
- demo:"http://devto-clone-codebucks27.vercel.app/",
- github:"https://github.com/codebucks27/devto-clone"
+ name:"One Point Prep - AI EdTech System",
+ description:"AI-powered education platform with exam analysis and personalized learning paths.",
+ tags:["next.js","webrtc","hugging-face","rag","ai"],
+ demo:"https://onepointprep.vercel.app/",
+ github:"https://github.com/tuhinkairii/one-point-prep"
},
{
id:4,
- name:"Sidebar Menu",
- description:"A cool looking sidebar menu build using ReactJS and styledComponents.It has really smooth animations.",
- tags:["react","styledComponents","react-router"],
-
- demo:"https://react-sidebar.vercel.app/",
- github:"https://github.com/codebucks27/react-sidebar"
-
- },{
+ name:"Real-Time Chat Application",
+ description:"Chat app with video/audio calling, AI replies, and real-time messaging.",
+ tags:["next.js","convex","zegocloud","ai"],
+ demo:"https://whatsapp-mauve.vercel.app/",
+ github:"https://github.com/tuhinkairii/realtime-chat-app"
+ },
+ {
id:5,
- name:"Todo App(React + Redux)",
- description:"A todo app build using Redux-toolkit and framer-motion for smooth animations.",
- tags:["react","redux","framer-motion"],
-
- demo:"http://react-redux-todo-app-git-main-codebucks27.vercel.app/",
- github:"https://github.com/codebucks27/React-Redux-Todo-App"
-
+ name:"Medical Triage Bot",
+ description:"GPT-2 health assistant for medical screening and symptom analysis.",
+ tags:["react","flask","gpt-2","healthcare"],
+ demo:"https://medical-triage-bot.vercel.app/",
+ github:"https://github.com/tuhinkairii/medical-triage-bot"
},
{
id:6,
- name:"Responsive Navigation Menu",
- description:"A reponsive navbar menu component in ReactJS with react-router functionalities. Built from scratch.",
- tags:["react","react-router","css"],
-
- demo:"http://react-responsive-navbar-codebucks27.vercel.app/",
- github:"https://github.com/codebucks27/React-responsive-navbar"
-
+ name:"Vitals Detection System",
+ description:"ML-based health anomaly detection system with high precision.",
+ tags:["python","scikit-learn","flask","ml"],
+ demo:"https://vitals-detection.vercel.app/",
+ github:"https://github.com/tuhinkairii/vitals-detection"
},
-
-
-]
\ No newline at end of file
+ {
+ id:7,
+ name:"Elegance Landing Page",
+ description:"Luxury brand landing page with animations and immersive user experience.",
+ tags:["react","gsap","styled-components","luxury"],
+ demo:"https://landing-page-cloths.vercel.app/",
+ github:"https://github.com/tuhinkairii/elegance-landing-page"
+ },
+ {
+ id:8,
+ name:"E-commerce Platform",
+ description:"MERN store with payment gateway, JWT authentication, and Redux state management.",
+ tags:["react","node.js","mongodb","razorpay","redux"],
+ demo:"https://ecommerce-mern-platform.vercel.app/",
+ github:"https://github.com/tuhinkairii/ecommerce-platform"
+ }
+]
diff --git a/src/subComponents/Card.js b/src/subComponents/Card.js
index bbc24ae..19dc261 100644
--- a/src/subComponents/Card.js
+++ b/src/subComponents/Card.js
@@ -1,127 +1,116 @@
-import { motion } from 'framer-motion';
-import React from 'react'
-import { NavLink } from 'react-router-dom';
-import styled from 'styled-components';
-import { Github } from '../components/AllSvgs';
-
-
+import { motion } from "framer-motion";
+import styled from "styled-components";
+import { Github } from "../components/AllSvgs";
const Box = styled(motion.li)`
-width: 16rem;
-height: 40vh;
-background-color: ${props => props.theme.text};
-color:${props => props.theme.body};
-padding: 1.5rem 2rem;
-margin-right: 8rem;
-border-radius: 0 50px 0 50px;
-display: flex;
-flex-direction: column;
-justify-content: space-between;
-border: 1px solid ${props => props.theme.body};
-transition: all 0.2s ease;
-
-&:hover{
-background-color: ${props => props.theme.body};
-color:${props => props.theme.text};
-border: 1px solid ${props => props.theme.text};
-
-}
-`
+ min-width: 18rem;
+ height: 40vh;
+ background-color: ${(props) => props.theme.text};
+ color: ${(props) => props.theme.body};
+ padding: 1.5rem 2rem;
+ margin-right: 8rem;
+ border-radius: 0 50px 0 50px;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ border: 1px solid ${(props) => props.theme.body};
+ transition: all 0.2s ease;
+
+ &:hover {
+ background-color: ${(props) => props.theme.body};
+ color: ${(props) => props.theme.text};
+ border: 1px solid ${(props) => props.theme.text};
+ }
+`;
const Title = styled.h2`
-font-size: calc(1em + 0.5vw);
-`
+ font-size: calc(1em + 0.5vw);
+`;
const Description = styled.h2`
-font-size: calc(0.8em + 0.3vw);
-font-family: 'Karla',sans-serif;
-font-weight: 500;
-`
+ font-size: calc(0.8em + 0.3vw);
+ font-family: "Karla", sans-serif;
+ font-weight: 500;
+`;
const Tags = styled.div`
-border-top: 2px solid ${props =>props.theme.body};
-padding-top: 0.5rem;
-display:flex;
-flex-wrap:wrap;
-${Box}:hover &{
-border-top: 2px solid ${props =>props.theme.text};
-}
-`
+ border-top: 2px solid ${(props) => props.theme.body};
+ padding-top: 0.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ ${Box}:hover & {
+ border-top: 2px solid ${(props) => props.theme.text};
+ }
+`;
const Tag = styled.span`
-margin-right:1rem;
-font-size:calc(0.8em + 0.3vw);
-`
+ margin-right: 1rem;
+ font-size: calc(0.8em + 0.3vw);
+`;
const Footer = styled.footer`
-display: flex;
-justify-content: space-between;
-`
+ display: flex;
+ align-items:center;
+ justify-content: space-between;
+`;
const Link = styled.a`
-background-color: ${props =>props.theme.body};
-color: ${props =>props.theme.text};
-text-decoration: none;
-padding:0.5rem calc(2rem + 2vw);
-border-radius: 0 0 0 50px;
-font-size:calc(1em + 0.5vw);
-
-${Box}:hover &{
- background-color: ${props =>props.theme.text};
- color: ${props =>props.theme.body};
-
-}
-`
+ background-color: ${(props) => props.theme.body};
+ color: ${(props) => props.theme.text};
+ text-decoration: none;
+ padding: 0.5rem calc(2rem + 2vw);
+ border-radius: 0 0 0 50px;
+ font-size: calc(1em + 0.5vw);
+
+ ${Box}:hover & {
+ background-color: ${(props) => props.theme.text};
+ color: ${(props) => props.theme.body};
+ }
+`;
const Git = styled.a`
-color: inherit;
-text-decoration: none;
-${Box}:hover &{
- &>*{
- fill:${props =>props.theme.text};
+ color: inherit;
+ text-decoration: none;
+ ${Box}:hover & {
+ & > * {
+ fill: ${(props) => props.theme.text};
}
-}
-
-`
+ }
+`;
// Framer motion configuration
const Item = {
- hidden:{
- scale:0
+ hidden: {
+ scale: 0,
+ },
+ show: {
+ scale: 1,
+ transition: {
+ type: "spring",
+ duration: 0.5,
},
- show:{
- scale:1,
- transition: {
- type: 'spring',
- duration: 0.5
- }
- }
-}
+ },
+};
const Card = (props) => {
-
- const {id, name, description, tags, demo, github} = props.data;
-
- return (
-
- {name}
-
- {description}
-
-
- {
- tags.map((t,id) => {
- return #{t}
- })
- }
-
-
-
- )
-}
-
-export default Card
+ const { id, name, description, tags, demo, github } = props.data;
+
+ return (
+
+ {name}
+ {description}
+
+ {tags.map((t, id) => {
+ return #{t} ;
+ })}
+
+
+
+ );
+};
+
+export default Card;
diff --git a/src/subComponents/LogoComponent.js b/src/subComponents/LogoComponent.js
index 2a2ce3c..a687239 100644
--- a/src/subComponents/LogoComponent.js
+++ b/src/subComponents/LogoComponent.js
@@ -1,6 +1,7 @@
import React from 'react'
import styled from 'styled-components'
import { DarkTheme } from '../components/Themes'
+import { userData } from '../config'
@@ -19,7 +20,7 @@ z-index:3;
const LogoComponent = (props) => {
return (
- CB
+ {userData.logo}
)
}
diff --git a/src/subComponents/SocialIcons.js b/src/subComponents/SocialIcons.js
index 09bfede..d28c90c 100644
--- a/src/subComponents/SocialIcons.js
+++ b/src/subComponents/SocialIcons.js
@@ -4,6 +4,7 @@ import React from "react";
import styled from "styled-components";
import { Facebook, Github, Twitter, YouTube } from "../components/AllSvgs";
import { DarkTheme } from "../components/Themes";
+import { userData } from "../config";
const Icons = styled.div`
display: flex;
@@ -23,7 +24,7 @@ const Icons = styled.div`
const Line = styled(motion.span)`
width: 2px;
- height: 8rem;
+ height: 4rem;
background-color: ${(props) =>
props.color === "dark" ? DarkTheme.text : DarkTheme.body};
`;
@@ -39,7 +40,8 @@ const SocialIcons = (props) => {
{
{
{
{
height: 0,
}}
animate={{
- height: "8rem",
+ height: "4rem",
}}
transition={{
type: "spring",