Spaces:
Running
Running
Naveedtechlab commited on
Commit ·
6e47509
1
Parent(s): 66b696e
feat: mobile-friendly, dark/light mode, updated HF live links
Browse files- app/page.tsx +239 -320
app/page.tsx
CHANGED
|
@@ -6,41 +6,13 @@ import { useState, useEffect } from "react";
|
|
| 6 |
/* ─── DATA ─────────────────────────────────────────────────── */
|
| 7 |
|
| 8 |
const skills = [
|
| 9 |
-
{
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
},
|
| 14 |
-
{
|
| 15 |
-
|
| 16 |
-
color: "from-violet-500 to-purple-400",
|
| 17 |
-
tags: ["Python", "FastAPI", "Node.js", "REST APIs", "Authentication"],
|
| 18 |
-
},
|
| 19 |
-
{
|
| 20 |
-
label: "AI & Agents",
|
| 21 |
-
color: "from-amber-500 to-orange-400",
|
| 22 |
-
tags: ["OpenAI API", "Gemini API", "LangChain", "Claude Code", "Agents SDK", "MCP"],
|
| 23 |
-
},
|
| 24 |
-
{
|
| 25 |
-
label: "Automation",
|
| 26 |
-
color: "from-green-500 to-emerald-400",
|
| 27 |
-
tags: ["Gmail API", "WhatsApp/Twilio", "Webhooks", "Watchers", "BG Workers"],
|
| 28 |
-
},
|
| 29 |
-
{
|
| 30 |
-
label: "Cloud & DevOps",
|
| 31 |
-
color: "from-sky-500 to-blue-400",
|
| 32 |
-
tags: ["Docker", "Kubernetes", "Kafka", "Dapr", "CI/CD", "GitHub"],
|
| 33 |
-
},
|
| 34 |
-
{
|
| 35 |
-
label: "Database",
|
| 36 |
-
color: "from-rose-500 to-pink-400",
|
| 37 |
-
tags: ["MongoDB", "PostgreSQL", "Sanity CMS"],
|
| 38 |
-
},
|
| 39 |
-
{
|
| 40 |
-
label: "Architecture",
|
| 41 |
-
color: "from-teal-500 to-cyan-400",
|
| 42 |
-
tags: ["Spec-Driven Dev", "Event-Driven", "Agent Skills Design"],
|
| 43 |
-
},
|
| 44 |
];
|
| 45 |
|
| 46 |
const projects = [
|
|
@@ -49,142 +21,137 @@ const projects = [
|
|
| 49 |
subtitle: "Digital FTE · Hackathon",
|
| 50 |
desc: "Autonomous AI employee with Gmail/WhatsApp automation, Obsidian memory system, and MCP tools — running 24/7 without human intervention.",
|
| 51 |
tags: ["OpenAI SDK", "MCP", "Gmail API", "WhatsApp", "Python"],
|
| 52 |
-
icon: "🤖",
|
| 53 |
-
accent: "from-amber-500 to-orange-500",
|
| 54 |
-
live: null,
|
| 55 |
},
|
| 56 |
{
|
| 57 |
title: "CRM Digital FTE",
|
| 58 |
subtitle: "CRM Agent · Hugging Face",
|
| 59 |
-
desc: "Multi-channel customer support agent handling Gmail, WhatsApp, and Web forms with a PostgreSQL ticket system and FastAPI backend.
|
| 60 |
tags: ["FastAPI", "PostgreSQL", "LangChain", "Twilio", "Python"],
|
| 61 |
-
icon: "🎯",
|
| 62 |
-
|
| 63 |
-
live: "https://huggingface.co/spaces/Naveedtechlab/crm-digital-fte",
|
| 64 |
},
|
| 65 |
{
|
| 66 |
title: "Course Companion FTE",
|
| 67 |
subtitle: "AI Tutor · Hugging Face",
|
| 68 |
desc: "AI-powered tutoring assistant with deterministic backend logic, skills-based agent architecture, and an interactive learning interface.",
|
| 69 |
tags: ["Python", "OpenAI API", "FastAPI", "Streamlit"],
|
| 70 |
-
icon: "📚",
|
| 71 |
-
|
| 72 |
-
live: "https://huggingface.co/spaces/Naveedtechlab/course-companion-fte",
|
| 73 |
},
|
| 74 |
{
|
| 75 |
title: "Todo App Phase 5",
|
| 76 |
subtitle: "Full Stack · Hugging Face",
|
| 77 |
-
desc: "Spec-driven todo
|
| 78 |
tags: ["Next.js", "FastAPI", "OpenAI SDK", "Docker"],
|
| 79 |
-
icon: "✅",
|
| 80 |
-
|
| 81 |
-
live: "https://huggingface.co/spaces/Naveedtechlab/todo-app-phase5",
|
| 82 |
},
|
| 83 |
{
|
| 84 |
title: "LearnFlow",
|
| 85 |
subtitle: "Learning Platform · Hugging Face",
|
| 86 |
-
desc: "Interactive learning flow platform with
|
| 87 |
tags: ["Python", "AI", "Streamlit", "OpenAI API"],
|
| 88 |
-
icon: "🎓",
|
| 89 |
-
|
| 90 |
-
live: "https://huggingface.co/spaces/Naveedtechlab/learnflow",
|
| 91 |
},
|
| 92 |
{
|
| 93 |
title: "AI Native Textbook",
|
| 94 |
subtitle: "EdTech · Vercel",
|
| 95 |
-
desc: "AI-native digital textbook
|
| 96 |
tags: ["Next.js", "OpenAI API", "Vercel", "TypeScript"],
|
| 97 |
-
icon: "📖",
|
| 98 |
-
accent: "from-indigo-500 to-violet-500",
|
| 99 |
live: "https://ai-native-textbook1.vercel.app/",
|
| 100 |
},
|
| 101 |
{
|
| 102 |
title: "E-Commerce Store",
|
| 103 |
subtitle: "Freelance · Vercel",
|
| 104 |
-
desc: "Modern full-featured e-commerce web
|
| 105 |
tags: ["Next.js", "React", "Tailwind CSS", "Vercel"],
|
| 106 |
-
icon: "🛍️",
|
| 107 |
-
accent: "from-rose-500 to-pink-500",
|
| 108 |
live: "https://e-comm-naveed.vercel.app/",
|
| 109 |
},
|
| 110 |
{
|
| 111 |
title: "Library Manager",
|
| 112 |
subtitle: "Utility App · Streamlit",
|
| 113 |
-
desc: "
|
| 114 |
tags: ["Python", "Streamlit", "Pandas"],
|
| 115 |
-
icon: "📕",
|
| 116 |
-
accent: "from-orange-500 to-amber-500",
|
| 117 |
live: "https://naveed247365-library-manager-library-manager-iykdx8.streamlit.app/",
|
| 118 |
},
|
| 119 |
{
|
| 120 |
title: "Number Guessing Game",
|
| 121 |
subtitle: "Fun App · Streamlit",
|
| 122 |
-
desc: "Interactive browser-based number guessing game with difficulty levels
|
| 123 |
tags: ["Python", "Streamlit", "Game Logic"],
|
| 124 |
-
icon: "🎮",
|
| 125 |
-
accent: "from-teal-500 to-cyan-500",
|
| 126 |
live: "https://naveed247365-number-guessing-game-guessing-game-kfloll.streamlit.app/",
|
| 127 |
},
|
| 128 |
{
|
| 129 |
title: "Password Strength Meter",
|
| 130 |
subtitle: "Security Tool · Streamlit",
|
| 131 |
-
desc: "Real-time password strength analyzer with visual feedback, entropy scoring, and security suggestions
|
| 132 |
tags: ["Python", "Streamlit", "Security", "GUI"],
|
| 133 |
-
icon: "🔐",
|
| 134 |
-
accent: "from-red-500 to-rose-500",
|
| 135 |
live: "https://password-strength-meter-with-a-gui.streamlit.app/",
|
| 136 |
},
|
| 137 |
{
|
| 138 |
title: "Secure Data Vault",
|
| 139 |
subtitle: "Encryption App · Streamlit",
|
| 140 |
-
desc: "End-to-end data encryption system
|
| 141 |
tags: ["Python", "Cryptography", "Streamlit", "Security"],
|
| 142 |
-
icon: "🔒",
|
| 143 |
-
accent: "from-slate-500 to-gray-600",
|
| 144 |
live: "https://naveed247365-secure-data-encryption-system--secure-vault-sbgxir.streamlit.app/",
|
| 145 |
},
|
| 146 |
{
|
| 147 |
title: "Unit Converter",
|
| 148 |
subtitle: "Utility Tool · Streamlit",
|
| 149 |
-
desc: "Comprehensive unit conversion tool supporting length, weight, temperature, speed, and more — with a
|
| 150 |
tags: ["Python", "Streamlit", "Math"],
|
| 151 |
-
icon: "📐",
|
| 152 |
-
accent: "from-lime-500 to-green-500",
|
| 153 |
live: "https://naveed247365-unit-converter-unit-converter-cycms9.streamlit.app/",
|
| 154 |
},
|
| 155 |
{
|
| 156 |
title: "Streamlit Web App",
|
| 157 |
subtitle: "Web App · Streamlit",
|
| 158 |
-
desc: "
|
| 159 |
tags: ["Python", "Streamlit", "Data Viz"],
|
| 160 |
-
icon: "🌐",
|
| 161 |
-
accent: "from-fuchsia-500 to-pink-500",
|
| 162 |
live: "https://naveed247365-web-app-with-streamlit-app-hnkir1.streamlit.app/",
|
| 163 |
},
|
| 164 |
{
|
| 165 |
-
title: "
|
| 166 |
subtitle: "Freelance · Client Projects",
|
| 167 |
-
desc: "Shopify stores, custom dashboards, CMS-based websites, and
|
| 168 |
tags: ["Shopify", "React", "Sanity CMS", "Node.js"],
|
| 169 |
-
icon: "💼",
|
| 170 |
-
accent: "from-yellow-500 to-orange-400",
|
| 171 |
-
live: null,
|
| 172 |
},
|
| 173 |
];
|
| 174 |
|
| 175 |
const navLinks = ["About", "Skills", "Projects", "Education", "Contact"];
|
| 176 |
|
| 177 |
-
/* ───
|
| 178 |
|
| 179 |
export default function Portfolio() {
|
| 180 |
-
const [active, setActive]
|
| 181 |
const [menuOpen, setMenuOpen] = useState(false);
|
| 182 |
const [scrolled, setScrolled] = useState(false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 183 |
|
| 184 |
useEffect(() => {
|
| 185 |
-
const
|
| 186 |
-
window.addEventListener("scroll",
|
| 187 |
-
return () => window.removeEventListener("scroll",
|
| 188 |
}, []);
|
| 189 |
|
| 190 |
const scrollTo = (id: string) => {
|
|
@@ -193,95 +160,96 @@ export default function Portfolio() {
|
|
| 193 |
setMenuOpen(false);
|
| 194 |
};
|
| 195 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
return (
|
| 197 |
-
<
|
| 198 |
|
| 199 |
{/* ── NAVBAR ── */}
|
| 200 |
-
<nav
|
| 201 |
-
className=
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
<span className="text-amber-400 font-bold text-lg tracking-wider">
|
| 207 |
-
MN<span className="text-white">.</span>
|
| 208 |
-
</span>
|
| 209 |
-
|
| 210 |
-
{/* Desktop links */}
|
| 211 |
-
<ul className="hidden md:flex gap-8">
|
| 212 |
{navLinks.map((l) => (
|
| 213 |
<li key={l}>
|
| 214 |
-
<button
|
| 215 |
-
onClick={() => scrollTo(l)}
|
| 216 |
className={`text-sm font-medium tracking-wide transition-colors duration-200 ${
|
| 217 |
-
active === l ? "text-amber-400" :
|
| 218 |
-
}`}
|
| 219 |
-
>
|
| 220 |
{l}
|
| 221 |
</button>
|
| 222 |
</li>
|
| 223 |
))}
|
| 224 |
</ul>
|
| 225 |
|
| 226 |
-
<
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
|
| 234 |
-
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
|
| 238 |
-
|
| 239 |
-
|
| 240 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 241 |
</div>
|
| 242 |
|
|
|
|
| 243 |
{menuOpen && (
|
| 244 |
-
<div className=
|
|
|
|
| 245 |
{navLinks.map((l) => (
|
| 246 |
-
<button
|
| 247 |
-
|
| 248 |
-
onClick={() => scrollTo(l)}
|
| 249 |
-
className="text-left text-sm font-medium text-slate-300 hover:text-amber-400 transition-colors"
|
| 250 |
-
>
|
| 251 |
{l}
|
| 252 |
</button>
|
| 253 |
))}
|
| 254 |
-
<a
|
| 255 |
-
|
| 256 |
-
download
|
| 257 |
-
className="bg-amber-500 text-black text-sm font-bold px-4 py-2 rounded-full text-center"
|
| 258 |
-
>
|
| 259 |
↓ Download CV
|
| 260 |
</a>
|
| 261 |
</div>
|
| 262 |
)}
|
| 263 |
</nav>
|
| 264 |
|
| 265 |
-
{/* ══════════════════════════════════
|
| 266 |
-
HERO
|
| 267 |
-
══════════════════════════════════
|
| 268 |
-
<section
|
| 269 |
-
|
| 270 |
-
className="
|
| 271 |
-
|
| 272 |
-
|
| 273 |
-
<div className="
|
| 274 |
-
|
| 275 |
-
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] bg-violet-600/5 rounded-full blur-3xl pointer-events-none" />
|
| 276 |
-
|
| 277 |
-
<div className="max-w-6xl mx-auto w-full grid md:grid-cols-2 gap-12 items-center">
|
| 278 |
{/* Text */}
|
| 279 |
-
<div className="animate-fade-left">
|
| 280 |
-
<span className="inline-block bg-amber-500/15 border border-amber-500/30 text-amber-400 text-xs font-bold tracking-widest uppercase px-4 py-1.5 rounded-full mb-
|
| 281 |
Available for Work
|
| 282 |
</span>
|
| 283 |
|
| 284 |
-
<h1 className="text-
|
| 285 |
Hi, I'm{" "}
|
| 286 |
<span className="bg-gradient-to-r from-amber-400 via-orange-400 to-amber-300 bg-clip-text text-transparent animate-gradient">
|
| 287 |
Muhammad
|
|
@@ -292,108 +260,90 @@ export default function Portfolio() {
|
|
| 292 |
</span>
|
| 293 |
</h1>
|
| 294 |
|
| 295 |
-
<p className=
|
| 296 |
-
<span className=
|
| 297 |
-
<span className=
|
| 298 |
-
|
| 299 |
-
intelligent agents, and cloud-native applications that run 24/7 — from Karachi, Pakistan.
|
| 300 |
</p>
|
| 301 |
|
| 302 |
-
<div className="flex flex-wrap gap-
|
| 303 |
-
<button
|
| 304 |
-
|
| 305 |
-
className="bg-gradient-to-r from-amber-500 to-orange-500 hover:from-amber-400 hover:to-orange-400 text-black font-bold px-6 py-3 rounded-full transition-all duration-200 hover:scale-105 shadow-lg shadow-amber-500/25"
|
| 306 |
-
>
|
| 307 |
View Projects →
|
| 308 |
</button>
|
| 309 |
-
<button
|
| 310 |
-
|
| 311 |
-
|
| 312 |
-
>
|
| 313 |
Contact Me
|
| 314 |
</button>
|
| 315 |
</div>
|
| 316 |
|
| 317 |
-
|
|
|
|
| 318 |
{[
|
| 319 |
-
{ label: "GitHub", href: "https://github.com/naveedtechlab",
|
| 320 |
-
{ label: "LinkedIn", href: "https://linkedin.com/in/naveedtechlab",
|
| 321 |
-
{ label: "YouTube", href: "https://youtube.com/@naveedtechlab",
|
| 322 |
-
{ label: "Instagram", href: "https://instagram.com/naveedtechlab",
|
| 323 |
-
{ label: "X", href: "https://x.com/naveedtechlab",
|
| 324 |
-
{ label: "Facebook", href: "https://facebook.com/naveedtechlab",
|
| 325 |
].map((s) => (
|
| 326 |
-
<a
|
| 327 |
-
|
| 328 |
-
|
| 329 |
-
|
| 330 |
-
rel="noopener noreferrer"
|
| 331 |
-
className="glass border border-white/10 hover:border-amber-400/40 text-slate-300 hover:text-amber-400 text-sm font-medium px-4 py-2 rounded-full transition-all duration-200 flex items-center gap-2"
|
| 332 |
-
>
|
| 333 |
-
<span>{s.icon}</span>
|
| 334 |
-
{s.label}
|
| 335 |
</a>
|
| 336 |
))}
|
| 337 |
</div>
|
| 338 |
</div>
|
| 339 |
|
| 340 |
{/* Photo */}
|
| 341 |
-
<div className="flex justify-center animate-fade-right">
|
| 342 |
<div className="relative">
|
| 343 |
-
<div className="absolute -inset-4 rounded-full border-2 border-dashed border-amber-400/30 animate-spin-slow" />
|
| 344 |
<div className="absolute inset-0 rounded-full bg-gradient-to-br from-amber-400/20 to-blue-600/20 blur-2xl animate-pulse" />
|
| 345 |
-
<div className="relative w-
|
| 346 |
-
<Image
|
| 347 |
-
src="/profile.jpg"
|
| 348 |
-
alt="Muhammad Naveed"
|
| 349 |
-
fill
|
| 350 |
-
className="object-cover object-top"
|
| 351 |
-
priority
|
| 352 |
-
/>
|
| 353 |
</div>
|
| 354 |
-
<div className=
|
|
|
|
| 355 |
🤖 AI Engineer
|
| 356 |
</div>
|
| 357 |
-
<div className=
|
|
|
|
| 358 |
⚡ 5+ AI Systems
|
| 359 |
</div>
|
| 360 |
</div>
|
| 361 |
</div>
|
| 362 |
</div>
|
| 363 |
|
| 364 |
-
<div className="absolute bottom-
|
| 365 |
<span className="text-xs text-slate-400 tracking-widest uppercase">Scroll</span>
|
| 366 |
-
<div className="w-px h-8 bg-gradient-to-b from-slate-400 to-transparent" />
|
| 367 |
</div>
|
| 368 |
</section>
|
| 369 |
|
| 370 |
-
{/* ══════════════════════════════════
|
| 371 |
SKILLS
|
| 372 |
-
══════════════════════════════════
|
| 373 |
-
<section id="skills" className="py-24 px-6 relative">
|
| 374 |
-
<div className="absolute inset-0 bg-gradient-to-b from-transparent via-blue-950/20 to-transparent pointer-events-none" />
|
| 375 |
<div className="max-w-6xl mx-auto">
|
| 376 |
-
<SectionHeader
|
| 377 |
-
|
| 378 |
-
|
| 379 |
-
sub="Full-spectrum expertise from frontend to AI agent orchestration"
|
| 380 |
-
/>
|
| 381 |
-
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-5">
|
| 382 |
{skills.map((s, i) => (
|
| 383 |
-
<div
|
| 384 |
-
|
| 385 |
-
|
| 386 |
-
|
| 387 |
-
>
|
| 388 |
-
<div className={`inline-block bg-gradient-to-r ${s.color} text-transparent bg-clip-text font-bold text-sm tracking-wider uppercase mb-3`}>
|
| 389 |
{s.label}
|
| 390 |
</div>
|
| 391 |
-
<div className="flex flex-wrap gap-2">
|
| 392 |
{s.tags.map((t) => (
|
| 393 |
-
<span
|
| 394 |
-
|
| 395 |
-
|
| 396 |
-
>
|
| 397 |
{t}
|
| 398 |
</span>
|
| 399 |
))}
|
|
@@ -404,57 +354,49 @@ export default function Portfolio() {
|
|
| 404 |
</div>
|
| 405 |
</section>
|
| 406 |
|
| 407 |
-
{/* ══════════════════════════════════
|
| 408 |
PROJECTS
|
| 409 |
-
══════════════════════════════════
|
| 410 |
-
<section id="projects" className="py-24 px-6 relative">
|
| 411 |
-
|
| 412 |
-
|
|
|
|
|
|
|
| 413 |
<div className="max-w-6xl mx-auto">
|
| 414 |
-
<SectionHeader
|
| 415 |
-
|
| 416 |
-
|
| 417 |
-
sub="Production-grade AI systems, hackathon wins, live apps & client projects"
|
| 418 |
-
/>
|
| 419 |
-
<div className="grid sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
| 420 |
{projects.map((p, i) => (
|
| 421 |
-
<div
|
| 422 |
-
|
| 423 |
-
|
| 424 |
-
|
| 425 |
-
|
| 426 |
-
<div className="flex items-start justify-between">
|
| 427 |
-
<div className={`w-12 h-12 bg-gradient-to-br ${p.accent} rounded-xl flex items-center justify-center text-2xl shadow-lg flex-shrink-0`}>
|
| 428 |
{p.icon}
|
| 429 |
</div>
|
| 430 |
-
<span className=
|
|
|
|
| 431 |
{p.subtitle}
|
| 432 |
</span>
|
| 433 |
</div>
|
| 434 |
|
| 435 |
<div className="flex-1">
|
| 436 |
-
<h3 className=
|
| 437 |
-
<p className=
|
| 438 |
</div>
|
| 439 |
|
| 440 |
-
<div className=
|
| 441 |
{p.tags.map((t) => (
|
| 442 |
-
<span
|
| 443 |
-
|
| 444 |
-
className={`text-xs px-2.5 py-1 rounded-full bg-gradient-to-r ${p.accent} opacity-80 text-white border border-white/10`}
|
| 445 |
-
>
|
| 446 |
{t}
|
| 447 |
</span>
|
| 448 |
))}
|
| 449 |
</div>
|
| 450 |
|
| 451 |
{"live" in p && p.live && (
|
| 452 |
-
<a
|
| 453 |
-
|
| 454 |
-
target="_blank"
|
| 455 |
-
rel="noopener noreferrer"
|
| 456 |
-
className={`mt-1 flex items-center justify-center gap-2 bg-gradient-to-r ${p.accent} text-white text-xs font-bold py-2 px-4 rounded-xl hover:opacity-90 transition-all duration-200 hover:scale-105 shadow-lg`}
|
| 457 |
-
>
|
| 458 |
🚀 Live Demo
|
| 459 |
</a>
|
| 460 |
)}
|
|
@@ -464,54 +406,41 @@ export default function Portfolio() {
|
|
| 464 |
</div>
|
| 465 |
</section>
|
| 466 |
|
| 467 |
-
{/* ══════════════════════════════════
|
| 468 |
EDUCATION
|
| 469 |
-
══════════════════════════════════
|
| 470 |
-
<section id="education" className="py-24 px-6">
|
| 471 |
<div className="max-w-6xl mx-auto">
|
| 472 |
-
<SectionHeader
|
| 473 |
-
|
| 474 |
-
|
| 475 |
-
sub="Continuous learning in cutting-edge technologies"
|
| 476 |
-
/>
|
| 477 |
-
<div className="max-w-3xl mx-auto flex flex-col gap-5">
|
| 478 |
{[
|
| 479 |
{
|
| 480 |
-
icon: "🎓",
|
| 481 |
-
|
| 482 |
-
field: "GenAI, Web3 & Metaverse",
|
| 483 |
-
year: "2023 – Present",
|
| 484 |
desc: "Intensive government-backed program covering Generative AI, Web3 technologies, Metaverse development, and modern engineering practices.",
|
| 485 |
-
accent: "from-amber-500 to-orange-500",
|
| 486 |
},
|
| 487 |
{
|
| 488 |
-
icon: "📚",
|
| 489 |
-
|
| 490 |
-
field: "Matriculation",
|
| 491 |
-
year: "Completed",
|
| 492 |
desc: "Foundation education building analytical thinking and problem-solving skills.",
|
| 493 |
-
accent: "from-blue-500 to-cyan-500",
|
| 494 |
},
|
| 495 |
].map((e, i) => (
|
| 496 |
-
<div
|
| 497 |
-
|
| 498 |
-
|
| 499 |
-
|
| 500 |
-
>
|
| 501 |
-
<div className={`w-14 h-14 bg-gradient-to-br ${e.accent} rounded-xl flex items-center justify-center text-2xl flex-shrink-0 shadow-lg`}>
|
| 502 |
{e.icon}
|
| 503 |
</div>
|
| 504 |
-
<div className="flex-1">
|
| 505 |
<div className="flex items-start justify-between flex-wrap gap-2 mb-1">
|
| 506 |
-
<h3 className=
|
| 507 |
-
<span className="text-xs text-amber-400 font-semibold bg-amber-500/10 border border-amber-500/20 px-
|
| 508 |
{e.year}
|
| 509 |
</span>
|
| 510 |
</div>
|
| 511 |
-
<p className={`text-sm font-semibold bg-gradient-to-r ${e.accent} bg-clip-text text-transparent mb-
|
| 512 |
-
|
| 513 |
-
</p>
|
| 514 |
-
<p className="text-slate-400 text-sm leading-relaxed">{e.desc}</p>
|
| 515 |
</div>
|
| 516 |
</div>
|
| 517 |
))}
|
|
@@ -519,27 +448,22 @@ export default function Portfolio() {
|
|
| 519 |
</div>
|
| 520 |
</section>
|
| 521 |
|
| 522 |
-
{/* ══════════════════════════════════
|
| 523 |
CONTACT
|
| 524 |
-
══════════════════════════════════
|
| 525 |
-
<section id="contact" className="py-24 px-6 relative">
|
| 526 |
-
<div className="absolute inset-0 bg-gradient-to-t from-blue-950/30 to-transparent pointer-events-none" />
|
| 527 |
<div className="max-w-6xl mx-auto">
|
| 528 |
-
<SectionHeader
|
| 529 |
-
|
| 530 |
-
title="Get In Touch"
|
| 531 |
-
sub="Open to collaborations, freelance projects, and full-time opportunities"
|
| 532 |
-
/>
|
| 533 |
<div className="max-w-2xl mx-auto">
|
| 534 |
-
<div className=
|
| 535 |
-
<p className=
|
| 536 |
-
Whether you need an
|
| 537 |
-
<span className="text-amber-400 font-semibold">AI automation system</span>,
|
| 538 |
a full-stack web app, or a custom agent — I'm ready to build it.
|
| 539 |
-
Let's make something great together.
|
| 540 |
</p>
|
| 541 |
|
| 542 |
-
<div className="grid grid-cols-2 sm:grid-cols-3 gap-4 mb-10">
|
| 543 |
{[
|
| 544 |
{ icon: "✉️", label: "Email", value: "qureshinaveed21@hotmail.com", href: "mailto:qureshinaveed21@hotmail.com" },
|
| 545 |
{ icon: "⌨️", label: "GitHub", value: "naveedtechlab", href: "https://github.com/naveedtechlab" },
|
|
@@ -550,26 +474,20 @@ export default function Portfolio() {
|
|
| 550 |
{ icon: "📘", label: "Facebook", value: "naveedtechlab", href: "https://facebook.com/naveedtechlab" },
|
| 551 |
{ icon: "📍", label: "Location", value: "Karachi, Pakistan", href: "#" },
|
| 552 |
].map((c) => (
|
| 553 |
-
<a
|
| 554 |
-
|
| 555 |
-
|
| 556 |
-
|
| 557 |
-
|
| 558 |
-
className=
|
| 559 |
-
>
|
| 560 |
-
<span className="text-2xl">{c.icon}</span>
|
| 561 |
-
<span className="text-xs text-slate-500 uppercase tracking-widest">{c.label}</span>
|
| 562 |
-
<span className="text-sm text-white font-medium group-hover:text-amber-400 transition-colors text-center break-all">
|
| 563 |
{c.value}
|
| 564 |
</span>
|
| 565 |
</a>
|
| 566 |
))}
|
| 567 |
</div>
|
| 568 |
|
| 569 |
-
<a
|
| 570 |
-
|
| 571 |
-
className="inline-flex items-center gap-3 bg-gradient-to-r from-amber-500 to-orange-500 hover:from-amber-400 hover:to-orange-400 text-black font-bold px-8 py-4 rounded-full transition-all duration-200 hover:scale-105 shadow-xl shadow-amber-500/25 text-base"
|
| 572 |
-
>
|
| 573 |
✉️ Send Me an Email
|
| 574 |
</a>
|
| 575 |
</div>
|
|
@@ -577,28 +495,29 @@ export default function Portfolio() {
|
|
| 577 |
</div>
|
| 578 |
</section>
|
| 579 |
|
| 580 |
-
{/*
|
| 581 |
-
<footer className=
|
| 582 |
-
<p className=
|
| 583 |
-
© 2026
|
| 584 |
-
<span className="text-amber-400 font-semibold">Muhammad Naveed</span>
|
| 585 |
-
{" "}· Built with Next.js & Tailwind CSS
|
| 586 |
</p>
|
| 587 |
</footer>
|
| 588 |
-
</
|
| 589 |
);
|
| 590 |
}
|
| 591 |
|
| 592 |
/* ─── SECTION HEADER ────────────────────────────────────────── */
|
| 593 |
-
function SectionHeader({ eyebrow, title, sub }: {
|
|
|
|
|
|
|
| 594 |
return (
|
| 595 |
-
<div className="text-center mb-14 animate-fade-up">
|
| 596 |
-
<span
|
| 597 |
-
|
| 598 |
-
|
| 599 |
-
|
| 600 |
-
|
| 601 |
-
<
|
|
|
|
| 602 |
</div>
|
| 603 |
);
|
| 604 |
}
|
|
|
|
| 6 |
/* ─── DATA ─────────────────────────────────────────────────── */
|
| 7 |
|
| 8 |
const skills = [
|
| 9 |
+
{ label: "Frontend", color: "from-blue-500 to-cyan-400", tags: ["Next.js", "React", "TypeScript", "Tailwind CSS", "HTML5/CSS3"] },
|
| 10 |
+
{ label: "Backend", color: "from-violet-500 to-purple-400", tags: ["Python", "FastAPI", "Node.js", "REST APIs", "Authentication"] },
|
| 11 |
+
{ label: "AI & Agents", color: "from-amber-500 to-orange-400", tags: ["OpenAI API", "Gemini API", "LangChain", "Claude Code", "Agents SDK", "MCP"] },
|
| 12 |
+
{ label: "Automation", color: "from-green-500 to-emerald-400", tags: ["Gmail API", "WhatsApp/Twilio", "Webhooks", "Watchers", "BG Workers"] },
|
| 13 |
+
{ label: "Cloud & DevOps", color: "from-sky-500 to-blue-400", tags: ["Docker", "Kubernetes", "Kafka", "Dapr", "CI/CD", "GitHub"] },
|
| 14 |
+
{ label: "Database", color: "from-rose-500 to-pink-400", tags: ["MongoDB", "PostgreSQL", "Sanity CMS"] },
|
| 15 |
+
{ label: "Architecture", color: "from-teal-500 to-cyan-400", tags: ["Spec-Driven Dev", "Event-Driven", "Agent Skills Design"] },
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
];
|
| 17 |
|
| 18 |
const projects = [
|
|
|
|
| 21 |
subtitle: "Digital FTE · Hackathon",
|
| 22 |
desc: "Autonomous AI employee with Gmail/WhatsApp automation, Obsidian memory system, and MCP tools — running 24/7 without human intervention.",
|
| 23 |
tags: ["OpenAI SDK", "MCP", "Gmail API", "WhatsApp", "Python"],
|
| 24 |
+
icon: "🤖", accent: "from-amber-500 to-orange-500", live: null,
|
|
|
|
|
|
|
| 25 |
},
|
| 26 |
{
|
| 27 |
title: "CRM Digital FTE",
|
| 28 |
subtitle: "CRM Agent · Hugging Face",
|
| 29 |
+
desc: "Multi-channel customer support agent handling Gmail, WhatsApp, and Web forms with a PostgreSQL ticket system and FastAPI backend.",
|
| 30 |
tags: ["FastAPI", "PostgreSQL", "LangChain", "Twilio", "Python"],
|
| 31 |
+
icon: "🎯", accent: "from-blue-500 to-cyan-500",
|
| 32 |
+
live: "https://naveedtechlab-crm-digital-fte.hf.space",
|
|
|
|
| 33 |
},
|
| 34 |
{
|
| 35 |
title: "Course Companion FTE",
|
| 36 |
subtitle: "AI Tutor · Hugging Face",
|
| 37 |
desc: "AI-powered tutoring assistant with deterministic backend logic, skills-based agent architecture, and an interactive learning interface.",
|
| 38 |
tags: ["Python", "OpenAI API", "FastAPI", "Streamlit"],
|
| 39 |
+
icon: "📚", accent: "from-violet-500 to-purple-500",
|
| 40 |
+
live: "https://naveedtechlab-course-companion-fte.hf.space",
|
|
|
|
| 41 |
},
|
| 42 |
{
|
| 43 |
title: "Todo App Phase 5",
|
| 44 |
subtitle: "Full Stack · Hugging Face",
|
| 45 |
+
desc: "Spec-driven todo app evolved from console to full-stack with AI chatbot, cloud-native deployment, and OpenAI Agents SDK integration.",
|
| 46 |
tags: ["Next.js", "FastAPI", "OpenAI SDK", "Docker"],
|
| 47 |
+
icon: "✅", accent: "from-green-500 to-emerald-500",
|
| 48 |
+
live: "https://naveedtechlab-todo-app-phase5.hf.space",
|
|
|
|
| 49 |
},
|
| 50 |
{
|
| 51 |
title: "LearnFlow",
|
| 52 |
subtitle: "Learning Platform · Hugging Face",
|
| 53 |
+
desc: "Interactive AI-assisted learning flow platform with structured modules and an intuitive UI for seamless education experiences.",
|
| 54 |
tags: ["Python", "AI", "Streamlit", "OpenAI API"],
|
| 55 |
+
icon: "🎓", accent: "from-sky-500 to-blue-500",
|
| 56 |
+
live: "https://naveedtechlab-learnflow.hf.space",
|
|
|
|
| 57 |
},
|
| 58 |
{
|
| 59 |
title: "AI Native Textbook",
|
| 60 |
subtitle: "EdTech · Vercel",
|
| 61 |
+
desc: "AI-native digital textbook delivering interactive, intelligent content — blending traditional learning with generative AI capabilities.",
|
| 62 |
tags: ["Next.js", "OpenAI API", "Vercel", "TypeScript"],
|
| 63 |
+
icon: "📖", accent: "from-indigo-500 to-violet-500",
|
|
|
|
| 64 |
live: "https://ai-native-textbook1.vercel.app/",
|
| 65 |
},
|
| 66 |
{
|
| 67 |
title: "E-Commerce Store",
|
| 68 |
subtitle: "Freelance · Vercel",
|
| 69 |
+
desc: "Modern full-featured e-commerce web app with product listings, cart functionality, and a clean responsive UI — deployed on Vercel.",
|
| 70 |
tags: ["Next.js", "React", "Tailwind CSS", "Vercel"],
|
| 71 |
+
icon: "🛍️", accent: "from-rose-500 to-pink-500",
|
|
|
|
| 72 |
live: "https://e-comm-naveed.vercel.app/",
|
| 73 |
},
|
| 74 |
{
|
| 75 |
title: "Library Manager",
|
| 76 |
subtitle: "Utility App · Streamlit",
|
| 77 |
+
desc: "Smart library management system to add, search, and manage books with an intuitive Streamlit interface and persistent data storage.",
|
| 78 |
tags: ["Python", "Streamlit", "Pandas"],
|
| 79 |
+
icon: "📕", accent: "from-orange-500 to-amber-500",
|
|
|
|
| 80 |
live: "https://naveed247365-library-manager-library-manager-iykdx8.streamlit.app/",
|
| 81 |
},
|
| 82 |
{
|
| 83 |
title: "Number Guessing Game",
|
| 84 |
subtitle: "Fun App · Streamlit",
|
| 85 |
+
desc: "Interactive browser-based number guessing game with difficulty levels and score tracking built with Python and Streamlit.",
|
| 86 |
tags: ["Python", "Streamlit", "Game Logic"],
|
| 87 |
+
icon: "🎮", accent: "from-teal-500 to-cyan-500",
|
|
|
|
| 88 |
live: "https://naveed247365-number-guessing-game-guessing-game-kfloll.streamlit.app/",
|
| 89 |
},
|
| 90 |
{
|
| 91 |
title: "Password Strength Meter",
|
| 92 |
subtitle: "Security Tool · Streamlit",
|
| 93 |
+
desc: "Real-time password strength analyzer with visual feedback, entropy scoring, and security suggestions.",
|
| 94 |
tags: ["Python", "Streamlit", "Security", "GUI"],
|
| 95 |
+
icon: "🔐", accent: "from-red-500 to-rose-500",
|
|
|
|
| 96 |
live: "https://password-strength-meter-with-a-gui.streamlit.app/",
|
| 97 |
},
|
| 98 |
{
|
| 99 |
title: "Secure Data Vault",
|
| 100 |
subtitle: "Encryption App · Streamlit",
|
| 101 |
+
desc: "End-to-end data encryption system to securely store and retrieve sensitive information using modern cryptographic algorithms.",
|
| 102 |
tags: ["Python", "Cryptography", "Streamlit", "Security"],
|
| 103 |
+
icon: "🔒", accent: "from-slate-500 to-gray-600",
|
|
|
|
| 104 |
live: "https://naveed247365-secure-data-encryption-system--secure-vault-sbgxir.streamlit.app/",
|
| 105 |
},
|
| 106 |
{
|
| 107 |
title: "Unit Converter",
|
| 108 |
subtitle: "Utility Tool · Streamlit",
|
| 109 |
+
desc: "Comprehensive unit conversion tool supporting length, weight, temperature, speed, and more — with a fast Streamlit interface.",
|
| 110 |
tags: ["Python", "Streamlit", "Math"],
|
| 111 |
+
icon: "📐", accent: "from-lime-500 to-green-500",
|
|
|
|
| 112 |
live: "https://naveed247365-unit-converter-unit-converter-cycms9.streamlit.app/",
|
| 113 |
},
|
| 114 |
{
|
| 115 |
title: "Streamlit Web App",
|
| 116 |
subtitle: "Web App · Streamlit",
|
| 117 |
+
desc: "Dynamic multi-feature web application showcasing Python-powered interactivity, data visualization, and UI components.",
|
| 118 |
tags: ["Python", "Streamlit", "Data Viz"],
|
| 119 |
+
icon: "🌐", accent: "from-fuchsia-500 to-pink-500",
|
|
|
|
| 120 |
live: "https://naveed247365-web-app-with-streamlit-app-hnkir1.streamlit.app/",
|
| 121 |
},
|
| 122 |
{
|
| 123 |
+
title: "Fiverr Freelance Work",
|
| 124 |
subtitle: "Freelance · Client Projects",
|
| 125 |
+
desc: "Shopify stores, custom dashboards, CMS-based websites, and automation workflows for clients — from design to deployment.",
|
| 126 |
tags: ["Shopify", "React", "Sanity CMS", "Node.js"],
|
| 127 |
+
icon: "💼", accent: "from-yellow-500 to-orange-400", live: null,
|
|
|
|
|
|
|
| 128 |
},
|
| 129 |
];
|
| 130 |
|
| 131 |
const navLinks = ["About", "Skills", "Projects", "Education", "Contact"];
|
| 132 |
|
| 133 |
+
/* ─── MAIN ─────────────────────────────────────────────────── */
|
| 134 |
|
| 135 |
export default function Portfolio() {
|
| 136 |
+
const [active, setActive] = useState("About");
|
| 137 |
const [menuOpen, setMenuOpen] = useState(false);
|
| 138 |
const [scrolled, setScrolled] = useState(false);
|
| 139 |
+
const [dark, setDark] = useState(true);
|
| 140 |
+
|
| 141 |
+
/* persist theme */
|
| 142 |
+
useEffect(() => {
|
| 143 |
+
const saved = localStorage.getItem("theme");
|
| 144 |
+
if (saved) setDark(saved === "dark");
|
| 145 |
+
}, []);
|
| 146 |
+
|
| 147 |
+
useEffect(() => {
|
| 148 |
+
localStorage.setItem("theme", dark ? "dark" : "light");
|
| 149 |
+
}, [dark]);
|
| 150 |
|
| 151 |
useEffect(() => {
|
| 152 |
+
const fn = () => setScrolled(window.scrollY > 60);
|
| 153 |
+
window.addEventListener("scroll", fn);
|
| 154 |
+
return () => window.removeEventListener("scroll", fn);
|
| 155 |
}, []);
|
| 156 |
|
| 157 |
const scrollTo = (id: string) => {
|
|
|
|
| 160 |
setMenuOpen(false);
|
| 161 |
};
|
| 162 |
|
| 163 |
+
/* ── theme tokens ── */
|
| 164 |
+
const bg = dark ? "bg-[#060d1f]" : "bg-slate-50";
|
| 165 |
+
const surface = dark ? "bg-[#0d1b38]" : "bg-white";
|
| 166 |
+
const card = dark ? "bg-white/5 border-white/8" : "bg-white border-slate-200";
|
| 167 |
+
const txt = dark ? "text-white" : "text-slate-900";
|
| 168 |
+
const muted = dark ? "text-slate-400" : "text-slate-500";
|
| 169 |
+
const navBg = scrolled
|
| 170 |
+
? dark ? "bg-[#060d1f]/90 backdrop-blur-xl shadow-2xl shadow-black/40 border-b border-white/5"
|
| 171 |
+
: "bg-white/90 backdrop-blur-xl shadow-lg border-b border-slate-200"
|
| 172 |
+
: "bg-transparent";
|
| 173 |
+
|
| 174 |
return (
|
| 175 |
+
<div className={`${bg} ${txt} min-h-screen overflow-x-hidden transition-colors duration-300`}>
|
| 176 |
|
| 177 |
{/* ── NAVBAR ── */}
|
| 178 |
+
<nav className={`fixed top-0 left-0 right-0 z-50 transition-all duration-300 ${navBg}`}>
|
| 179 |
+
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-3 sm:py-4 flex items-center justify-between gap-4">
|
| 180 |
+
<span className="text-amber-400 font-bold text-lg tracking-wider flex-shrink-0">MN<span className={txt}>.</span></span>
|
| 181 |
+
|
| 182 |
+
{/* Desktop nav */}
|
| 183 |
+
<ul className="hidden md:flex gap-6 lg:gap-8">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 184 |
{navLinks.map((l) => (
|
| 185 |
<li key={l}>
|
| 186 |
+
<button onClick={() => scrollTo(l)}
|
|
|
|
| 187 |
className={`text-sm font-medium tracking-wide transition-colors duration-200 ${
|
| 188 |
+
active === l ? "text-amber-400" : `${muted} hover:${txt}`}`}>
|
|
|
|
|
|
|
| 189 |
{l}
|
| 190 |
</button>
|
| 191 |
</li>
|
| 192 |
))}
|
| 193 |
</ul>
|
| 194 |
|
| 195 |
+
<div className="flex items-center gap-2 sm:gap-3">
|
| 196 |
+
{/* Theme toggle */}
|
| 197 |
+
<button
|
| 198 |
+
onClick={() => setDark(!dark)}
|
| 199 |
+
className={`w-9 h-9 rounded-full flex items-center justify-center transition-all duration-200 hover:scale-110 ${
|
| 200 |
+
dark ? "bg-white/10 hover:bg-white/20" : "bg-slate-100 hover:bg-slate-200"}`}
|
| 201 |
+
title="Toggle theme"
|
| 202 |
+
>
|
| 203 |
+
{dark ? "☀️" : "🌙"}
|
| 204 |
+
</button>
|
| 205 |
+
|
| 206 |
+
<a href="/Muhammad_Naveed_CV.pdf" download
|
| 207 |
+
className="hidden sm:inline-flex items-center gap-2 bg-amber-500 hover:bg-amber-400 text-black text-xs sm:text-sm font-bold px-3 sm:px-4 py-2 rounded-full transition-all duration-200 hover:scale-105 flex-shrink-0">
|
| 208 |
+
↓ CV
|
| 209 |
+
</a>
|
| 210 |
+
|
| 211 |
+
{/* Mobile hamburger */}
|
| 212 |
+
<button className={`md:hidden text-xl ${txt}`} onClick={() => setMenuOpen(!menuOpen)}>
|
| 213 |
+
{menuOpen ? "✕" : "☰"}
|
| 214 |
+
</button>
|
| 215 |
+
</div>
|
| 216 |
</div>
|
| 217 |
|
| 218 |
+
{/* Mobile menu */}
|
| 219 |
{menuOpen && (
|
| 220 |
+
<div className={`md:hidden border-t px-6 py-4 flex flex-col gap-4 ${
|
| 221 |
+
dark ? "bg-[#0d1b38] border-white/10" : "bg-white border-slate-200"}`}>
|
| 222 |
{navLinks.map((l) => (
|
| 223 |
+
<button key={l} onClick={() => scrollTo(l)}
|
| 224 |
+
className={`text-left text-sm font-medium transition-colors ${muted} hover:text-amber-400`}>
|
|
|
|
|
|
|
|
|
|
| 225 |
{l}
|
| 226 |
</button>
|
| 227 |
))}
|
| 228 |
+
<a href="/Muhammad_Naveed_CV.pdf" download
|
| 229 |
+
className="bg-amber-500 text-black text-sm font-bold px-4 py-2 rounded-full text-center">
|
|
|
|
|
|
|
|
|
|
| 230 |
↓ Download CV
|
| 231 |
</a>
|
| 232 |
</div>
|
| 233 |
)}
|
| 234 |
</nav>
|
| 235 |
|
| 236 |
+
{/* ══════════════════════════════════
|
| 237 |
+
HERO
|
| 238 |
+
══════════════════════════════════ */}
|
| 239 |
+
<section id="about" className="min-h-screen flex items-center justify-center relative pt-20 pb-12 px-4 sm:px-6 overflow-hidden">
|
| 240 |
+
{/* blobs */}
|
| 241 |
+
<div className="absolute top-20 left-0 sm:left-10 w-48 sm:w-72 h-48 sm:h-72 bg-blue-600/20 rounded-full blur-3xl pointer-events-none" />
|
| 242 |
+
<div className="absolute bottom-10 right-0 sm:right-10 w-64 sm:w-96 h-64 sm:h-96 bg-amber-500/10 rounded-full blur-3xl pointer-events-none" />
|
| 243 |
+
|
| 244 |
+
<div className="max-w-6xl mx-auto w-full grid md:grid-cols-2 gap-8 sm:gap-12 items-center">
|
| 245 |
+
|
|
|
|
|
|
|
|
|
|
| 246 |
{/* Text */}
|
| 247 |
+
<div className="animate-fade-left order-2 md:order-1 text-center md:text-left">
|
| 248 |
+
<span className="inline-block bg-amber-500/15 border border-amber-500/30 text-amber-400 text-xs font-bold tracking-widest uppercase px-4 py-1.5 rounded-full mb-5">
|
| 249 |
Available for Work
|
| 250 |
</span>
|
| 251 |
|
| 252 |
+
<h1 className="text-3xl sm:text-4xl lg:text-5xl xl:text-6xl font-extrabold leading-tight mb-4">
|
| 253 |
Hi, I'm{" "}
|
| 254 |
<span className="bg-gradient-to-r from-amber-400 via-orange-400 to-amber-300 bg-clip-text text-transparent animate-gradient">
|
| 255 |
Muhammad
|
|
|
|
| 260 |
</span>
|
| 261 |
</h1>
|
| 262 |
|
| 263 |
+
<p className={`${muted} text-sm sm:text-base lg:text-lg leading-relaxed mb-7 max-w-lg mx-auto md:mx-0`}>
|
| 264 |
+
<span className={`${txt} font-semibold`}>AI Automation Engineer</span> &{" "}
|
| 265 |
+
<span className={`${txt} font-semibold`}>Full Stack Developer</span> building autonomous{" "}
|
| 266 |
+
<span className="text-amber-400 font-semibold">Digital FTE</span> systems and cloud-native apps — from Karachi, Pakistan.
|
|
|
|
| 267 |
</p>
|
| 268 |
|
| 269 |
+
<div className="flex flex-wrap gap-3 mb-8 justify-center md:justify-start">
|
| 270 |
+
<button onClick={() => scrollTo("Projects")}
|
| 271 |
+
className="bg-gradient-to-r from-amber-500 to-orange-500 hover:from-amber-400 hover:to-orange-400 text-black font-bold px-5 sm:px-6 py-2.5 sm:py-3 rounded-full transition-all duration-200 hover:scale-105 shadow-lg shadow-amber-500/25 text-sm sm:text-base">
|
|
|
|
|
|
|
| 272 |
View Projects →
|
| 273 |
</button>
|
| 274 |
+
<button onClick={() => scrollTo("Contact")}
|
| 275 |
+
className={`border font-semibold px-5 sm:px-6 py-2.5 sm:py-3 rounded-full transition-all duration-200 hover:scale-105 text-sm sm:text-base ${
|
| 276 |
+
dark ? "border-white/20 hover:border-amber-400/50 text-white" : "border-slate-300 hover:border-amber-400 text-slate-700"}`}>
|
|
|
|
| 277 |
Contact Me
|
| 278 |
</button>
|
| 279 |
</div>
|
| 280 |
|
| 281 |
+
{/* Socials */}
|
| 282 |
+
<div className="flex gap-2 flex-wrap justify-center md:justify-start">
|
| 283 |
{[
|
| 284 |
+
{ label: "GitHub", href: "https://github.com/naveedtechlab", icon: "⌨️" },
|
| 285 |
+
{ label: "LinkedIn", href: "https://linkedin.com/in/naveedtechlab", icon: "💼" },
|
| 286 |
+
{ label: "YouTube", href: "https://youtube.com/@naveedtechlab", icon: "▶️" },
|
| 287 |
+
{ label: "Instagram", href: "https://instagram.com/naveedtechlab", icon: "📸" },
|
| 288 |
+
{ label: "X", href: "https://x.com/naveedtechlab", icon: "𝕏" },
|
| 289 |
+
{ label: "Facebook", href: "https://facebook.com/naveedtechlab", icon: "📘" },
|
| 290 |
].map((s) => (
|
| 291 |
+
<a key={s.label} href={s.href} target="_blank" rel="noopener noreferrer"
|
| 292 |
+
className={`border text-xs font-medium px-3 py-1.5 rounded-full transition-all duration-200 flex items-center gap-1.5 hover:text-amber-400 hover:border-amber-400/40 ${
|
| 293 |
+
dark ? "border-white/10 text-slate-300" : "border-slate-200 text-slate-600"}`}>
|
| 294 |
+
<span>{s.icon}</span>{s.label}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 295 |
</a>
|
| 296 |
))}
|
| 297 |
</div>
|
| 298 |
</div>
|
| 299 |
|
| 300 |
{/* Photo */}
|
| 301 |
+
<div className="flex justify-center animate-fade-right order-1 md:order-2">
|
| 302 |
<div className="relative">
|
| 303 |
+
<div className="absolute -inset-3 sm:-inset-4 rounded-full border-2 border-dashed border-amber-400/30 animate-spin-slow" />
|
| 304 |
<div className="absolute inset-0 rounded-full bg-gradient-to-br from-amber-400/20 to-blue-600/20 blur-2xl animate-pulse" />
|
| 305 |
+
<div className="relative w-52 h-52 sm:w-64 sm:h-64 md:w-72 md:h-72 lg:w-80 lg:h-80 rounded-full overflow-hidden border-4 border-amber-400 animate-pulse-ring animate-float shadow-2xl shadow-amber-500/20">
|
| 306 |
+
<Image src="/profile.jpg" alt="Muhammad Naveed" fill className="object-cover object-top" priority />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 307 |
</div>
|
| 308 |
+
<div className={`absolute -top-1 -right-3 sm:-top-2 sm:-right-4 border rounded-2xl px-2.5 py-1.5 text-xs font-bold text-amber-400 shadow-xl animate-fade-up delay-300 ${
|
| 309 |
+
dark ? "bg-white/5 backdrop-blur-lg border-white/10" : "bg-white border-slate-200"}`}>
|
| 310 |
🤖 AI Engineer
|
| 311 |
</div>
|
| 312 |
+
<div className={`absolute -bottom-1 -left-3 sm:-bottom-2 sm:-left-4 border rounded-2xl px-2.5 py-1.5 text-xs font-bold text-cyan-400 shadow-xl animate-fade-up delay-500 ${
|
| 313 |
+
dark ? "bg-white/5 backdrop-blur-lg border-white/10" : "bg-white border-slate-200"}`}>
|
| 314 |
⚡ 5+ AI Systems
|
| 315 |
</div>
|
| 316 |
</div>
|
| 317 |
</div>
|
| 318 |
</div>
|
| 319 |
|
| 320 |
+
<div className="absolute bottom-6 left-1/2 -translate-x-1/2 flex flex-col items-center gap-2 opacity-30">
|
| 321 |
<span className="text-xs text-slate-400 tracking-widest uppercase">Scroll</span>
|
| 322 |
+
<div className="w-px h-6 sm:h-8 bg-gradient-to-b from-slate-400 to-transparent" />
|
| 323 |
</div>
|
| 324 |
</section>
|
| 325 |
|
| 326 |
+
{/* ══════════════════════════════════
|
| 327 |
SKILLS
|
| 328 |
+
══════════════════════════════════ */}
|
| 329 |
+
<section id="skills" className="py-16 sm:py-24 px-4 sm:px-6 relative">
|
| 330 |
+
{dark && <div className="absolute inset-0 bg-gradient-to-b from-transparent via-blue-950/20 to-transparent pointer-events-none" />}
|
| 331 |
<div className="max-w-6xl mx-auto">
|
| 332 |
+
<SectionHeader eyebrow="What I work with" title="Technical Skills"
|
| 333 |
+
sub="Full-spectrum expertise from frontend to AI agent orchestration" dark={dark} />
|
| 334 |
+
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 sm:gap-5">
|
|
|
|
|
|
|
|
|
|
| 335 |
{skills.map((s, i) => (
|
| 336 |
+
<div key={s.label}
|
| 337 |
+
className={`border rounded-2xl p-4 sm:p-5 card-hover animate-fade-up ${card}`}
|
| 338 |
+
style={{ animationDelay: `${i * 0.08}s` }}>
|
| 339 |
+
<div className={`inline-block bg-gradient-to-r ${s.color} text-transparent bg-clip-text font-bold text-xs sm:text-sm tracking-wider uppercase mb-3`}>
|
|
|
|
|
|
|
| 340 |
{s.label}
|
| 341 |
</div>
|
| 342 |
+
<div className="flex flex-wrap gap-1.5 sm:gap-2">
|
| 343 |
{s.tags.map((t) => (
|
| 344 |
+
<span key={t}
|
| 345 |
+
className={`text-xs px-2.5 sm:px-3 py-1 rounded-full border transition-colors duration-200 cursor-default hover:text-amber-400 hover:border-amber-400/40 ${
|
| 346 |
+
dark ? "bg-white/5 border-white/10 text-slate-300" : "bg-slate-50 border-slate-200 text-slate-600"}`}>
|
|
|
|
| 347 |
{t}
|
| 348 |
</span>
|
| 349 |
))}
|
|
|
|
| 354 |
</div>
|
| 355 |
</section>
|
| 356 |
|
| 357 |
+
{/* ══════════════════════════════════
|
| 358 |
PROJECTS
|
| 359 |
+
══════════════════════════════════ */}
|
| 360 |
+
<section id="projects" className="py-16 sm:py-24 px-4 sm:px-6 relative">
|
| 361 |
+
{dark && <>
|
| 362 |
+
<div className="absolute top-0 left-0 w-72 sm:w-96 h-72 sm:h-96 bg-violet-600/10 rounded-full blur-3xl pointer-events-none" />
|
| 363 |
+
<div className="absolute bottom-0 right-0 w-72 sm:w-96 h-72 sm:h-96 bg-amber-500/8 rounded-full blur-3xl pointer-events-none" />
|
| 364 |
+
</>}
|
| 365 |
<div className="max-w-6xl mx-auto">
|
| 366 |
+
<SectionHeader eyebrow="What I've built" title="Projects & Experience"
|
| 367 |
+
sub="Production-grade AI systems, hackathon wins, live apps & client projects" dark={dark} />
|
| 368 |
+
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 sm:gap-6">
|
|
|
|
|
|
|
|
|
|
| 369 |
{projects.map((p, i) => (
|
| 370 |
+
<div key={p.title}
|
| 371 |
+
className={`border rounded-2xl p-4 sm:p-6 card-hover flex flex-col gap-3 sm:gap-4 animate-fade-up ${card}`}
|
| 372 |
+
style={{ animationDelay: `${i * 0.05}s` }}>
|
| 373 |
+
<div className="flex items-start justify-between gap-2">
|
| 374 |
+
<div className={`w-10 h-10 sm:w-12 sm:h-12 bg-gradient-to-br ${p.accent} rounded-xl flex items-center justify-center text-xl sm:text-2xl shadow-lg flex-shrink-0`}>
|
|
|
|
|
|
|
| 375 |
{p.icon}
|
| 376 |
</div>
|
| 377 |
+
<span className={`text-xs font-medium px-2.5 py-1 rounded-full text-right ${
|
| 378 |
+
dark ? "text-slate-500 bg-white/5" : "text-slate-400 bg-slate-100"}`}>
|
| 379 |
{p.subtitle}
|
| 380 |
</span>
|
| 381 |
</div>
|
| 382 |
|
| 383 |
<div className="flex-1">
|
| 384 |
+
<h3 className={`font-bold text-sm sm:text-base mb-1.5 sm:mb-2 ${txt}`}>{p.title}</h3>
|
| 385 |
+
<p className={`text-xs sm:text-sm leading-relaxed ${muted}`}>{p.desc}</p>
|
| 386 |
</div>
|
| 387 |
|
| 388 |
+
<div className={`flex flex-wrap gap-1.5 sm:gap-2 pt-2 border-t ${dark ? "border-white/5" : "border-slate-100"}`}>
|
| 389 |
{p.tags.map((t) => (
|
| 390 |
+
<span key={t}
|
| 391 |
+
className={`text-xs px-2 sm:px-2.5 py-0.5 sm:py-1 rounded-full bg-gradient-to-r ${p.accent} text-white border border-white/10 opacity-80`}>
|
|
|
|
|
|
|
| 392 |
{t}
|
| 393 |
</span>
|
| 394 |
))}
|
| 395 |
</div>
|
| 396 |
|
| 397 |
{"live" in p && p.live && (
|
| 398 |
+
<a href={p.live} target="_blank" rel="noopener noreferrer"
|
| 399 |
+
className={`flex items-center justify-center gap-2 bg-gradient-to-r ${p.accent} text-white text-xs font-bold py-2 px-4 rounded-xl hover:opacity-90 transition-all duration-200 hover:scale-105 shadow-md`}>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 400 |
🚀 Live Demo
|
| 401 |
</a>
|
| 402 |
)}
|
|
|
|
| 406 |
</div>
|
| 407 |
</section>
|
| 408 |
|
| 409 |
+
{/* ══════════════════════════════════
|
| 410 |
EDUCATION
|
| 411 |
+
══════════════════════════════════ */}
|
| 412 |
+
<section id="education" className="py-16 sm:py-24 px-4 sm:px-6">
|
| 413 |
<div className="max-w-6xl mx-auto">
|
| 414 |
+
<SectionHeader eyebrow="My background" title="Education"
|
| 415 |
+
sub="Continuous learning in cutting-edge technologies" dark={dark} />
|
| 416 |
+
<div className="max-w-3xl mx-auto flex flex-col gap-4 sm:gap-5">
|
|
|
|
|
|
|
|
|
|
| 417 |
{[
|
| 418 |
{
|
| 419 |
+
icon: "🎓", degree: "Governor House Initiative", field: "GenAI, Web3 & Metaverse",
|
| 420 |
+
year: "2023 – Present", accent: "from-amber-500 to-orange-500",
|
|
|
|
|
|
|
| 421 |
desc: "Intensive government-backed program covering Generative AI, Web3 technologies, Metaverse development, and modern engineering practices.",
|
|
|
|
| 422 |
},
|
| 423 |
{
|
| 424 |
+
icon: "📚", degree: "Crescent Grammar School", field: "Matriculation",
|
| 425 |
+
year: "Completed", accent: "from-blue-500 to-cyan-500",
|
|
|
|
|
|
|
| 426 |
desc: "Foundation education building analytical thinking and problem-solving skills.",
|
|
|
|
| 427 |
},
|
| 428 |
].map((e, i) => (
|
| 429 |
+
<div key={e.degree}
|
| 430 |
+
className={`border rounded-2xl p-4 sm:p-6 card-hover flex gap-4 sm:gap-5 animate-fade-up ${card}`}
|
| 431 |
+
style={{ animationDelay: `${i * 0.15}s` }}>
|
| 432 |
+
<div className={`w-12 h-12 sm:w-14 sm:h-14 bg-gradient-to-br ${e.accent} rounded-xl flex items-center justify-center text-xl sm:text-2xl flex-shrink-0 shadow-lg`}>
|
|
|
|
|
|
|
| 433 |
{e.icon}
|
| 434 |
</div>
|
| 435 |
+
<div className="flex-1 min-w-0">
|
| 436 |
<div className="flex items-start justify-between flex-wrap gap-2 mb-1">
|
| 437 |
+
<h3 className={`font-bold text-sm sm:text-base ${txt}`}>{e.degree}</h3>
|
| 438 |
+
<span className="text-xs text-amber-400 font-semibold bg-amber-500/10 border border-amber-500/20 px-2.5 py-0.5 rounded-full flex-shrink-0">
|
| 439 |
{e.year}
|
| 440 |
</span>
|
| 441 |
</div>
|
| 442 |
+
<p className={`text-xs sm:text-sm font-semibold bg-gradient-to-r ${e.accent} bg-clip-text text-transparent mb-1.5`}>{e.field}</p>
|
| 443 |
+
<p className={`text-xs sm:text-sm leading-relaxed ${muted}`}>{e.desc}</p>
|
|
|
|
|
|
|
| 444 |
</div>
|
| 445 |
</div>
|
| 446 |
))}
|
|
|
|
| 448 |
</div>
|
| 449 |
</section>
|
| 450 |
|
| 451 |
+
{/* ══════════════════════════════════
|
| 452 |
CONTACT
|
| 453 |
+
══════════════════════════════════ */}
|
| 454 |
+
<section id="contact" className="py-16 sm:py-24 px-4 sm:px-6 relative">
|
| 455 |
+
{dark && <div className="absolute inset-0 bg-gradient-to-t from-blue-950/30 to-transparent pointer-events-none" />}
|
| 456 |
<div className="max-w-6xl mx-auto">
|
| 457 |
+
<SectionHeader eyebrow="Let's connect" title="Get In Touch"
|
| 458 |
+
sub="Open to collaborations, freelance projects, and full-time opportunities" dark={dark} />
|
|
|
|
|
|
|
|
|
|
| 459 |
<div className="max-w-2xl mx-auto">
|
| 460 |
+
<div className={`border rounded-3xl p-6 sm:p-8 md:p-12 text-center animate-fade-up ${card}`}>
|
| 461 |
+
<p className={`text-sm sm:text-base leading-relaxed mb-8 sm:mb-10 max-w-lg mx-auto ${muted}`}>
|
| 462 |
+
Whether you need an <span className="text-amber-400 font-semibold">AI automation system</span>,
|
|
|
|
| 463 |
a full-stack web app, or a custom agent — I'm ready to build it.
|
|
|
|
| 464 |
</p>
|
| 465 |
|
| 466 |
+
<div className="grid grid-cols-2 sm:grid-cols-4 gap-3 sm:gap-4 mb-8 sm:mb-10">
|
| 467 |
{[
|
| 468 |
{ icon: "✉️", label: "Email", value: "qureshinaveed21@hotmail.com", href: "mailto:qureshinaveed21@hotmail.com" },
|
| 469 |
{ icon: "⌨️", label: "GitHub", value: "naveedtechlab", href: "https://github.com/naveedtechlab" },
|
|
|
|
| 474 |
{ icon: "📘", label: "Facebook", value: "naveedtechlab", href: "https://facebook.com/naveedtechlab" },
|
| 475 |
{ icon: "📍", label: "Location", value: "Karachi, Pakistan", href: "#" },
|
| 476 |
].map((c) => (
|
| 477 |
+
<a key={c.label} href={c.href} target="_blank" rel="noopener noreferrer"
|
| 478 |
+
className={`border rounded-2xl p-3 sm:p-4 flex flex-col items-center gap-1.5 sm:gap-2 transition-all duration-200 hover:scale-105 group hover:border-amber-400/40 ${
|
| 479 |
+
dark ? "border-white/10 hover:bg-white/5" : "border-slate-200 hover:bg-amber-50"}`}>
|
| 480 |
+
<span className="text-xl sm:text-2xl">{c.icon}</span>
|
| 481 |
+
<span className={`text-xs uppercase tracking-widest ${muted}`}>{c.label}</span>
|
| 482 |
+
<span className={`text-xs font-medium group-hover:text-amber-400 transition-colors text-center break-all leading-tight ${txt}`}>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 483 |
{c.value}
|
| 484 |
</span>
|
| 485 |
</a>
|
| 486 |
))}
|
| 487 |
</div>
|
| 488 |
|
| 489 |
+
<a href="mailto:qureshinaveed21@hotmail.com"
|
| 490 |
+
className="inline-flex items-center gap-2 sm:gap-3 bg-gradient-to-r from-amber-500 to-orange-500 hover:from-amber-400 hover:to-orange-400 text-black font-bold px-6 sm:px-8 py-3 sm:py-4 rounded-full transition-all duration-200 hover:scale-105 shadow-xl shadow-amber-500/25 text-sm sm:text-base">
|
|
|
|
|
|
|
| 491 |
✉️ Send Me an Email
|
| 492 |
</a>
|
| 493 |
</div>
|
|
|
|
| 495 |
</div>
|
| 496 |
</section>
|
| 497 |
|
| 498 |
+
{/* FOOTER */}
|
| 499 |
+
<footer className={`border-t py-6 sm:py-8 px-4 sm:px-6 text-center ${dark ? "border-white/5" : "border-slate-200"}`}>
|
| 500 |
+
<p className={`text-xs sm:text-sm ${muted}`}>
|
| 501 |
+
© 2026 <span className="text-amber-400 font-semibold">Muhammad Naveed</span> · Built with Next.js & Tailwind CSS
|
|
|
|
|
|
|
| 502 |
</p>
|
| 503 |
</footer>
|
| 504 |
+
</div>
|
| 505 |
);
|
| 506 |
}
|
| 507 |
|
| 508 |
/* ─── SECTION HEADER ────────────────────────────────────────── */
|
| 509 |
+
function SectionHeader({ eyebrow, title, sub, dark }: {
|
| 510 |
+
eyebrow: string; title: string; sub: string; dark: boolean;
|
| 511 |
+
}) {
|
| 512 |
return (
|
| 513 |
+
<div className="text-center mb-10 sm:mb-14 animate-fade-up">
|
| 514 |
+
<span className="inline-block text-amber-400 text-xs font-bold tracking-widest uppercase bg-amber-500/10 border border-amber-500/20 px-4 py-1.5 rounded-full mb-3 sm:mb-4">
|
| 515 |
+
{eyebrow}
|
| 516 |
+
</span>
|
| 517 |
+
<h2 className={`text-2xl sm:text-3xl md:text-4xl font-extrabold mb-2 sm:mb-3 ${dark ? "text-white" : "text-slate-900"}`}>
|
| 518 |
+
{title}
|
| 519 |
+
</h2>
|
| 520 |
+
<p className={`text-sm sm:text-base max-w-xl mx-auto ${dark ? "text-slate-400" : "text-slate-500"}`}>{sub}</p>
|
| 521 |
</div>
|
| 522 |
);
|
| 523 |
}
|