Shaxsiy portfolio. React 18 + Vite + Tailwind CSS + Framer Motion + Lenis + i18next asosida qurilgan. To'liq responsiv, 3 tilli (EN/RU/UZ), editorial (monoxrom + orange aksent) dizayn, yorug'/qorong'u mavzu, silliq scroll va scroll-reveal animatsiyalar.
Rezyume: public/cv-dilshod-bunyodov.pdf — "Download CV" tugmasi shu fayldan yuklab beradi. Ma'lumotlar src/data/*.ts va src/i18n/locales/*.json ichida.
- React 18 + React Router v6 — SPA routing va lazy loading
- Vite 5 — bir necha yuz millisekundlik dev start
- Tailwind CSS 3 — custom theme (ranglar, animatsiyalar, gradientlar)
- Framer Motion — scroll-reveal, parallax va page transition animatsiyalari
- Lenis — silliq (smooth) scroll
- GSAP ScrollTrigger — scrub manifest matni, pinned gorizontal loyihalar, scroll tezligiga bog'liq marquee
- Three.js — hero fonidagi sichqoncha va scroll'ga javob beradigan nuqtali to'lqin maydoni (
HeroField.tsx, lazy yuklanadi) - i18next — EN / RU / UZ tarjimalar (localStorage'da saqlanadi)
- Lucide React — modular ikonalar
src/
├── components/
│ ├── layout/ (Navbar, Footer, LanguageSwitcher, ThemeToggle)
│ ├── sections/ (Hero, About, Experience, Projects, Skills, Education, Contact, SectionShell)
│ └── utils/ (Reveal, Marquee, SmoothScroll, ScrollProgress, ScrollToTop, Loader)
├── data/ (skills, experience, projects, education, blog, socials)
├── hooks/ (useCountUp, useActiveSection)
├── lib/ (scroll.ts — Lenis helper)
├── i18n/
│ ├── index.js
│ └── locales/ (en.json, ru.json, uz.json)
├── pages/ (Home, BlogList, BlogPost, NotFound)
├── styles/index.css
├── App.jsx
└── main.jsx
npm install # paketlarni o'rnatish
npm run dev # dev server: http://localhost:5173
npm run build # production build → dist/
npm run preview # build'ni lokal serverda ko'rish- GitHub'da repo yarating va push qiling:
git init git add . git commit -m "Initial commit" git branch -M main git remote add origin https://github.com/<sizning-username>/portfolio.git git push -u origin main
- vercel.com ga GitHub bilan kirib, "Import Project" → repo'ni tanlang.
- Vercel Vite'ni avtomatik aniqlaydi. Faqat Deploy ni bosing.
- Settings → Domains → o'z domeningizni qo'shing (masalan,
dilshod.dev). - Domain provider'da DNS sozlamalarini Vercel ko'rsatgan A/CNAME yozuvlariga moslang.
- GitHub repo'ni Netlify'ga ulang.
- Build command:
npm run build· Publish directory:dist - SPA routing uchun loyiha ildiziga
public/_redirectsyarating:/* /index.html 200
Agar sizda DigitalOcean, Hetzner, Hostinger VPS yoki shunga o'xshash serveringiz bo'lsa:
npm run build
# dist/ papkasi yaratiladiscp -r dist/* user@your-server-ip:/var/www/portfolioServer'da /etc/nginx/sites-available/portfolio faylini yarating:
server {
listen 80;
server_name dilshod.dev www.dilshod.dev;
root /var/www/portfolio;
index index.html;
# SPA fallback — barcha route'lar index.html'ga
location / {
try_files $uri $uri/ /index.html;
}
# Static assets — uzoq kesh
location /assets/ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# Gzip
gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;
gzip_min_length 1000;
}Saytni aktivlashtirish:
sudo ln -s /etc/nginx/sites-available/portfolio /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxsudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d dilshod.dev -d www.dilshod.devDomain panelida (GoDaddy, Namecheap, Cloudflare):
- A record:
@→ server IP - A record:
www→ server IP
DNS yangilanishi 5–60 daqiqa olishi mumkin.
| Provider | Narx (.com) | Plyuslari |
|---|---|---|
| Namecheap | $9-12/yil | Arzon, WhoisGuard bepul |
| Cloudflare | $9.15/yil | Eng arzon, DNS tez |
| GoDaddy | $12-20/yil | Mashhur lekin qimmatroq |
| Porkbun | $9/yil | Yaxshi DX |
Boshqa domain zonalari: .dev ($12), .io ($35), .me ($20), .uz (~$30/yil, uznic.uz)
- Ijtimoiy tarmoq linklari →
src/data/socials.js - Skill'lar →
src/data/skills.js - Ish tajribasi →
src/data/experience.js+src/i18n/locales/*.json(jobs) - Loyihalar →
src/data/projects.js+ tarjimalar - Blog postlari →
src/data/blog.js+ tarjimalar - CV PDF →
public/cv-dilshod-bunyodov.pdf(qo'shishingiz kerak)
index.html da og:image, og:url, va kanonik URL qo'shing. Domain olganingizdan keyin og:url ni yangilang.
Vercel Analytics yoki Plausible / Umami qo'shing — index.html ga script teg sifatida.
Production build (gzipped):
- HTML: 0.75 KB
- CSS: 7 KB
- JS jami: ~140 KB (react + i18n + motion + app)
- Code splitting: route'lar va vendor chunk'lar alohida yuklanadi
MIT — bemalol ishlatishingiz, modify qilishingiz mumkin.