From e2dda4f0865211c42383021e76165afb8d64b3d8 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sun, 15 Mar 2026 13:17:10 +0100 Subject: [PATCH 1/7] Updated title --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 518cf63..ef644ec 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - portfolio + Selimaj.dev | Klesti Selimaj
From 447584c4d7cb4362db6e974394b74feadc4e1f52 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sun, 15 Mar 2026 13:39:22 +0100 Subject: [PATCH 2/7] Email Me --- src/components/AboutSection.tsx | 6 ++---- src/components/ContactSection.tsx | 14 +++++++------- src/components/HeroSection.tsx | 2 +- src/components/ProjectsSection.tsx | 4 +--- 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/components/AboutSection.tsx b/src/components/AboutSection.tsx index 53009e1..d6acf6f 100644 --- a/src/components/AboutSection.tsx +++ b/src/components/AboutSection.tsx @@ -58,9 +58,7 @@ export default function AboutSection() { {/* Left: Text */}

- Building the future, -
- one commit at a time. + Building the future, one commit at a time.

- uid=1000(klesti) groups=dev,entrepreneur + uid=1000(klesti) groups=ORUS,Axiom,Saturn,Nexa
diff --git a/src/components/ContactSection.tsx b/src/components/ContactSection.tsx index 162cecb..f028b87 100644 --- a/src/components/ContactSection.tsx +++ b/src/components/ContactSection.tsx @@ -5,7 +5,7 @@ */ import { useEffect, useRef } from "react"; -import { Github, Youtube, Instagram, ExternalLink, Mail } from "lucide-react"; +import { Github, Youtube, Instagram, ExternalLink, Mail, MailIcon } from "lucide-react"; function useReveal(threshold = 0.1) { const ref = useRef(null); @@ -33,7 +33,7 @@ const contactLinks = [ label: "GitHub", handle: "@selimaj-dev", href: "https://github.com/selimaj-dev", - description: "35+ repositories · 2,670 contributions/year", + description: "97+ repositories · 2,670 contributions/year", }, { icon: Youtube, @@ -50,11 +50,11 @@ const contactLinks = [ description: "Behind the scenes and updates", }, { - icon: ExternalLink, - label: "Website", - handle: "selimaj.dev", - href: "https://selimaj.dev", - description: "You're already here!", + icon: MailIcon, + label: "Email", + handle: "contact@selimaj.dev", + href: "mailto:contact@selimaj.dev", + description: "For business inquiries, collaborations, and contact", }, ]; diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx index c2f436b..d36c00d 100644 --- a/src/components/HeroSection.tsx +++ b/src/components/HeroSection.tsx @@ -140,7 +140,7 @@ export default function HeroSection() {
{[ { value: "6+", label: "Years Experience" }, - { value: "35+", label: "Repositories" }, + { value: "97+", label: "Repositories" }, { value: "2,670+", label: "Contributions / Year" }, { value: "#2", label: "National GitHub user" }, ].map((stat) => ( diff --git a/src/components/ProjectsSection.tsx b/src/components/ProjectsSection.tsx index 430bcfe..18e05d0 100644 --- a/src/components/ProjectsSection.tsx +++ b/src/components/ProjectsSection.tsx @@ -244,9 +244,7 @@ export default function ProjectsSection() {
> ls projects/

- Things I've -
- Built + Things I've Built

Date: Sun, 15 Mar 2026 13:53:27 +0100 Subject: [PATCH 3/7] updated projects --- src/components/ProjectsSection.tsx | 77 +++++++++++++++++++----------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/src/components/ProjectsSection.tsx b/src/components/ProjectsSection.tsx index 18e05d0..29fb98c 100644 --- a/src/components/ProjectsSection.tsx +++ b/src/components/ProjectsSection.tsx @@ -19,7 +19,7 @@ function useReveal(threshold = 0.1) { observer.disconnect(); } }, - { threshold } + { threshold }, ); observer.observe(el); return () => observer.disconnect(); @@ -53,7 +53,8 @@ const projects: Project[] = [ { name: "osui", org: "osui-rs", - description: "A TUI library written in Rust — build terminal UIs with a component-based approach.", + description: + "A TUI library written in Rust — build terminal UIs with a component-based approach.", language: "Rust", stars: 7, href: "https://github.com/osui-rs/osui", @@ -63,7 +64,8 @@ const projects: Project[] = [ { name: "saturnclient", org: "saturnclientmc", - description: "Saturn Client — a Minecraft client full of customizability and free cosmetics.", + description: + "Saturn Client — a Minecraft client full of customizability and free cosmetics.", language: "Java", stars: 7, forks: 2, @@ -74,7 +76,8 @@ const projects: Project[] = [ { name: "dev-run", org: "orus-dev", - description: "DevRun — a community-driven competitive programming platform inspired by speedrunning.", + description: + "DevRun — a community-driven competitive programming platform inspired by speedrunning.", language: "TypeScript", stars: 3, href: "https://github.com/orus-dev/dev-run", @@ -82,19 +85,21 @@ const projects: Project[] = [ tag: "Platform", }, { - name: "linear-linux", - description: "Linux support for linear.app — bringing the popular project management tool to Linux.", - language: "JavaScript", - stars: 27, - forks: 5, - href: "https://github.com/selimaj-dev/linear-linux", + name: "nexa-trade", + org: "nexa-sol", + description: + "The Solana trading terminal supercharged by AI — trade smarter.", + language: "TypeScript", + stars: 1, + href: "https://github.com/nexa-sol/nexa-trade", featured: true, - tag: "Tool", + tag: "FinTech", }, { name: "dockship", org: "orus-dev", - description: "A powerful self-hosted deployment platform for managing your applications.", + description: + "A powerful self-hosted deployment platform for managing your applications.", language: "TypeScript", stars: 1, href: "https://github.com/orus-dev/dockship", @@ -110,13 +115,14 @@ const projects: Project[] = [ tag: "App", }, { - name: "nexa-trade", - org: "nexa-sol", - description: "The Solana trading terminal supercharged by AI — trade smarter.", - language: "TypeScript", - stars: 1, - href: "https://github.com/nexa-sol/nexa-trade", - tag: "FinTech", + name: "linear-linux", + description: + "Linux support for linear.app — bringing the popular project management tool to Linux.", + language: "JavaScript", + stars: 27, + forks: 5, + href: "https://github.com/selimaj-dev/linear-linux", + tag: "Tool", }, { name: "osmium", @@ -128,7 +134,8 @@ const projects: Project[] = [ }, { name: "spark", - description: "AI documentation generator that takes context from your repository's source code.", + description: + "AI documentation generator that takes context from your repository's source code.", language: "Python", stars: 2, href: "https://github.com/selimaj-dev/spark", @@ -136,7 +143,8 @@ const projects: Project[] = [ }, { name: "flux", - description: "A tool and library for using multiple languages in one codebase seamlessly.", + description: + "A tool and library for using multiple languages in one codebase seamlessly.", language: "Rust", stars: 1, href: "https://github.com/selimaj-dev/flux", @@ -206,10 +214,7 @@ function ProjectCard({ project, delay }: { project: Project; delay: number }) { {/* Footer */}
- + {project.language} @@ -235,7 +240,11 @@ export default function ProjectsSection() { const rest = projects.filter((p) => !p.featured); return ( -
+
@@ -262,15 +271,25 @@ export default function ProjectsSection() {
// featured
{featured.map((project, i) => ( - + ))}
{/* Rest of projects (smaller grid) */} -
// more projects
+
+ // more projects +
{rest.map((project, i) => ( - + ))}
From 32776684bfcd232f566e887161190cf604f4dcef Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sun, 15 Mar 2026 13:54:59 +0100 Subject: [PATCH 4/7] Removed tailwind warnings --- src/components/AboutSection.tsx | 2 +- src/components/ContactSection.tsx | 2 +- src/components/ErrorBoundary.tsx | 4 ++-- src/components/HeroSection.tsx | 8 ++++---- src/components/ProjectsSection.tsx | 2 +- src/components/SkillsSection.tsx | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/components/AboutSection.tsx b/src/components/AboutSection.tsx index d6acf6f..16e4c67 100644 --- a/src/components/AboutSection.tsx +++ b/src/components/AboutSection.tsx @@ -48,7 +48,7 @@ export default function AboutSection() { style={{ background: "#080808" }} > {/* Subtle top border */} -
+
{/* Section label */} diff --git a/src/components/ContactSection.tsx b/src/components/ContactSection.tsx index f028b87..8e5d73b 100644 --- a/src/components/ContactSection.tsx +++ b/src/components/ContactSection.tsx @@ -64,7 +64,7 @@ export default function ContactSection() { return (
-
+
{/* Subtle radial glow */}
{

An unexpected error occurred.

diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx index d36c00d..000f583 100644 --- a/src/components/HeroSection.tsx +++ b/src/components/HeroSection.tsx @@ -63,12 +63,12 @@ export default function HeroSection() { /> {/* Gradient overlays */} -
-
+
+
{/* Animated glow orb */}
-
+
scroll
diff --git a/src/components/ProjectsSection.tsx b/src/components/ProjectsSection.tsx index 29fb98c..cb5ca46 100644 --- a/src/components/ProjectsSection.tsx +++ b/src/components/ProjectsSection.tsx @@ -245,7 +245,7 @@ export default function ProjectsSection() { className="py-32 relative" style={{ background: "#080808" }} > -
+
{/* Header */} diff --git a/src/components/SkillsSection.tsx b/src/components/SkillsSection.tsx index 202b8be..711cd87 100644 --- a/src/components/SkillsSection.tsx +++ b/src/components/SkillsSection.tsx @@ -120,7 +120,7 @@ export default function SkillsSection() { className="py-32 relative" style={{ background: "#080808" }} > -
+
{/* Header */} From 0ba5c9f35c3db1c5d09300b5347168cf596682de Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sun, 15 Mar 2026 14:00:53 +0100 Subject: [PATCH 5/7] Removed unused ui components --- src/components/ui/accordion.tsx | 64 --- src/components/ui/alert-dialog.tsx | 155 ------ src/components/ui/alert.tsx | 66 --- src/components/ui/aspect-ratio.tsx | 9 - src/components/ui/avatar.tsx | 51 -- src/components/ui/badge.tsx | 46 -- src/components/ui/breadcrumb.tsx | 109 ---- src/components/ui/button-group.tsx | 83 --- src/components/ui/calendar.tsx | 211 -------- src/components/ui/carousel.tsx | 239 --------- src/components/ui/chart.tsx | 355 ------------- src/components/ui/checkbox.tsx | 30 -- src/components/ui/collapsible.tsx | 31 -- src/components/ui/command.tsx | 184 ------- src/components/ui/context-menu.tsx | 250 --------- src/components/ui/dialog.tsx | 209 -------- src/components/ui/drawer.tsx | 133 ----- src/components/ui/dropdown-menu.tsx | 255 --------- src/components/ui/empty.tsx | 104 ---- src/components/ui/field.tsx | 242 --------- src/components/ui/form.tsx | 168 ------ src/components/ui/hover-card.tsx | 42 -- src/components/ui/input-group.tsx | 168 ------ src/components/ui/input-otp.tsx | 75 --- src/components/ui/input.tsx | 70 --- src/components/ui/item.tsx | 193 ------- src/components/ui/kbd.tsx | 28 - src/components/ui/label.tsx | 22 - src/components/ui/menubar.tsx | 274 ---------- src/components/ui/navigation-menu.tsx | 168 ------ src/components/ui/pagination.tsx | 127 ----- src/components/ui/popover.tsx | 46 -- src/components/ui/progress.tsx | 29 - src/components/ui/radio-group.tsx | 43 -- src/components/ui/resizable.tsx | 54 -- src/components/ui/scroll-area.tsx | 56 -- src/components/ui/select.tsx | 185 ------- src/components/ui/separator.tsx | 26 - src/components/ui/sheet.tsx | 139 ----- src/components/ui/sidebar.tsx | 734 -------------------------- src/components/ui/skeleton.tsx | 13 - src/components/ui/slider.tsx | 61 --- src/components/ui/spinner.tsx | 16 - src/components/ui/switch.tsx | 29 - src/components/ui/table.tsx | 114 ---- src/components/ui/tabs.tsx | 64 --- src/components/ui/textarea.tsx | 67 --- src/components/ui/toggle-group.tsx | 73 --- src/components/ui/toggle.tsx | 45 -- 49 files changed, 5955 deletions(-) delete mode 100644 src/components/ui/accordion.tsx delete mode 100644 src/components/ui/alert-dialog.tsx delete mode 100644 src/components/ui/alert.tsx delete mode 100644 src/components/ui/aspect-ratio.tsx delete mode 100644 src/components/ui/avatar.tsx delete mode 100644 src/components/ui/badge.tsx delete mode 100644 src/components/ui/breadcrumb.tsx delete mode 100644 src/components/ui/button-group.tsx delete mode 100644 src/components/ui/calendar.tsx delete mode 100644 src/components/ui/carousel.tsx delete mode 100644 src/components/ui/chart.tsx delete mode 100644 src/components/ui/checkbox.tsx delete mode 100644 src/components/ui/collapsible.tsx delete mode 100644 src/components/ui/command.tsx delete mode 100644 src/components/ui/context-menu.tsx delete mode 100644 src/components/ui/dialog.tsx delete mode 100644 src/components/ui/drawer.tsx delete mode 100644 src/components/ui/dropdown-menu.tsx delete mode 100644 src/components/ui/empty.tsx delete mode 100644 src/components/ui/field.tsx delete mode 100644 src/components/ui/form.tsx delete mode 100644 src/components/ui/hover-card.tsx delete mode 100644 src/components/ui/input-group.tsx delete mode 100644 src/components/ui/input-otp.tsx delete mode 100644 src/components/ui/input.tsx delete mode 100644 src/components/ui/item.tsx delete mode 100644 src/components/ui/kbd.tsx delete mode 100644 src/components/ui/label.tsx delete mode 100644 src/components/ui/menubar.tsx delete mode 100644 src/components/ui/navigation-menu.tsx delete mode 100644 src/components/ui/pagination.tsx delete mode 100644 src/components/ui/popover.tsx delete mode 100644 src/components/ui/progress.tsx delete mode 100644 src/components/ui/radio-group.tsx delete mode 100644 src/components/ui/resizable.tsx delete mode 100644 src/components/ui/scroll-area.tsx delete mode 100644 src/components/ui/select.tsx delete mode 100644 src/components/ui/separator.tsx delete mode 100644 src/components/ui/sheet.tsx delete mode 100644 src/components/ui/sidebar.tsx delete mode 100644 src/components/ui/skeleton.tsx delete mode 100644 src/components/ui/slider.tsx delete mode 100644 src/components/ui/spinner.tsx delete mode 100644 src/components/ui/switch.tsx delete mode 100644 src/components/ui/table.tsx delete mode 100644 src/components/ui/tabs.tsx delete mode 100644 src/components/ui/textarea.tsx delete mode 100644 src/components/ui/toggle-group.tsx delete mode 100644 src/components/ui/toggle.tsx diff --git a/src/components/ui/accordion.tsx b/src/components/ui/accordion.tsx deleted file mode 100644 index 62705e3..0000000 --- a/src/components/ui/accordion.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import * as React from "react"; -import * as AccordionPrimitive from "@radix-ui/react-accordion"; -import { ChevronDownIcon } from "lucide-react"; - -import { cn } from "@/lib/utils"; - -function Accordion({ - ...props -}: React.ComponentProps) { - return ; -} - -function AccordionItem({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AccordionTrigger({ - className, - children, - ...props -}: React.ComponentProps) { - return ( - - svg]:rotate-180", - className - )} - {...props} - > - {children} - - - - ); -} - -function AccordionContent({ - className, - children, - ...props -}: React.ComponentProps) { - return ( - -
{children}
-
- ); -} - -export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }; diff --git a/src/components/ui/alert-dialog.tsx b/src/components/ui/alert-dialog.tsx deleted file mode 100644 index 6949979..0000000 --- a/src/components/ui/alert-dialog.tsx +++ /dev/null @@ -1,155 +0,0 @@ -import * as React from "react"; -import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; - -import { cn } from "@/lib/utils"; -import { buttonVariants } from "@/components/ui/button"; - -function AlertDialog({ - ...props -}: React.ComponentProps) { - return ; -} - -function AlertDialogTrigger({ - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogPortal({ - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogOverlay({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogContent({ - className, - ...props -}: React.ComponentProps) { - return ( - - - - - ); -} - -function AlertDialogHeader({ - className, - ...props -}: React.ComponentProps<"div">) { - return ( -
- ); -} - -function AlertDialogFooter({ - className, - ...props -}: React.ComponentProps<"div">) { - return ( -
- ); -} - -function AlertDialogTitle({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogDescription({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogAction({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AlertDialogCancel({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -export { - AlertDialog, - AlertDialogPortal, - AlertDialogOverlay, - AlertDialogTrigger, - AlertDialogContent, - AlertDialogHeader, - AlertDialogFooter, - AlertDialogTitle, - AlertDialogDescription, - AlertDialogAction, - AlertDialogCancel, -}; diff --git a/src/components/ui/alert.tsx b/src/components/ui/alert.tsx deleted file mode 100644 index 5b1a0b5..0000000 --- a/src/components/ui/alert.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import * as React from "react"; -import { cva, type VariantProps } from "class-variance-authority"; - -import { cn } from "@/lib/utils"; - -const alertVariants = cva( - "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", - { - variants: { - variant: { - default: "bg-card text-card-foreground", - destructive: - "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90", - }, - }, - defaultVariants: { - variant: "default", - }, - } -); - -function Alert({ - className, - variant, - ...props -}: React.ComponentProps<"div"> & VariantProps) { - return ( -
- ); -} - -function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -function AlertDescription({ - className, - ...props -}: React.ComponentProps<"div">) { - return ( -
- ); -} - -export { Alert, AlertTitle, AlertDescription }; diff --git a/src/components/ui/aspect-ratio.tsx b/src/components/ui/aspect-ratio.tsx deleted file mode 100644 index 01d045d..0000000 --- a/src/components/ui/aspect-ratio.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio"; - -function AspectRatio({ - ...props -}: React.ComponentProps) { - return ; -} - -export { AspectRatio }; diff --git a/src/components/ui/avatar.tsx b/src/components/ui/avatar.tsx deleted file mode 100644 index 02305fd..0000000 --- a/src/components/ui/avatar.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import * as React from "react"; -import * as AvatarPrimitive from "@radix-ui/react-avatar"; - -import { cn } from "@/lib/utils"; - -function Avatar({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AvatarImage({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AvatarFallback({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -export { Avatar, AvatarImage, AvatarFallback }; diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx deleted file mode 100644 index 83750ed..0000000 --- a/src/components/ui/badge.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import * as React from "react"; -import { Slot } from "@radix-ui/react-slot"; -import { cva, type VariantProps } from "class-variance-authority"; - -import { cn } from "@/lib/utils"; - -const badgeVariants = cva( - "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", - { - variants: { - variant: { - default: - "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", - secondary: - "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", - destructive: - "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", - outline: - "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", - }, - }, - defaultVariants: { - variant: "default", - }, - } -); - -function Badge({ - className, - variant, - asChild = false, - ...props -}: React.ComponentProps<"span"> & - VariantProps & { asChild?: boolean }) { - const Comp = asChild ? Slot : "span"; - - return ( - - ); -} - -export { Badge, badgeVariants }; diff --git a/src/components/ui/breadcrumb.tsx b/src/components/ui/breadcrumb.tsx deleted file mode 100644 index 9d88a37..0000000 --- a/src/components/ui/breadcrumb.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import * as React from "react"; -import { Slot } from "@radix-ui/react-slot"; -import { ChevronRight, MoreHorizontal } from "lucide-react"; - -import { cn } from "@/lib/utils"; - -function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { - return