[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-71223":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":16,"starSnapshotCount":16,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},71223,"project_3D_developer_portfolio","adrianhajdin\u002Fproject_3D_developer_portfolio","adrianhajdin","The most impressive websites in the world use 3D graphics and animations to bring their content to life. Learn how to build your own ThreeJS 3D Developer Portfolio today!","https:\u002F\u002Fjsmastery.pro",null,"JavaScript",7077,1681,38,101,0,6,8,15,18,80.18,false,"main",true,[26,27,28],"3d","reactjs","threejs","2026-06-12 04:00:59","\u003Cdiv align=\"center\">\n  \u003Cbr \u002F>\n    \u003Ca href=\"https:\u002F\u002Fyoutu.be\u002F0fYi8SGA20k?feature=shared\" target=\"_blank\">\n      \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fadrianhajdin\u002Fproject_3D_developer_portfolio\u002Fassets\u002F151519281\u002F4722160a-8e61-403f-a905-728feae1f7e6\" alt=\"Project Banner\">\n    \u003C\u002Fa>\n  \u003Cbr \u002F>\n\n  \u003Cdiv>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-React_JS-black?style=for-the-badge&logoColor=white&logo=react&color=61DAFB\" alt=\"react.js\" \u002F>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-Three_JS-black?style=for-the-badge&logoColor=white&logo=threedotjs&color=000000\" alt=\"three.js\" \u002F>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-Tailwind_CSS-black?style=for-the-badge&logoColor=white&logo=tailwindcss&color=06B6D4\" alt=\"tailwindcss\" \u002F>\n  \u003C\u002Fdiv>\n\n  \u003Ch3 align=\"center\">A 3D Developer Portfolio\u003C\u002Fh3>\n\n   \u003Cdiv align=\"center\">\n     Build this project step by step with our detailed tutorial on \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002F@javascriptmastery\u002Fvideos\" target=\"_blank\">\u003Cb>JavaScript Mastery\u003C\u002Fb>\u003C\u002Fa> YouTube. Join the JSM family!\n    \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n## 📋 \u003Ca name=\"table\">Table of Contents\u003C\u002Fa>\n\n1. 🤖 [Introduction](#introduction)\n2. ⚙️ [Tech Stack](#tech-stack)\n3. 🔋 [Features](#features)\n4. 🤸 [Quick Start](#quick-start)\n5. 🕸️ [Snippets](#snippets)\n6. 🔗 [Links](#links)\n7. 🚀 [More](#more)\n\n## 🚨 Tutorial\n\nThis repository contains the code corresponding to an in-depth tutorial available on our YouTube channel, \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002F@javascriptmastery\u002Fvideos\" target=\"_blank\">\u003Cb>JavaScript Mastery\u003C\u002Fb>\u003C\u002Fa>. \n\nIf you prefer visual learning, this is the perfect resource for you. Follow our tutorial to learn how to build projects like these step-by-step in a beginner-friendly manner!\n\n\u003Ca href=\"https:\u002F\u002Fyoutu.be\u002F0fYi8SGA20k?feature=shared\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fsujatagunale\u002FEasyRead\u002Fassets\u002F151519281\u002F1736fca5-a031-4854-8c09-bc110e3bc16d\" \u002F>\u003C\u002Fa>\n\n## \u003Ca name=\"introduction\">🤖 Introduction\u003C\u002Fa>\n\nBy developing this project, you will gain hands-on experience in crafting immersive web experiences, mastering 3D libraries, and implementing engaging animations. The combination of creativity and technical skills showcased in this project serves as an excellent learning opportunity for developers seeking to enhance their portfolio and captivate users with cutting-edge web design.\n\nIf you're getting started and need assistance or face any bugs, join our active Discord community with over 27k+ members. It's a place where people help each other out.\n\n\u003Ca href=\"https:\u002F\u002Fdiscord.com\u002Finvite\u002Fn6EdbFJ\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fsujatagunale\u002FEasyRead\u002Fassets\u002F151519281\u002F618f4872-1e10-42da-8213-1d69e486d02e\" \u002F>\u003C\u002Fa>\n\n## \u003Ca name=\"tech-stack\">⚙️ Tech Stack\u003C\u002Fa>\n\n- React.js\n- Three.js\n- React Three Fiber\n- React Three Drei\n- Email JS\n- Vite\n- Tailwind CSS\n\n## \u003Ca name=\"features\">🔋 Features\u003C\u002Fa>\n\n👉 **Customizable 3D Hero Section**: Includes a 3D desktop model easily customizable to suit specific needs.\n\n👉 **Interactive Experience and Work Sections**: Utilizes animations powered by framer motion for engaging user experience.\n\n👉 **3D Skills Section**: Showcases skills using 3D geometries through three.js and React Three fiber\n\n👉 **Animated Projects and Testimonials**: Features animated sections using framer motion for projects and client testimonials.\n\n👉 **Contact Section with 3D Earth Model**:Integrates a 3D earth model with email functionality powered by emailjs.\n\n👉 **3D Stars**: Generate stars progressively at random positions using Three.js for background display.\n\n👉 **Consistent Animations**: Implements cohesive animations throughout the website using framer motion.\n\n👉 **Responsive Design**: Ensures optimal display and functionality across all devices.\n\nand many more, including code architecture and reusability \n\n## \u003Ca name=\"quick-start\">🤸 Quick Start\u003C\u002Fa>\n\nFollow these steps to set up the project locally on your machine.\n\n**Prerequisites**\n\nMake sure you have the following installed on your machine:\n\n- [Git](https:\u002F\u002Fgit-scm.com\u002F)\n- [Node.js](https:\u002F\u002Fnodejs.org\u002Fen)\n- [npm](https:\u002F\u002Fwww.npmjs.com\u002F) (Node Package Manager)\n\n**Cloning the Repository**\n\n```bash\ngit clone git@github.com:adrianhajdin\u002Fproject_3D_developer_portfolio.git\ncd project_3D_developer_portfolio\n```\n\n**Installation**\n\nInstall the project dependencies using npm:\n\n```bash\nnpm install\n```\n\n**Set Up Environment Variables**\n\nCreate a new file named `.env` in the root of your project and add the following content:\n\n```env\nREACT_APP_EMAILJS_USERID=your_emailjs_user_id\nREACT_APP_EMAILJS_TEMPLATEID=your_emailjs_template_id\nREACT_APP_EMAILJS_RECEIVERID=your_emailjs_receiver_id\n```\n\nReplace the placeholder values with your actual EmailJS credentials. You can obtain these credentials by signing up on the [EmailJS website](https:\u002F\u002Fwww.emailjs.com\u002F).\n\n**Running the Project**\n\n```bash\nnpm run dev\n```\n\nOpen [http:\u002F\u002Flocalhost:5173](http:\u002F\u002Flocalhost:5173) in your browser to view the project.\n\n## \u003Ca name=\"snippets\">🕸️ Snippets\u003C\u002Fa>\n\n\u003Cdetails>\n\u003Csummary>\u003Ccode>constants.js\u003C\u002Fcode>\u003C\u002Fsummary>\n\n```javascript\nimport {\n  mobile,\n  backend,\n  creator,\n  web,\n  javascript,\n  typescript,\n  html,\n  css,\n  reactjs,\n  redux,\n  tailwind,\n  nodejs,\n  mongodb,\n  git,\n  figma,\n  docker,\n  meta,\n  starbucks,\n  tesla,\n  shopify,\n  carrent,\n  jobit,\n  tripguide,\n  threejs,\n} from \"..\u002Fassets\";\n\nexport const navLinks = [\n  {\n    id: \"about\",\n    title: \"About\",\n  },\n  {\n    id: \"work\",\n    title: \"Work\",\n  },\n  {\n    id: \"contact\",\n    title: \"Contact\",\n  },\n];\n\nconst services = [\n  {\n    title: \"Web Developer\",\n    icon: web,\n  },\n  {\n    title: \"React Native Developer\",\n    icon: mobile,\n  },\n  {\n    title: \"Backend Developer\",\n    icon: backend,\n  },\n  {\n    title: \"Content Creator\",\n    icon: creator,\n  },\n];\n\nconst technologies = [\n  {\n    name: \"HTML 5\",\n    icon: html,\n  },\n  {\n    name: \"CSS 3\",\n    icon: css,\n  },\n  {\n    name: \"JavaScript\",\n    icon: javascript,\n  },\n  {\n    name: \"TypeScript\",\n    icon: typescript,\n  },\n  {\n    name: \"React JS\",\n    icon: reactjs,\n  },\n  {\n    name: \"Redux Toolkit\",\n    icon: redux,\n  },\n  {\n    name: \"Tailwind CSS\",\n    icon: tailwind,\n  },\n  {\n    name: \"Node JS\",\n    icon: nodejs,\n  },\n  {\n    name: \"MongoDB\",\n    icon: mongodb,\n  },\n  {\n    name: \"Three JS\",\n    icon: threejs,\n  },\n  {\n    name: \"git\",\n    icon: git,\n  },\n  {\n    name: \"figma\",\n    icon: figma,\n  },\n  {\n    name: \"docker\",\n    icon: docker,\n  },\n];\n\nconst experiences = [\n  {\n    title: \"React.js Developer\",\n    company_name: \"Starbucks\",\n    icon: starbucks,\n    iconBg: \"#383E56\",\n    date: \"March 2020 - April 2021\",\n    points: [\n      \"Developing and maintaining web applications using React.js and other related technologies.\",\n      \"Collaborating with cross-functional teams including designers, product managers, and other developers to create high-quality products.\",\n      \"Implementing responsive design and ensuring cross-browser compatibility.\",\n      \"Participating in code reviews and providing constructive feedback to other developers.\",\n    ],\n  },\n  {\n    title: \"React Native Developer\",\n    company_name: \"Tesla\",\n    icon: tesla,\n    iconBg: \"#E6DEDD\",\n    date: \"Jan 2021 - Feb 2022\",\n    points: [\n      \"Developing and maintaining web applications using React.js and other related technologies.\",\n      \"Collaborating with cross-functional teams including designers, product managers, and other developers to create high-quality products.\",\n      \"Implementing responsive design and ensuring cross-browser compatibility.\",\n      \"Participating in code reviews and providing constructive feedback to other developers.\",\n    ],\n  },\n  {\n    title: \"Web Developer\",\n    company_name: \"Shopify\",\n    icon: shopify,\n    iconBg: \"#383E56\",\n    date: \"Jan 2022 - Jan 2023\",\n    points: [\n      \"Developing and maintaining web applications using React.js and other related technologies.\",\n      \"Collaborating with cross-functional teams including designers, product managers, and other developers to create high-quality products.\",\n      \"Implementing responsive design and ensuring cross-browser compatibility.\",\n      \"Participating in code reviews and providing constructive feedback to other developers.\",\n    ],\n  },\n  {\n    title: \"Full stack Developer\",\n    company_name: \"Meta\",\n    icon: meta,\n    iconBg: \"#E6DEDD\",\n    date: \"Jan 2023 - Present\",\n    points: [\n      \"Developing and maintaining web applications using React.js and other related technologies.\",\n      \"Collaborating with cross-functional teams including designers, product managers, and other developers to create high-quality products.\",\n      \"Implementing responsive design and ensuring cross-browser compatibility.\",\n      \"Participating in code reviews and providing constructive feedback to other developers.\",\n    ],\n  },\n];\n\nconst testimonials = [\n  {\n    testimonial:\n      \"I thought it was impossible to make a website as beautiful as our product, but Rick proved me wrong.\",\n    name: \"Sara Lee\",\n    designation: \"CFO\",\n    company: \"Acme Co\",\n    image: \"https:\u002F\u002Frandomuser.me\u002Fapi\u002Fportraits\u002Fwomen\u002F4.jpg\",\n  },\n  {\n    testimonial:\n      \"I've never met a web developer who truly cares about their clients' success like Rick does.\",\n    name: \"Chris Brown\",\n    designation: \"COO\",\n    company: \"DEF Corp\",\n    image: \"https:\u002F\u002Frandomuser.me\u002Fapi\u002Fportraits\u002Fmen\u002F5.jpg\",\n  },\n  {\n    testimonial:\n      \"After Rick optimized our website, our traffic increased by 50%. We can't thank them enough!\",\n    name: \"Lisa Wang\",\n    designation: \"CTO\",\n    company: \"456 Enterprises\",\n    image: \"https:\u002F\u002Frandomuser.me\u002Fapi\u002Fportraits\u002Fwomen\u002F6.jpg\",\n  },\n];\n\nconst projects = [\n  {\n    name: \"Car Rent\",\n    description:\n      \"Web-based platform that allows users to search, book, and manage car rentals from various providers, providing a convenient and efficient solution for transportation needs.\",\n    tags: [\n      {\n        name: \"react\",\n        color: \"blue-text-gradient\",\n      },\n      {\n        name: \"mongodb\",\n        color: \"green-text-gradient\",\n      },\n      {\n        name: \"tailwind\",\n        color: \"pink-text-gradient\",\n      },\n    ],\n    image: carrent,\n    source_code_link: \"https:\u002F\u002Fgithub.com\u002F\",\n  },\n  {\n    name: \"Job IT\",\n    description:\n      \"Web application that enables users to search for job openings, view estimated salary ranges for positions, and locate available jobs based on their current location.\",\n    tags: [\n      {\n        name: \"react\",\n        color: \"blue-text-gradient\",\n      },\n      {\n        name: \"restapi\",\n        color: \"green-text-gradient\",\n      },\n      {\n        name: \"scss\",\n        color: \"pink-text-gradient\",\n      },\n    ],\n    image: jobit,\n    source_code_link: \"https:\u002F\u002Fgithub.com\u002F\",\n  },\n  {\n    name: \"Trip Guide\",\n    description:\n      \"A comprehensive travel booking platform that allows users to book flights, hotels, and rental cars, and offers curated recommendations for popular destinations.\",\n    tags: [\n      {\n        name: \"nextjs\",\n        color: \"blue-text-gradient\",\n      },\n      {\n        name: \"supabase\",\n        color: \"green-text-gradient\",\n      },\n      {\n        name: \"css\",\n        color: \"pink-text-gradient\",\n      },\n    ],\n    image: tripguide,\n    source_code_link: \"https:\u002F\u002Fgithub.com\u002F\",\n  },\n];\n\nexport { services, technologies, experiences, testimonials, projects };\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Ccode>index.css\u003C\u002Fcode>\u003C\u002Fsummary>\n\n```css\n@import url(\"https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap\");\n\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n  font-family: \"Poppins\", sans-serif;\n  scroll-behavior: smooth;\n  color-scheme: dark;\n}\n\n.hash-span {\n  margin-top: -100px;\n  padding-bottom: 100px;\n  display: block;\n}\n\n.black-gradient {\n  background: #000000; \u002F* fallback for old browsers *\u002F\n  background: -webkit-linear-gradient(\n    to right,\n    #434343,\n    #000000\n  ); \u002F* Chrome 10-25, Safari 5.1-6 *\u002F\n  background: linear-gradient(\n    to right,\n    #434343,\n    #000000\n  ); \u002F* W3C, IE 10+\u002F Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ *\u002F\n}\n\n.violet-gradient {\n  background: #804dee;\n  background: linear-gradient(-90deg, #804dee 0%, rgba(60, 51, 80, 0) 100%);\n  background: -webkit-linear-gradient(\n    -90deg,\n    #804dee 0%,\n    rgba(60, 51, 80, 0) 100%\n  );\n}\n\n.green-pink-gradient {\n  background: \"#00cea8\";\n  background: linear-gradient(90.13deg, #00cea8 1.9%, #bf61ff 97.5%);\n  background: -webkit-linear-gradient(-90.13deg, #00cea8 1.9%, #bf61ff 97.5%);\n}\n\n.orange-text-gradient {\n  background: #f12711; \u002F* fallback for old browsers *\u002F\n  background: -webkit-linear-gradient(\n    to top,\n    #f12711,\n    #f5af19\n  ); \u002F* Chrome 10-25, Safari 5.1-6 *\u002F\n  background: linear-gradient(\n    to top,\n    #f12711,\n    #f5af19\n  ); \u002F* W3C, IE 10+\u002F Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ *\u002F\n  -webkit-background-clip: text;\n  -webkit-text-fill-color: transparent;\n}\n\n.green-text-gradient {\n  background: #11998e; \u002F* fallback for old browsers *\u002F\n  background: -webkit-linear-gradient(\n    to top,\n    #11998e,\n    #38ef7d\n  ); \u002F* Chrome 10-25, Safari 5.1-6 *\u002F\n  background: linear-gradient(\n    to top,\n    #11998e,\n    #38ef7d\n  ); \u002F* W3C, IE 10+\u002F Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ *\u002F\n  -webkit-background-clip: text;\n  -webkit-text-fill-color: transparent;\n}\n\n.blue-text-gradient {\n  \u002F* background: -webkit-linear-gradient(#eee, #333); *\u002F\n  background: #56ccf2; \u002F* fallback for old browsers *\u002F\n  background: -webkit-linear-gradient(\n    to top,\n    #2f80ed,\n    #56ccf2\n  ); \u002F* Chrome 10-25, Safari 5.1-6 *\u002F\n  background: linear-gradient(\n    to top,\n    #2f80ed,\n    #56ccf2\n  ); \u002F* W3C, IE 10+\u002F Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ *\u002F\n  -webkit-background-clip: text;\n  -webkit-text-fill-color: transparent;\n}\n\n.pink-text-gradient {\n  background: #ec008c; \u002F* fallback for old browsers *\u002F\n  background: -webkit-linear-gradient(\n    to top,\n    #ec008c,\n    #fc6767\n  ); \u002F* Chrome 10-25, Safari 5.1-6 *\u002F\n  background: linear-gradient(\n    to top,\n    #ec008c,\n    #fc6767\n  ); \u002F* W3C, IE 10+\u002F Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ *\u002F\n  -webkit-background-clip: text;\n  -webkit-text-fill-color: transparent;\n}\n\n\u002F* canvas- styles *\u002F\n.canvas-loader {\n  font-size: 10px;\n  width: 1em;\n  height: 1em;\n  border-radius: 50%;\n  position: relative;\n  text-indent: -9999em;\n  animation: mulShdSpin 1.1s infinite ease;\n  transform: translateZ(0);\n}\n\n@keyframes mulShdSpin {\n  0%,\n  100% {\n    box-shadow: 0em -2.6em 0em 0em #ffffff,\n      1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2),\n      2.5em 0em 0 0em rgba(255, 255, 255, 0.2),\n      1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2),\n      0em 2.5em 0 0em rgba(255, 255, 255, 0.2),\n      -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2),\n      -2.6em 0em 0 0em rgba(255, 255, 255, 0.5),\n      -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7);\n  }\n  12.5% {\n    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.7),\n      1.8em -1.8em 0 0em #ffffff, 2.5em 0em 0 0em rgba(255, 255, 255, 0.2),\n      1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2),\n      0em 2.5em 0 0em rgba(255, 255, 255, 0.2),\n      -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2),\n      -2.6em 0em 0 0em rgba(255, 255, 255, 0.2),\n      -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5);\n  }\n  25% {\n    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.5),\n      1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7), 2.5em 0em 0 0em #ffffff,\n      1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2),\n      0em 2.5em 0 0em rgba(255, 255, 255, 0.2),\n      -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2),\n      -2.6em 0em 0 0em rgba(255, 255, 255, 0.2),\n      -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);\n  }\n  37.5% {\n    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2),\n      1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5),\n      2.5em 0em 0 0em rgba(255, 255, 255, 0.7), 1.75em 1.75em 0 0em #ffffff,\n      0em 2.5em 0 0em rgba(255, 255, 255, 0.2),\n      -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2),\n      -2.6em 0em 0 0em rgba(255, 255, 255, 0.2),\n      -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);\n  }\n  50% {\n    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2),\n      1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2),\n      2.5em 0em 0 0em rgba(255, 255, 255, 0.5),\n      1.75em 1.75em 0 0em rgba(255, 255, 255, 0.7), 0em 2.5em 0 0em #ffffff,\n      -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2),\n      -2.6em 0em 0 0em rgba(255, 255, 255, 0.2),\n      -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);\n  }\n  62.5% {\n    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2),\n      1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2),\n      2.5em 0em 0 0em rgba(255, 255, 255, 0.2),\n      1.75em 1.75em 0 0em rgba(255, 255, 255, 0.5),\n      0em 2.5em 0 0em rgba(255, 255, 255, 0.7), -1.8em 1.8em 0 0em #ffffff,\n      -2.6em 0em 0 0em rgba(255, 255, 255, 0.2),\n      -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);\n  }\n  75% {\n    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2),\n      1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2),\n      2.5em 0em 0 0em rgba(255, 255, 255, 0.2),\n      1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2),\n      0em 2.5em 0 0em rgba(255, 255, 255, 0.5),\n      -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.7), -2.6em 0em 0 0em #ffffff,\n      -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);\n  }\n  87.5% {\n    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2),\n      1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2),\n      2.5em 0em 0 0em rgba(255, 255, 255, 0.2),\n      1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2),\n      0em 2.5em 0 0em rgba(255, 255, 255, 0.2),\n      -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.5),\n      -2.6em 0em 0 0em rgba(255, 255, 255, 0.7), -1.8em -1.8em 0 0em #ffffff;\n  }\n}\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Ccode>Motion.js\u003C\u002Fcode>\u003C\u002Fsummary>\n\n```javascript\nexport const textVariant = (delay) => {\n  return {\n    hidden: {\n      y: -50,\n      opacity: 0,\n    },\n    show: {\n      y: 0,\n      opacity: 1,\n      transition: {\n        type: \"spring\",\n        duration: 1.25,\n        delay: delay,\n      },\n    },\n  };\n};\n\nexport const fadeIn = (direction, type, delay, duration) => {\n  return {\n    hidden: {\n      x: direction === \"left\" ? 100 : direction === \"right\" ? -100 : 0,\n      y: direction === \"up\" ? 100 : direction === \"down\" ? -100 : 0,\n      opacity: 0,\n    },\n    show: {\n      x: 0,\n      y: 0,\n      opacity: 1,\n      transition: {\n        type: type,\n        delay: delay,\n        duration: duration,\n        ease: \"easeOut\",\n      },\n    },\n  };\n};\n\nexport const zoomIn = (delay, duration) => {\n  return {\n    hidden: {\n      scale: 0,\n      opacity: 0,\n    },\n    show: {\n      scale: 1,\n      opacity: 1,\n      transition: {\n        type: \"tween\",\n        delay: delay,\n        duration: duration,\n        ease: \"easeOut\",\n      },\n    },\n  };\n};\n\nexport const slideIn = (direction, type, delay, duration) => {\n  return {\n    hidden: {\n      x: direction === \"left\" ? \"-100%\" : direction === \"right\" ? \"100%\" : 0,\n      y: direction === \"up\" ? \"100%\" : direction === \"down\" ? \"100%\" : 0,\n    },\n    show: {\n      x: 0,\n      y: 0,\n      transition: {\n        type: type,\n        delay: delay,\n        duration: duration,\n        ease: \"easeOut\",\n      },\n    },\n  };\n};\n\nexport const staggerContainer = (staggerChildren, delayChildren) => {\n  return {\n    hidden: {},\n    show: {\n      transition: {\n        staggerChildren: staggerChildren,\n        delayChildren: delayChildren || 0,\n      },\n    },\n  };\n};\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Ccode>styles.js\u003C\u002Fcode>\u003C\u002Fsummary>\n\n```javascript\nconst styles = {\n  paddingX: \"sm:px-16 px-6\",\n  paddingY: \"sm:py-16 py-6\",\n  padding: \"sm:px-16 px-6 sm:py-16 py-10\",\n\n  heroHeadText:\n    \"font-black text-white lg:text-[80px] sm:text-[60px] xs:text-[50px] text-[40px] lg:leading-[98px] mt-2\",\n  heroSubText:\n    \"text-[#dfd9ff] font-medium lg:text-[30px] sm:text-[26px] xs:text-[20px] text-[16px] lg:leading-[40px]\",\n\n  sectionHeadText:\n    \"text-white font-black md:text-[60px] sm:text-[50px] xs:text-[40px] text-[30px]\",\n  sectionSubText:\n    \"sm:text-[18px] text-[14px] text-secondary uppercase tracking-wider\",\n};\n\nexport { styles };\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Ccode>tailwind.config.cjs\u003C\u002Fcode>\u003C\u002Fsummary>\n\n```javascript\n\u002F** @type {import('tailwindcss').Config} *\u002F\nmodule.exports = {\n  content: [\".\u002Fsrc\u002F**\u002F*.{js,jsx}\"],\n  mode: \"jit\",\n  theme: {\n    extend: {\n      colors: {\n        primary: \"#050816\",\n        secondary: \"#aaa6c3\",\n        tertiary: \"#151030\",\n        \"black-100\": \"#100d25\",\n        \"black-200\": \"#090325\",\n        \"white-100\": \"#f3f3f3\",\n      },\n      boxShadow: {\n        card: \"0px 35px 120px -15px #211e35\",\n      },\n      screens: {\n        xs: \"450px\",\n      },\n      backgroundImage: {\n        \"hero-pattern\": \"url('\u002Fsrc\u002Fassets\u002Fherobg.png')\",\n      },\n    },\n  },\n  plugins: [],\n};\n```\n\n\u003C\u002Fdetails>\n\n## \u003Ca name=\"links\">🔗 Links\u003C\u002Fa>\n\nModels and Assets used in the project can be found [here](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1KVU8iaH0E_JFtShNiR3BgCSA3pawXY4Z)\n\n## \u003Ca name=\"more\">🚀 More\u003C\u002Fa>\n\n**Advance your skills with Next.js Pro Course**\n\nEnjoyed creating this project? Dive deeper into our PRO courses for a richer learning experience. They're packed with detailed explanations, cool features, and exercises to boost your skills. Give it a go!\n\n\u003Ca href=\"https:\u002F\u002Fwww.jsmastery.pro\u002Fultimate-next-course\" target=\"_blank\">\n\u003Cimg src=\"https:\u002F\u002Fi.ibb.co\u002F804sPK6\u002FImage-720.png\" alt=\"Project Banner\">\n\u003C\u002Fa>\n","该项目是一个3D开发者个人作品集网站，使用Three.js和React.js构建。核心功能包括可定制的3D英雄区域、互动体验及工作展示部分，通过动画和3D图形增强视觉效果。技术栈涵盖了React Three Fiber、Drei库、Tailwind CSS等现代前端工具。适合希望提升个人品牌展示水平、吸引潜在雇主或客户的Web开发者，以及对3D Web开发感兴趣的学习者。",2,"2026-06-11 03:36:40","high_star"]