Skip to content

Commit dd63ddb

Browse files
authored
Merge pull request #45 from MillburnCrackDev/millburndev
millburn's profile page
2 parents e3b7b09 + 3101f10 commit dd63ddb

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

packages/nextjs/app/api/builders/profiles/route.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ const BUILDER_PROFILES = [
1010
"0x2E15bB8aDF3438F66A6F786679B0bBBBF02A75d5",
1111
"0x2d90C8bE0Df1BA58a66282bc4Ed03b330eBD7911",
1212
"0x3BFbE4E3dCC472E9B1bdFC0c177dE3459Cf769bf",
13+
"0x74370B567f5c65bef0428B9c78df5C691B632Cf7",
14+
"0x972d1be405DcFcD32DD95743934693B673e3F2B0",
15+
"0x9f535319FF3c093F0841427FBC68f483952017BD",
1316
"0xB24023434c3670E100068C925A87fE8F500d909a",
1417
"0xE00E720798803B8B83379720c42f7A9bE1cCd281",
1518
"0xb216270aFB9DfcD611AFAf785cEB38250863F2C9",
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import Image from "next/image";
2+
import { NextPage } from "next";
3+
import { FaEnvelope, FaGithub, FaMapMarkerAlt } from "react-icons/fa";
4+
5+
interface ProfileData {
6+
name: string;
7+
title: string;
8+
bio: string;
9+
avatar: string;
10+
location: string;
11+
email: string;
12+
social: {
13+
github: string;
14+
};
15+
}
16+
17+
const profile: ProfileData = {
18+
name: "Developer Millburn",
19+
title: "Smart Contract Developer",
20+
bio: "I'm a blockchain developer, versitle in writing smart contract using Solidity, Hardhat, Foundry, Remix, EthersJs.",
21+
avatar: "/millburnAvartar.jpg",
22+
location: "Kogi State, Nigeria",
23+
email: "millburncrack@gmail.com",
24+
social: {
25+
github: "https://github.com/MillburnCrackDev",
26+
},
27+
};
28+
const socialLinks = [
29+
{
30+
href: profile.social.github,
31+
icon: FaGithub,
32+
lightHoverColor: "hover:text-gray-900",
33+
darkHoverColor: "dark:hover:text-gray-200",
34+
},
35+
{
36+
href: `mailto:${profile.email}`,
37+
icon: FaEnvelope,
38+
lightHoverColor: "hover:text-red-500",
39+
darkHoverColor: "dark:hover:text-red-400",
40+
},
41+
];
42+
43+
const MillburnBuilderPage: NextPage = () => {
44+
return (
45+
<div className="min-h-screen flex items-center justify-center p-4">
46+
<div className="w-full max-w-md bg-white dark:bg-gray-800 shadow-lg rounded-xl overflow-hidden">
47+
<div className="px-6 py-8">
48+
<div className="flex flex-col items-center">
49+
{/* Avatar */}
50+
<Image
51+
src={profile.avatar}
52+
alt={profile.name}
53+
width={128}
54+
height={128}
55+
className="w-32 h-32 rounded-full mb-4 border-4 border-gray-200 dark:border-gray-700 object-cover"
56+
/>
57+
58+
<h1 className="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-1">{profile.name}</h1>
59+
<h2 className="text-lg text-gray-600 dark:text-gray-400 mb-3">{profile.title}</h2>
60+
61+
<div className="flex items-center text-gray-600 dark:text-gray-400 mb-4">
62+
<span className="inline-block mr-2 text-gray-600 dark:text-gray-400">
63+
<FaMapMarkerAlt size={16} />
64+
</span>
65+
<span className="text-sm">{profile.location}</span>
66+
</div>
67+
68+
<p className="text-gray-600 dark:text-gray-400 text-center mb-6 px-4 text-sm leading-relaxed">
69+
{profile.bio}
70+
</p>
71+
72+
<div className="flex space-x-6 mb-6">
73+
{socialLinks.map(({ href, icon: Icon, lightHoverColor, darkHoverColor }, index) => (
74+
<a
75+
key={index}
76+
href={href}
77+
target="_blank"
78+
rel="noopener noreferrer"
79+
className={`text-gray-600 dark:text-gray-400 ${lightHoverColor} ${darkHoverColor} transition-colors duration-300 ease-in-out`}
80+
>
81+
<span
82+
className={`inline-block text-gray-600 dark:text-gray-400 ${lightHoverColor} ${darkHoverColor}`}
83+
>
84+
<Icon size={24} />
85+
</span>
86+
</a>
87+
))}
88+
</div>
89+
</div>
90+
</div>
91+
</div>
92+
</div>
93+
);
94+
};
95+
96+
export default MillburnBuilderPage;
52.5 KB
Loading

0 commit comments

Comments
 (0)