+49
-31
@@ -21,18 +21,19 @@ import {
|
|||||||
SiPython,
|
SiPython,
|
||||||
SiDocker,
|
SiDocker,
|
||||||
SiLinux,
|
SiLinux,
|
||||||
|
SiX,
|
||||||
} from "@icons-pack/react-simple-icons";
|
} from "@icons-pack/react-simple-icons";
|
||||||
import { motion } from "motion/react";
|
import { motion } from "motion/react";
|
||||||
import {
|
import {
|
||||||
staggerContainer,
|
staggerContainer,
|
||||||
fadeInUp,
|
fadeInUp,
|
||||||
fadeIn,
|
|
||||||
cardReveal,
|
cardReveal,
|
||||||
timelineItemLeft,
|
timelineItemLeft,
|
||||||
timelineItemRight,
|
timelineItemRight,
|
||||||
slowFloat,
|
slowFloat,
|
||||||
} from "@/lib/animations";
|
} from "@/lib/animations";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
|
import { ComponentType, SVGProps } from "react";
|
||||||
|
|
||||||
const timeline = [
|
const timeline = [
|
||||||
{
|
{
|
||||||
@@ -72,16 +73,31 @@ const timeline = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
export default function About() {
|
const socialLinks: [
|
||||||
const techStack = [
|
string,
|
||||||
{ name: "Rust", icon: <SiRust />, color: "text-orange-500" },
|
React.ComponentType<React.SVGProps<SVGSVGElement>>,
|
||||||
{ name: "TypeScript", icon: <SiTypescript />, color: "text-blue-500" },
|
][] = [
|
||||||
{ name: "React", icon: <SiReact />, color: "text-cyan-500" },
|
["https://github.com/selimaj-dev", Github],
|
||||||
{ name: "Go", icon: <SiGo />, color: "text-cyan-400" },
|
["https://instagram.com/selimaj.dev", Instagram],
|
||||||
{ name: "Python", icon: <SiPython />, color: "text-yellow-500" },
|
["https://x.com/selimajdev", SiX],
|
||||||
|
["https://www.linkedin.com/in/klesti-selimaj", Linkedin],
|
||||||
|
["https://youtube.com/@0xkleo", Youtube],
|
||||||
|
["https://dev.to/selimaj", ExternalLink],
|
||||||
|
];
|
||||||
|
|
||||||
|
const techStack: {
|
||||||
|
name: string;
|
||||||
|
icon: ComponentType<SVGProps<SVGSVGElement>>;
|
||||||
|
color: string;
|
||||||
|
}[] = [
|
||||||
|
{ name: "Rust", icon: SiRust, color: "text-orange-500" },
|
||||||
|
{ name: "TypeScript", icon: SiTypescript, color: "text-blue-500" },
|
||||||
|
{ name: "React", icon: SiReact, color: "text-cyan-500" },
|
||||||
|
{ name: "Go", icon: SiGo, color: "text-cyan-400" },
|
||||||
|
{ name: "Python", icon: SiPython, color: "text-yellow-500" },
|
||||||
{
|
{
|
||||||
name: "Java",
|
name: "Java",
|
||||||
icon: (
|
icon: () => (
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
width="24"
|
width="24"
|
||||||
@@ -100,37 +116,37 @@ export default function About() {
|
|||||||
),
|
),
|
||||||
color: "text-red-500",
|
color: "text-red-500",
|
||||||
},
|
},
|
||||||
{ name: "Docker", icon: <SiDocker />, color: "text-blue-400" },
|
{ name: "Docker", icon: SiDocker, color: "text-blue-400" },
|
||||||
{ name: "Linux", icon: <SiLinux />, color: "text-yellow-400" },
|
{ name: "Linux", icon: SiLinux, color: "text-yellow-400" },
|
||||||
];
|
];
|
||||||
|
|
||||||
const achievements = [
|
const achievements = [
|
||||||
{
|
{
|
||||||
icon: <Trophy className="w-10 h-10 text-accent mx-auto" />,
|
icon: Trophy,
|
||||||
title: "Top GitHub Contributor in Albania",
|
title: "Top GitHub Contributor in Albania",
|
||||||
description:
|
description:
|
||||||
"Ranked #2 nationally based on commits, contributions, and repository activity.",
|
"Ranked #2 nationally based on commits, contributions, and repository activity.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <Github className="w-10 h-10 text-accent mx-auto" />,
|
icon: Github,
|
||||||
title: "Contributor to 80+ Public Repositories",
|
title: "Contributor to 80+ Public Repositories",
|
||||||
description:
|
description: "Actively contributed code to multiple open-source projects.",
|
||||||
"Actively contributed code, bug fixes, and features to multiple open-source projects.",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <Box className="w-10 h-10 text-accent mx-auto" />,
|
icon: Box,
|
||||||
title: "Built & Deployed 3 Full-Stack Applications",
|
title: "Built & Deployed 3 Full-Stack Applications",
|
||||||
description:
|
description:
|
||||||
"Completed end-to-end development projects using Next.js, React, and TypeScript.",
|
"Completed end-to-end development projects using Next.js, React, and Rust.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <FileText className="w-10 h-10 text-accent mx-auto" />,
|
icon: FileText,
|
||||||
title: "Published Technical Guides & Documentation",
|
title: "Published Technical Guides & Documentation",
|
||||||
description:
|
description:
|
||||||
"Authored clear technical documentation and tutorials in public repositories.",
|
"Authored clear technical documentation and tutorials in public repositories.",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export default function About() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{/* Hero */}
|
{/* Hero */}
|
||||||
@@ -159,14 +175,14 @@ export default function About() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/* Floating badges */}
|
{/* Floating badges */}
|
||||||
<motion.div
|
{/* <motion.div
|
||||||
className="absolute -bottom-4 -right-4 glass-card rounded-xl px-4 py-2 flex items-center gap-2"
|
className="absolute -bottom-4 -right-4 glass-card rounded-xl px-4 py-2 flex items-center gap-2"
|
||||||
variants={fadeInUp}
|
variants={fadeInUp}
|
||||||
transition={{ delay: 0.6, type: "spring" }}
|
transition={{ delay: 0.6, type: "spring" }}
|
||||||
>
|
>
|
||||||
<span className="w-2 h-2 rounded-full bg-accent animate-pulse" />
|
<span className="w-2 h-2 rounded-full bg-accent animate-pulse" />
|
||||||
<span className="text-sm text-foreground">Available</span>
|
<span className="text-sm text-foreground">Available</span>
|
||||||
</motion.div>
|
</motion.div> */}
|
||||||
</div>
|
</div>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
|
|
||||||
@@ -187,8 +203,8 @@ export default function About() {
|
|||||||
className="text-lg text-muted-foreground mb-6"
|
className="text-lg text-muted-foreground mb-6"
|
||||||
>
|
>
|
||||||
A 16-year-old software engineer from Albania with 6+ years of
|
A 16-year-old software engineer from Albania with 6+ years of
|
||||||
experience. I'm passionate about building things that matter,
|
experience. I'm passionate about building low-level systems and
|
||||||
from low-level systems to beautiful user interfaces.
|
beautiful user interfaces.
|
||||||
</motion.p>
|
</motion.p>
|
||||||
<motion.p
|
<motion.p
|
||||||
variants={fadeInUp}
|
variants={fadeInUp}
|
||||||
@@ -225,18 +241,18 @@ export default function About() {
|
|||||||
variants={fadeInUp}
|
variants={fadeInUp}
|
||||||
className="flex items-center gap-4"
|
className="flex items-center gap-4"
|
||||||
>
|
>
|
||||||
{[Github, Linkedin, Youtube, Instagram, ExternalLink].map(
|
{socialLinks.map(([link, Icon], i) => (
|
||||||
(Icon, i) => (
|
|
||||||
<motion.a
|
<motion.a
|
||||||
key={i}
|
key={i}
|
||||||
whileHover={{ y: -4, scale: 1.05 }}
|
whileHover={{ y: -1 }}
|
||||||
whileTap={{ scale: 0.95 }}
|
whileTap={{ scale: 0.95 }}
|
||||||
className="glass-card p-3 rounded-xl hover:ring-1 hover:ring-accent/30 transition-all"
|
className="glass-card p-3 rounded-xl hover:ring-1 hover:ring-accent/30 transition-colors text-foreground hover:text-accent"
|
||||||
|
href={link}
|
||||||
|
target="_blank"
|
||||||
>
|
>
|
||||||
<Icon className="w-5 h-5 text-foreground" />
|
<Icon className="w-5 h-5" />
|
||||||
</motion.a>
|
</motion.a>
|
||||||
),
|
))}
|
||||||
)}
|
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</div>
|
</div>
|
||||||
@@ -273,7 +289,7 @@ export default function About() {
|
|||||||
className="glass-card rounded-2xl p-6 text-center hover-lift group"
|
className="glass-card rounded-2xl p-6 text-center hover-lift group"
|
||||||
>
|
>
|
||||||
<div className={cn("text-4xl mb-3 mx-auto w-max", tech.color)}>
|
<div className={cn("text-4xl mb-3 mx-auto w-max", tech.color)}>
|
||||||
{tech.icon}
|
<tech.icon />
|
||||||
</div>
|
</div>
|
||||||
<h3 className="font-semibold text-foreground group-hover:text-accent transition-colors">
|
<h3 className="font-semibold text-foreground group-hover:text-accent transition-colors">
|
||||||
{tech.name}
|
{tech.name}
|
||||||
@@ -312,7 +328,9 @@ export default function About() {
|
|||||||
variants={cardReveal}
|
variants={cardReveal}
|
||||||
className="glass-card rounded-2xl p-6 text-center hover-lift"
|
className="glass-card rounded-2xl p-6 text-center hover-lift"
|
||||||
>
|
>
|
||||||
<div className="text-4xl mb-4">{achievement.icon}</div>
|
<div className="text-4xl mb-4">
|
||||||
|
<achievement.icon className="w-10 h-10 text-accent mx-auto" />
|
||||||
|
</div>
|
||||||
<h3 className="font-semibold text-foreground mb-2">
|
<h3 className="font-semibold text-foreground mb-2">
|
||||||
{achievement.title}
|
{achievement.title}
|
||||||
</h3>
|
</h3>
|
||||||
|
|||||||
+13
-10
@@ -14,7 +14,7 @@ const plans = [
|
|||||||
{
|
{
|
||||||
name: "Starter",
|
name: "Starter",
|
||||||
description: "Small, clearly defined tasks and improvements",
|
description: "Small, clearly defined tasks and improvements",
|
||||||
price: "$500",
|
price: "$499",
|
||||||
period: "project",
|
period: "project",
|
||||||
icon: Zap,
|
icon: Zap,
|
||||||
features: [
|
features: [
|
||||||
@@ -25,27 +25,27 @@ const plans = [
|
|||||||
"1 revision round",
|
"1 revision round",
|
||||||
"Async communication",
|
"Async communication",
|
||||||
"Source code included",
|
"Source code included",
|
||||||
|
"CLI or TUI applications",
|
||||||
],
|
],
|
||||||
cta: "Get Started",
|
cta: "Contact Me",
|
||||||
popular: false,
|
popular: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Professional",
|
name: "Professional",
|
||||||
description: "Product features, MVPs, and system components",
|
description: "Product features, MVPs, and system components",
|
||||||
price: "$2,000+",
|
price: "$1,999",
|
||||||
period: "project",
|
period: "project",
|
||||||
icon: Crown,
|
icon: Crown,
|
||||||
features: [
|
features: [
|
||||||
"Multi-feature application or system module",
|
"Multi-feature application or system module",
|
||||||
"Backend services or APIs (Rust, Node, etc.)",
|
"Backend services or APIs (Rust, Node, etc.)",
|
||||||
"CLI or TUI applications",
|
|
||||||
"Frontend integration where needed",
|
"Frontend integration where needed",
|
||||||
"Architecture and technical decisions",
|
"Architecture and technical decisions",
|
||||||
"2–3 revision rounds",
|
"2-3 revision rounds",
|
||||||
"Documentation for delivered components",
|
"Documentation for delivered components",
|
||||||
"Performance and reliability considerations",
|
"Performance and reliability considerations",
|
||||||
],
|
],
|
||||||
cta: "Start Project",
|
cta: "Contact Me",
|
||||||
popular: true,
|
popular: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -127,12 +127,15 @@ export default function Pricing() {
|
|||||||
Pricing
|
Pricing
|
||||||
</span>
|
</span>
|
||||||
<h1 className="text-4xl md:text-5xl font-bold text-foreground mt-2 mb-6">
|
<h1 className="text-4xl md:text-5xl font-bold text-foreground mt-2 mb-6">
|
||||||
Transparent Pricing for{" "}
|
Fair Pricing for{" "}
|
||||||
<span className="text-gradient-gold">Premium Quality</span>
|
<span className="text-gradient-gold">Premium Quality</span>
|
||||||
</h1>
|
</h1>
|
||||||
<p className="text-lg text-muted-foreground">
|
<p className="text-lg text-muted-foreground">
|
||||||
Choose a plan that fits your needs. Every project receives the
|
Choose a plan that fits your needs.
|
||||||
same attention to detail and commitment to excellence.
|
</p>
|
||||||
|
|
||||||
|
<p className="mt-3 text-sm text-muted-foreground/80">
|
||||||
|
Payments are accepted in crypto.
|
||||||
</p>
|
</p>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</div>
|
</div>
|
||||||
@@ -280,7 +283,7 @@ export default function Pricing() {
|
|||||||
variants={fadeInUp}
|
variants={fadeInUp}
|
||||||
className="glass-card rounded-2xl p-6 hover-lift group"
|
className="glass-card rounded-2xl p-6 hover-lift group"
|
||||||
>
|
>
|
||||||
<h3 className="text-lg font-semibold text-foreground mb-2 group-hover:text-accent transition-colors">
|
<h3 className="text-lg font-semibold text-foreground mb-2 transition-colors">
|
||||||
{service.title}
|
{service.title}
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-muted-foreground text-sm">
|
<p className="text-muted-foreground text-sm">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { ArrowRight, Github, Linkedin, Youtube } from "lucide-react";
|
import { ArrowRight, Github, Instagram, Linkedin } from "lucide-react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { motion } from "motion/react";
|
import { motion } from "motion/react";
|
||||||
import { staggerContainer, fadeInUp, slowFloat } from "@/lib/animations";
|
import { staggerContainer, fadeInUp, slowFloat } from "@/lib/animations";
|
||||||
@@ -30,26 +30,15 @@ export function HeroSection() {
|
|||||||
className="max-w-4xl mx-auto text-center"
|
className="max-w-4xl mx-auto text-center"
|
||||||
variants={staggerContainer}
|
variants={staggerContainer}
|
||||||
>
|
>
|
||||||
{/* Status Badge */}
|
|
||||||
<motion.div
|
|
||||||
className="inline-flex items-center gap-2 px-4 py-2 rounded-full glass-card mb-8"
|
|
||||||
variants={fadeInUp}
|
|
||||||
>
|
|
||||||
<span className="w-2 h-2 rounded-full bg-accent animate-pulse" />
|
|
||||||
<span className="text-sm text-muted-foreground">
|
|
||||||
Available for new projects
|
|
||||||
</span>
|
|
||||||
</motion.div>
|
|
||||||
|
|
||||||
{/* Main Heading */}
|
{/* Main Heading */}
|
||||||
<motion.h1
|
<motion.h1
|
||||||
className="text-4xl md:text-6xl lg:text-7xl font-bold mb-6"
|
className="text-4xl md:text-6xl lg:text-7xl font-bold mb-6"
|
||||||
variants={fadeInUp}
|
variants={fadeInUp}
|
||||||
>
|
>
|
||||||
<span className="text-foreground">Building</span>{" "}
|
<span className="text-foreground">Building</span>{" "}
|
||||||
<span className="text-gradient-gold">exceptional</span>
|
<span className="text-gradient-gold">powerful</span>
|
||||||
<br />
|
<br />
|
||||||
<span className="text-foreground">digital experiences</span>
|
<span className="text-foreground">digital products</span>
|
||||||
</motion.h1>
|
</motion.h1>
|
||||||
|
|
||||||
{/* Subheading */}
|
{/* Subheading */}
|
||||||
@@ -62,7 +51,7 @@ export function HeroSection() {
|
|||||||
<span className="text-foreground font-medium">Klesti Selimaj</span>,
|
<span className="text-foreground font-medium">Klesti Selimaj</span>,
|
||||||
a 16-year-old software engineer with 6+ years of experience.
|
a 16-year-old software engineer with 6+ years of experience.
|
||||||
Passionate about low-level systems, modern web apps, and crafting
|
Passionate about low-level systems, modern web apps, and crafting
|
||||||
tools that make a difference.
|
tools.
|
||||||
</motion.p>
|
</motion.p>
|
||||||
|
|
||||||
{/* CTA Buttons */}
|
{/* CTA Buttons */}
|
||||||
@@ -79,13 +68,11 @@ export function HeroSection() {
|
|||||||
<ArrowRight className="w-4 h-4 transition-transform group-hover:translate-x-1" />
|
<ArrowRight className="w-4 h-4 transition-transform group-hover:translate-x-1" />
|
||||||
</Link>
|
</Link>
|
||||||
<a
|
<a
|
||||||
href="https://github.com/selimaj-dev"
|
href="/about"
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="flex items-center gap-2 bg-secondary text-secondary-foreground px-8 py-4 rounded-xl font-medium hover:bg-secondary/80 transition-colors"
|
className="flex items-center gap-2 bg-secondary text-secondary-foreground px-8 py-4 rounded-xl font-medium hover:bg-secondary/80 transition-colors"
|
||||||
>
|
>
|
||||||
<Github className="w-4 h-4" />
|
About Me
|
||||||
View GitHub
|
|
||||||
</a>
|
</a>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
|
|
||||||
@@ -104,7 +91,7 @@ export function HeroSection() {
|
|||||||
<Github className="w-5 h-5" />
|
<Github className="w-5 h-5" />
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
href="https://www.linkedin.com/in/klesti-selimaj-7a0162343/"
|
href="https://www.linkedin.com/in/klesti-selimaj-7a0162343"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="text-muted-foreground hover:text-accent transition-colors"
|
className="text-muted-foreground hover:text-accent transition-colors"
|
||||||
@@ -112,12 +99,12 @@ export function HeroSection() {
|
|||||||
<Linkedin className="w-5 h-5" />
|
<Linkedin className="w-5 h-5" />
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
href="https://www.youtube.com/@0xkleo"
|
href="https://www.instagram.com/selimaj.dev"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="text-muted-foreground hover:text-accent transition-colors"
|
className="text-muted-foreground hover:text-accent transition-colors"
|
||||||
>
|
>
|
||||||
<Youtube className="w-5 h-5" />
|
<Instagram className="w-5 h-5" />
|
||||||
</a>
|
</a>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ export function ProjectsSection() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Content */}
|
{/* Content */}
|
||||||
<h3 className="text-xl font-semibold text-foreground mb-2 group-hover:text-accent transition-colors">
|
<h3 className="text-xl font-semibold text-foreground mb-2 transition-colors">
|
||||||
{project.name}
|
{project.name}
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-muted-foreground text-sm mb-4 line-clamp-2">
|
<p className="text-muted-foreground text-sm mb-4 line-clamp-2">
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ export function Footer() {
|
|||||||
</Link>
|
</Link>
|
||||||
<p className="text-muted-foreground text-sm max-w-sm">
|
<p className="text-muted-foreground text-sm max-w-sm">
|
||||||
Building digital experiences with precision and passion.
|
Building digital experiences with precision and passion.
|
||||||
Specializing in low-level systems, modern web applications, and
|
|
||||||
everything in between.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -118,10 +116,10 @@ export function Footer() {
|
|||||||
<p className="text-sm text-muted-foreground">
|
<p className="text-sm text-muted-foreground">
|
||||||
© {currentYear} Klesti Selimaj. All rights reserved.
|
© {currentYear} Klesti Selimaj. All rights reserved.
|
||||||
</p>
|
</p>
|
||||||
<div className="flex items-center gap-2 text-sm text-muted-foreground">
|
{/* <div className="flex items-center gap-2 text-sm text-muted-foreground">
|
||||||
<span className="w-2 h-2 rounded-full bg-accent animate-pulse" />
|
<span className="w-2 h-2 rounded-full bg-accent animate-pulse" />
|
||||||
Available for work
|
Available for work
|
||||||
</div>
|
</div> */}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|||||||
Reference in New Issue
Block a user