diff --git a/apps/web/app/profile/page.tsx b/apps/web/app/profile/page.tsx
new file mode 100644
index 0000000..bd23060
--- /dev/null
+++ b/apps/web/app/profile/page.tsx
@@ -0,0 +1,43 @@
+import { Navbar } from "@/components/layout/navbar";
+import { UserInfoCard } from "@/components/profile/UserInfoCard";
+
+export default function ProfilePage() {
+ // Sample data - in a real app, this would come from API/auth
+ const userData = {
+ avatarUrl: "/images/avatar-placeholder.jpg", // This would be the user's actual avatar
+ name: "John Stellar",
+ role: "Designer",
+ joinedDate: "Joined March 2023",
+ hostedCount: 12,
+ attendedCount: 28,
+ instagramUrl: "https://instagram.com/johnstellar",
+ twitterUrl: "https://twitter.com/johnstellar",
+ mailUrl: "mailto:john@stellar.com",
+ linkedinUrl: "https://linkedin.com/in/johnstellar"
+ };
+
+ return (
+
+
+
+
+ {/* Two-column layout */}
+
+ {/* Left column - Profile Sidebar */}
+
+
+
+
+ {/* Right column - Event lists placeholder */}
+
+
+
Your Events
+ {/* Event lists — coming in follow-up issue */}
+
Event lists will be displayed here in a future update.
+
+
+
+
+
+ );
+}
diff --git a/apps/web/components/profile/UserInfoCard.tsx b/apps/web/components/profile/UserInfoCard.tsx
new file mode 100644
index 0000000..34ab6ca
--- /dev/null
+++ b/apps/web/components/profile/UserInfoCard.tsx
@@ -0,0 +1,236 @@
+import Image from "next/image";
+
+interface UserInfoCardProps {
+ avatarUrl: string;
+ name: string;
+ role: string;
+ joinedDate: string;
+ hostedCount: number;
+ attendedCount: number;
+ instagramUrl?: string;
+ twitterUrl?: string;
+ mailUrl?: string;
+ linkedinUrl?: string;
+}
+
+export function UserInfoCard({
+ avatarUrl,
+ name,
+ role,
+ joinedDate,
+ hostedCount,
+ attendedCount,
+ instagramUrl,
+ twitterUrl,
+ mailUrl,
+ linkedinUrl,
+}: UserInfoCardProps) {
+ return (
+
+ {/* Avatar */}
+
+
+ {/* Name and Role */}
+
+
+ {/* Joined Date */}
+
+
+ {/* Calendar icon placeholder - using SVG until icon is available */}
+
+
+
{joinedDate}
+
+
+ {/* Stats Row */}
+
+
+
{hostedCount}
+
Hosted
+
+
+
{attendedCount}
+
Attended
+
+
+
+ {/* Social Icons Row */}
+
+
+ );
+}
diff --git a/apps/web/public/images/avatar-placeholder.jpg b/apps/web/public/images/avatar-placeholder.jpg
new file mode 100644
index 0000000..e69de29