Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-hook-form": "^7.53.0",
"react-icons": "^5.5.0",
"react-markdown": "^9.0.1",
"react-spinners": "^0.15.0",
"react-syntax-highlighter": "^15.5.0",
Expand Down
75 changes: 72 additions & 3 deletions src/app/about/page.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,78 @@
import { FaReact, FaGithub, FaMobileAlt, FaBlog } from "react-icons/fa";
import { HiMail } from "react-icons/hi";
import { SiNextdotjs, SiTypescript, SiJavascript, SiTailwindcss } from "react-icons/si";

export default function AboutPage() {
const techStack = [
{ icon: <FaReact className="text-4xl text-[#61DAFB]" />, label: "React" },
{ icon: <SiNextdotjs className="text-4xl text-black" />, label: "Next.js" },
{ icon: <SiJavascript className="text-4xl text-[#F7DF1E]" />, label: "JavaScript" },
{ icon: <SiTypescript className="text-4xl text-[#3178C6]" />, label: "TypeScript" },
{ icon: <FaMobileAlt className="text-4xl text-[#61DAFB]" />, label: "React Native" },
{ icon: <SiTailwindcss className="text-4xl text-[#06B6D4]" />, label: "Tailwind" },
];
Comment on lines +6 to +13
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

기술 스택 데이터 구조 구현 확인

기술 스택을 표현하기 위한 데이터 구조가 잘 구성되어 있습니다. 각 기술에 대한 아이콘과 레이블이 포함되어 있고, 아이콘에 적절한 스타일링이 적용되어 있습니다.

다만, React Native 항목에 React와 동일한 색상(#61DAFB)을 사용하고 FaMobileAlt 아이콘을 사용하는 것은 약간 혼란스러울 수 있습니다. React Native의 공식 색상이나 로고를 확인해보는 것이 좋겠습니다.


return (
<div className="mx-auto flex size-full flex-col justify-between py-10 tablet:w-tablet desktop:w-desktop">
<section className="flex flex-col items-center">
<span className="text-xl">프론트엔드 개발자 정민재 입니다!</span>
<div className="mx-auto size-full max-w-4xl px-5 py-12 md:py-20">
{/* 헤로 섹션 */}
<section className="mb-20 text-center">
<div className="relative inline-block">
{/* <div className="absolute -inset-1 rounded-lg bg-gradient-to-r from-blue-600 to-purple-600 opacity-20 blur-[14px]" /> */}
<h1 className="relative text-5xl font-bold tracking-tight md:text-6xl">
<span className="bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent">정민재</span>
</h1>
</div>
<p className="mt-4 text-2xl font-medium text-gray-800">사용자 경험을 완성하는 개발자</p>
<p className="mx-auto mt-6 max-w-2xl text-lg leading-relaxed text-gray-700">
<span className="mb-4 block font-medium text-brand-quaternary">{`"개발자가 불편해야 사용자가 편하다"`}</span>
프론트엔드의 시각적 표현과 기술적 완성도의 조화를 추구합니다. 사용자 피드백을 반영한 개선 경험을 바탕으로,
눈에 보이는 결과물에서 보람을 느끼는 개발자입니다.
</p>
</section>
Comment on lines +16 to 31
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

헤더 섹션 디자인 개선

이름과 소개 문구가 포함된 헤더 섹션이 시각적으로 잘 구성되어 있습니다. 그라데이션 텍스트 효과와 간결한 설명이 효과적입니다.

20번 라인에 주석 처리된 배경 효과 코드가 있습니다. 이 효과를 사용할 계획이 없다면 제거하는 것이 코드 가독성에 도움이 될 것입니다.

-          {/* <div className="absolute -inset-1 rounded-lg bg-gradient-to-r from-blue-600 to-purple-600 opacity-20 blur-[14px]" /> */}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<div className="mx-auto size-full max-w-4xl px-5 py-12 md:py-20">
{/* 헤로 섹션 */}
<section className="mb-20 text-center">
<div className="relative inline-block">
{/* <div className="absolute -inset-1 rounded-lg bg-gradient-to-r from-blue-600 to-purple-600 opacity-20 blur-[14px]" /> */}
<h1 className="relative text-5xl font-bold tracking-tight md:text-6xl">
<span className="bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent">정민재</span>
</h1>
</div>
<p className="mt-4 text-2xl font-medium text-gray-800">사용자 경험을 완성하는 개발자</p>
<p className="mx-auto mt-6 max-w-2xl text-lg leading-relaxed text-gray-700">
<span className="mb-4 block font-medium text-brand-quaternary">{`"개발자가 불편해야 사용자가 편하다"`}</span>
프론트엔드의 시각적 표현과 기술적 완성도의 조화를 추구합니다. 사용자 피드백을 반영한 개선 경험을 바탕으로,
눈에 보이는 결과물에서 보람을 느끼는 개발자입니다.
</p>
</section>
<div className="mx-auto size-full max-w-4xl px-5 py-12 md:py-20">
{/* 헤로 섹션 */}
<section className="mb-20 text-center">
<div className="relative inline-block">
<h1 className="relative text-5xl font-bold tracking-tight md:text-6xl">
<span className="bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent">정민재</span>
</h1>
</div>
<p className="mt-4 text-2xl font-medium text-gray-800">사용자 경험을 완성하는 개발자</p>
<p className="mx-auto mt-6 max-w-2xl text-lg leading-relaxed text-gray-700">
<span className="mb-4 block font-medium text-brand-quaternary">{`"개발자가 불편해야 사용자가 편하다"`}</span>
프론트엔드의 시각적 표현과 기술적 완성도의 조화를 추구합니다. 사용자 피드백을 반영한 개선 경험을 바탕으로,
눈에 보이는 결과물에서 보람을 느끼는 개발자입니다.
</p>
</section>


{/* 기술 스택 섹션 */}
<section className="mb-20">
<h2 className="mb-12 text-center text-3xl font-bold">Tech Stack</h2>
<div className="grid grid-cols-3 gap-6 md:grid-cols-6">
{techStack.map(({ icon, label }, index) => (
<div
key={index}
className="flex flex-col items-center justify-center space-y-2 rounded-xl bg-gray-200 p-4 transition-all duration-300 hover:bg-gray-300 hover:shadow-lg"
>
<div className="flex size-12 items-center justify-center">{icon}</div>
<span className="text-sm font-medium text-gray-800">{label}</span>
</div>
))}
</div>
</section>
Comment on lines +33 to +47
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

기술 스택 섹션 구현 확인

기술 스택을 그리드 레이아웃으로 표현한 것이 시각적으로 효과적입니다. 각 기술에 대한 아이콘과 레이블이 잘 표시되며, 호버 효과도 적절히 구현되어 있습니다.

map 함수에서 index를 key로 사용하고 있는데(39번 라인), React에서는 항목의 순서가 변경될 가능성이 있을 때 index를 key로 사용하는 것을 권장하지 않습니다. 이 경우에는 label과 같은 고유한 값을 key로 사용하는 것이 더 좋습니다.

-          {techStack.map(({ icon, label }, index) => (
-            <div
-              key={index}
+          {techStack.map(({ icon, label }) => (
+            <div
+              key={label}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{/* 기술 스택 섹션 */}
<section className="mb-20">
<h2 className="mb-12 text-center text-3xl font-bold">Tech Stack</h2>
<div className="grid grid-cols-3 gap-6 md:grid-cols-6">
{techStack.map(({ icon, label }, index) => (
<div
key={index}
className="flex flex-col items-center justify-center space-y-2 rounded-xl bg-gray-200 p-4 transition-all duration-300 hover:bg-gray-300 hover:shadow-lg"
>
<div className="flex size-12 items-center justify-center">{icon}</div>
<span className="text-sm font-medium text-gray-800">{label}</span>
</div>
))}
</div>
</section>
{/* 기술 스택 섹션 */}
<section className="mb-20">
<h2 className="mb-12 text-center text-3xl font-bold">Tech Stack</h2>
<div className="grid grid-cols-3 gap-6 md:grid-cols-6">
{techStack.map(({ icon, label }) => (
<div
key={label}
className="flex flex-col items-center justify-center space-y-2 rounded-xl bg-gray-200 p-4 transition-all duration-300 hover:bg-gray-300 hover:shadow-lg"
>
<div className="flex size-12 items-center justify-center">{icon}</div>
<span className="text-sm font-medium text-gray-800">{label}</span>
</div>
))}
</div>
</section>


{/* 연락처 섹션 */}
<div className="flex flex-col items-center space-y-6">
<h3 className="text-2xl font-bold">{"Let's Connect!"}</h3>
<div className="flex space-x-8">
{[
{
name: "GitHub",
icon: <FaGithub className="text-4xl hover:text-purple-600" />,
url: "https://github.com/wjsdncl",
},
{
name: "Email",
icon: <HiMail className="text-4xl hover:text-blue-600" />,
url: "mailto:wjsdncl2222@gmail.com",
},
{
name: "Blog",
icon: <FaBlog className="text-4xl hover:text-green-600" />,
url: "/",
},
].map((link) => (
<a key={link.name} href={link.url} className="transition-transform duration-300 hover:scale-110">
{link.icon}
</a>
))}
</div>
</div>
</div>
);
}