apps.tsx
Web applications
Production React + TypeScript apps — e-commerce storefronts, CMS dashboards and internal business tools used at scale.
Frontend Developer @ Gjirafa Inc.
Frontend developer working with React, Next.js and TypeScript — shipping e-commerce storefronts, CMS dashboards and internal tools that run real operations every day.
src/components/Developer.tsx
live// click any value to edit the props ↓
<Developer
name="Hajrije Berisha"
role=
accent=" #ff4191"
stack={[, , , , ]}
compact={}
/>Preview

Hajrije Berisha
Frontend Developer
01 // about
So I care about how it feels: fast, accessible, predictable — and built on code the next developer can extend without fear.
I'm Hajrije Berisha, a frontend developer at Gjirafa Inc. in Prishtina. I work across a large e-commerce marketplace, its merchant dashboard, a headless CMS and a set of internal business tools.
The work I'm proudest of is unglamorous: taking a fragile internal Finance tool, moving its data layer to TanStack Query + Axios, restructuring it into feature-based modules, fixing its authentication — and then shipping new features on top without things breaking.
Outside of work I build things like AlgoArena, an interactive algorithm visualiser, because animation and state are more fun to learn when you can see them.
apps.tsx
Production React + TypeScript apps — e-commerce storefronts, CMS dashboards and internal business tools used at scale.
tables.tsx
Filterable tables, multi-step forms, detail views and admin dashboards that handle real operational complexity.
architecture.ts
Feature-based folder structure and data layers on TanStack Query + Axios — caching, loading and error states done once, properly.
auth.ts
REST integration with sane token handling, protected routes and role-based access across every view.
02 // work
Production products I've built features for at Gjirafa, plus things I build on my own.
03 // experience
git log --oneline --graph, more or less.
2024 – Present
2021 – 2024
2023-2024
04 // stack
The tools I reach for, written the way I'd read them.
{
"name": "hajrije",
"role": "frontend developer",
// what I ship with every day
"dependencies": {
"react": "latest",
"next": "latest",
"typescript": "latest",
"javascript": "latest",
"tailwindcss": "latest",
"framer-motion": "latest",
"@tanstack/react-query": "latest",
"axios": "latest"
},
// comfortable on the other side of the API
"alsoWorkedWith": {
"node": "latest",
"express": "latest",
"mongodb": "latest",
"asp.net-mvc": "latest",
"razor-pages": "latest",
"rest-apis": "latest"
},
// tooling
"devDependencies": {
"git": "latest",
"github": "latest",
"figma": "latest",
"postman": "latest",
"vite": "latest",
"webstorm": "latest",
"vercel": "latest",
"azure": "latest"
},
// the part that doesn't compile
"soft": {
"communication": "latest",
"problem-solving": "latest",
"teamwork": "latest",
"feature-ownership": "latest"
}
}TanStack Query for server state, so caching, refetching and loading/error states live in one place instead of every component.
Feature-based folders — components, hooks, services and types grouped by domain — so a feature can be found, changed or deleted in one go.
Tailwind and design-system components for consistency; Framer Motion when movement helps someone understand what just changed.
Next.js App Router, React 19, TypeScript, Tailwind CSS 4 and Framer Motion — no UI kit, no template.
05 // contact
Hiring for a frontend role, or have a product that needs a careful UI? Send a message — it goes straight to my inbox.
await fetch("/api/contact", {
method: "POST",
body: JSON.stringify({
name: "",
email: "",
message: "",
}),
});// ready