17 KiB
Poyraz Portfolio — poyraz-ui v3 Migration Plan
Bu planın amacı poyraz-portfolio projesini poyraz-ui@2.x kullanımından poyraz-ui@3.0.0 kullanımına, mevcut sayfa düzenini ve portfolio kimliğini bozmadan geçirmek.
Öncelik sırası:
- Önce paket geçişi ve build/type güvenliği.
- Sonra mevcut layout davranışını koruma.
- En son görsel polish ve yeni v3 tasarım yeteneklerini kontrollü ekleme.
Not: Bu dokümandaki tasarım iyileştirmeleri v3 geçişinden sonra ayrı küçük fazlara bölünebilir. İlk migration hedefi “çalışan ve görsel olarak kırılmamış portfolio”dur.
Mevcut Durum Özeti
- Proje Next.js
16.1.6, React19.2.3, Tailwind CSS v4 kullanıyor. poyraz-uişu anda npm paketi olarak^2.0.1kullanılıyor.app/globals.cssiçinde@import "poyraz-ui/preset.css";zaten mevcut.- Componentler local registry copy olarak değil, doğrudan paket exportları üzerinden kullanılıyor.
- Aktif poyraz-ui importları şu alanlarda:
poyraz-ui/atomspoyraz-ui/moleculespoyraz-ui/organismspoyraz-ui/themes
Migration için avantajlı nokta: v3 tarafında kullanılan temel exportların çoğu korunmuş görünüyor. Bu nedenle geçişin büyük kısmı dependency bump + görsel/behavior doğrulama şeklinde ilerleyebilir.
Risk Haritası
Yüksek Öncelikli Riskler
poyraz-ui@3.0.0Node>=22istediği için local/Vercel Node versiyonu doğrulanmalı.pnpm-lock.yamlv3 dependency graph ile temiz güncellenmeli.poyraz-ui/preset.cssv3 tokenları mevcut layout renklerini beklenmedik şekilde değiştirebilir.- Card template componentleri (
NewsCard,ImageCard,ArticleCard,TestimonialCard) v3’te daha modern/glassy defaultlara sahip olduğu için mevcut compact tasarımda kayma oluşturabilir. CommandPalette,Sheet,Modal,Select,DropdownMenugibi Radix tabanlı componentlerde overlay, focus ve portal davranışı görsel olarak kontrol edilmeli.
Orta Öncelikli Riskler
Typographyvariant ölçüleri v3 tokenlarıyla farklılaşabilir.Badge,Card,Button,Inputdefault radius/spacing değerleri mevcutrounded-smclass override’larıyla büyük ölçüde korunacak ama sayfa bazlı kontrol edilmeli.AnnouncementBarv3 animasyon ve spacing’iAppShelliçinde ekstra yükseklik/boşluk yaratabilir.- Mobile navbar sheet davranışı v3 overlay/close butonu nedeniyle farklı görünebilir.
Düşük Öncelikli Riskler
src/lib/themes.tsaktif kullanılmıyor; v3 theme exportlarıyla uyumlu kalması yeterli.reactive-switcherşu an kullanılmıyor; dark mode geçişi v3 migration kapsamına alınmamalı.- Portfolio tasarım polish istekleri migration sonrasına bırakılmalı.
Faz 0 — Hazırlık ve Baseline
Amaç: Değişiklik yapmadan önce projenin mevcut sağlığını ve migration başlangıç noktasını netleştirmek.
Görevler
git status --shortile mevcut dirty dosyaları not al.- Mevcut kullanıcı değişikliklerine dokunma.
pnpm-workspace.yamliçinde önceden yapılmışallowBuildsdeğişikliğini kullanıcı değişikliği olarak koru.- Paket yöneticisi versiyonunu doğrula.
- Node versiyonunu doğrula.
pnpm lintçalıştır.pnpm buildçalıştır.- Varsa mevcut lint/build uyarılarını migration öncesi baseline olarak not al.
Faz 0 Notları
- Node:
v24.16.0 - pnpm:
11.5.1 - Baseline
pnpm lint: başarılı, mevcut 4 warning var. - Baseline
pnpm build: başarılı. - Next baseline warning:
middlewarefile convention deprecated,proxyöneriliyor.
Kabul Kriterleri
- Migration öncesi proje durumu belgelenmiş olmalı.
- Mevcut build hatası varsa v3 geçişinden bağımsız olduğu anlaşılmalı.
- Kullanıcı değişiklikleri ezilmemeli.
Faz 1 — Dependency Geçişi
Amaç: poyraz-ui paketini v3’e almak ve lockfile’ı temiz güncellemek.
Görevler
package.jsoniçindekipoyraz-uisürümünü^3.0.0yap.pnpm installilepnpm-lock.yamlgüncelle.pnpm-lock.yamliçindepoyraz-ui@3.0.0çözümlendiğini doğrula.package.jsoniçine gerekirse Node engine eklemeyi değerlendir:node >=22- Bu değişiklik Vercel deploy ile uyumlu olmalı.
- Vercel tarafında Node 22 kullanılacağından emin olmak için proje ayarı/notu ekle.
Faz 1 Notları
poyraz-ui:^2.0.1→^3.0.0package.jsoniçineengines.node: >=22eklendi.pnpm installsonrası lockfilepoyraz-ui@3.0.0olarak çözümlendi.- pnpm, güvenlik politikası nedeniyle
pnpm-workspace.yamliçineminimumReleaseAgeExclude: poyraz-ui@3.0.0ekledi.
Kabul Kriterleri
package.jsonv3 dependency kullanıyor.- Lockfile v3’e güncellendi.
- Paket kurulumu temiz tamamlandı.
- Kullanılmayan geçici paket/alias eklenmedi.
Faz 2 — Import ve API Uyumluluk Kontrolü
Amaç: v3 sonrası TypeScript/Next build seviyesinde kırılan import veya prop kullanımlarını düzeltmek.
Kontrol Edilecek Import Grupları
poyraz-ui/atomsAvatarBadgeButtonCardInputSeparatorSkeletonTypography
poyraz-ui/moleculesArticleCardCommandPaletteDropdownMenuImageCardModalNewsCardPaginationSelectSheetTestimonialCard
poyraz-ui/organismsAnnouncementBar
poyraz-ui/themespoyrazLightThemepoyrazDarkThemepoyrazThemes
Görevler
rg "poyraz-ui"ile tüm kullanım noktalarını tekrar listele.pnpm lintçalıştır.pnpm buildçalıştır.- Kırılan import varsa en küçük değişiklikle düzelt.
- Kırılan prop varsa component davranışını koruyarak v3 API’ya uyarla.
- Gereksiz refactor yapma.
Faz 2 Notları
- V3 sonrası import/API kırığı çıkmadı.
pnpm lint: başarılı, baseline ile aynı 4 warning devam ediyor.pnpm build: başarılı.- Bu fazda component kullanımını veya layout classlarını değiştirmeye gerek kalmadı.
Kabul Kriterleri
- Tüm importlar v3 exportlarıyla uyumlu.
- Type/build hatası kalmadı.
- Sayfa düzenini etkileyecek gereksiz class değişikliği yapılmadı.
Faz 3 — Global CSS ve Token Uyumluluğu
Amaç: v3 preset tokenlarının portfolio genel görünümünü bozmadığını doğrulamak.
Görevler
app/globals.cssiçindeki import sırasını koru:@import "tailwindcss";@import "poyraz-ui/preset.css";
poyraz-uidist utility classlarının tüketici build/dev tarafında tarandığını garantiye al.@source "../node_modules/poyraz-ui/dist";
- Custom utility’leri kontrol et:
animate-marqueepause-on-hover
bg-background,text-foreground,border-border,muted-foregroundgibi semantic tokenların v3 karşılığını görsel olarak kontrol et.- Light mode temel kontrastı kontrol et.
- Dark mode aktif değilse migration kapsamında dark mode ekleme.
Kabul Kriterleri
- Global CSS minimal kaldı.
- Tailwind v4 compile sorunu yok.
- Semantic tokenlar sayfa genelinde okunabilir.
Faz 3 Ara Notları
ArticleCardveTestimonialCardiçindeki avatar görselleri npm paketinin template classlarına (size-6,size-9) bağlı.- Avatar boyutlarının bozulması component kullanımından değil, Tailwind source scan/dev cache tarafında
poyraz-ui/distclasslarının kaçırılmasından kaynaklanabilir. - Componentlere hardcoded avatar classı eklemek yerine
app/globals.cssiçinde paket dist source’u açıkça tanımlandı. - Bu değişiklik sonrası
pnpm lintvepnpm buildbaşarılı. - Build CSS çıktısında
.bg-background,.text-foreground,.border-border,.text-muted-foreground,.animate-marquee,.pause-on-hover:hover,.size-6ve.size-9classları doğrulandı. - Dark mode/theme switcher bu migration fazında eklenmedi; mevcut light mode korunuyor.
Faz 4 — Layout ve Shell Doğrulaması
Amaç: Site iskeletini korumak.
Kontrol Edilecek Dosyalar
app/[locale]/layout.tsxcomponents/app-shell.tsxcomponents/site-navbar.tsxcomponents/search-command.tsxcomponents/language-switcher.tsx
Görevler
- Locale layout render zincirini kontrol et.
AppShellmax width ve spacing değerlerinin değişmediğini doğrula.AnnouncementBaryüksekliği ve border davranışını kontrol et.- Desktop navbar hizasını kontrol et.
- Mobile navbar sheet aç/kapat davranışını kontrol et.
- Search command palette aç/kapat davranışını kontrol et.
- Cmd/Ctrl + K shortcut davranışını doğrula.
Kabul Kriterleri
- Navbar layout bozulmadı.
- Mobile menü çalışıyor.
- Search command çalışıyor.
- Announcement bar sayfa içeriğini itip bozmadı.
Faz 4 Notları
- Locale layout
NextIntlClientProvider+AppShellzinciriyle korunuyor. AppShellcontainer yapısımax-w-4xl,px-4 sm:px-6,py-4olarak değişmedi.SiteNavbardesktop link/search/social dropdown hattı v3 componentleriyle build ve runtime smoke testinden geçti.SearchCommandclick ile açılıyor, query yazınca sonuç üretiyor ve dialog render oluyor.- Mobile viewport smoke testinde
Menüsheet dialogu açıldı. - Runtime smoke sonucu:
navLogo: başarılıannouncement: başarılıcommandOpen: başarılıcommandItems: 2 sonuçmobileSheet: başarılı
Faz 5 — Sayfa Bazlı Görsel Regression Kontrolü
Amaç: Mevcut portfolio düzenini v3 sonrası sayfa sayfa korumak.
Ana Sayfa
HomeHerokart yerleşimi korunuyor.NewsCardyükseklikleri düzgün.- Hero görsel alanı taşmıyor.
- References marquee çalışıyor.
- Sponsor kartları hizalı.
About
- Eğitim ve deneyim kartları compact kalıyor.
- Sertifika sheet açılıyor.
- Bookmark sheet açılıyor.
- Referans ve gönüllülük link kartları hizalı.
Blog
- Kategori badge’leri doğru görünüyor.
- Search input focus state rahatsız etmiyor.
ArticleCardgrid yüksekliği dengeli.- Pagination active state düzgün.
- Empty state bozulmadı.
Blog Detail
- Markdown typography okunabilir.
- Code block görünümü korunuyor.
- Mermaid block loading/error kartları düzgün.
- TOC paneli taşmıyor.
- Progress bar çalışıyor.
Projects
ImageCardsquare grid düzenini bozmuyor.- NPM/GitHub kartları aynı yükseklik mantığında kalıyor.
- Badge ve icon spacingleri düzgün.
Content
- YouTube cardları düzgün.
- PDF preview kartları düzgün.
- PDF modal açılıyor.
- Prev/Next buttonları çalışıyor.
Links
- Profile card rounded/glass görünüm korunuyor.
SelectveInputaynı satırda düzgün.- Link kartları hover’da layout shift yapmıyor.
- Mobile layout taşmıyor.
Contact / Gallery / Volunteer / References
- Kartlar compact düzeni koruyor.
- Linkler çalışıyor.
- Galeri modal/preview davranışı korunuyor.
Kabul Kriterleri
- Kritik sayfalarda layout kırığı yok.
- Horizontal overflow yok.
- Component default değişimleri mevcut tasarımı bozmadı.
Faz 5 Notları
- Production runtime smoke testte şu sayfalar desktop viewportta kontrol edildi:
/tr/tr/about/tr/blog/tr/projects/tr/content/tr/links/tr/contact/tr/gallery/tr/about/references/tr/about/volunteer-community
- Tüm bu sayfalarda horizontal overflow
0ölçüldü. - Oversized rounded avatar/image regression bulunmadı.
- Blog empty state
/tr/blog?search=unlikelymigrationqueryile doğrulandı. - Blog detail sayfasında progress bar ve TOC render doğrulandı.
- Gallery preview/modal akışı 15 galeri itemı üzerinden doğrulandı.
Faz 6 — Davranış ve Etkileşim Testleri
Amaç: Sadece build almakla kalmayıp interaktif alanları doğrulamak.
Manuel Test Listesi
- Navbar linkleri locale-aware route ediyor.
- Language switcher route’u bozmadan locale değiştiriyor.
- Social dropdown açılıyor/kapanıyor.
- Mobile sheet açılıyor/kapanıyor.
- Search palette:
- Click ile açılıyor.
- Cmd/Ctrl + K ile açılıyor.
- Arama filtreliyor.
- Internal linke gidiyor.
- External link yeni sekme açıyor.
- About sheetleri açılıyor/kapanıyor.
- Atatürk widget modal açılıyor.
- PDF modal açılıyor.
- PDF modal içinde prev/next çalışıyor.
- Blog pagination linkleri doğru query üretir.
Kabul Kriterleri
- Temel kullanıcı akışlarında regression yok.
- Focus trap/overlay kilitlenmesi yok.
- Body scroll lock sorun çıkarmıyor.
Faz 6 Notları
- Navbar
/tr→/tr/aboutlocale-aware route akışı geçti. - Language switcher
/tr→/enakışı geçti. - Social dropdown açılışı doğrulandı.
- Search palette:
- Click ile açıldı.
Ctrl+Kile açıldı.blogaraması sonuç döndürdü.- Internal item route etti.
GitHubexternal item yeni sayfa hedefi olarakhttps://github.com/poyrazavseveraçtı.
- About certificate ve bookmark sheetleri açıldı.
- Atatürk widget modalı açıldı.
- Content PDF modalı 27 PDF card button üzerinden doğrulandı; prev/next kontrolleri modalda göründü.
- Blog pagination linkleri
/blog?page=2ve/blog?page=3queryleriyle doğrulandı. - Mobile sheet açıldığında body scroll lock aktifti.
Faz 7 — Build, Lint ve Release Readiness
Amaç: Deploy edilebilir temiz durum elde etmek.
Görevler
pnpm lintpnpm buildgit diff --checkgit status --short- Build sırasında Next warningleri not al.
- Vercel Node 22 gereksinimi için deploy notu çıkar.
Kabul Kriterleri
- Build başarılı.
- Lint başarılı ya da mevcut baseline dışı yeni hata yok.
- Diff sadece migration kapsamındaki dosyalardan oluşuyor.
Faz 7 Notları
pnpm lint: başarılı. Baseline dışı yeni hata yok; mevcut 4 warning devam ediyor:components/blog-detail-content.tsx:@next/next/no-img-elementcomponents/links-content.tsx:@next/next/no-img-elementscripts/fetch-medium-all.mjs: kullanılmayanmkdirSyncscripts/test-medium-scraper.mjs: kullanılmayanresponse
pnpm build: başarılı.- Next build warning:
middlewarefile convention deprecated,proxyöneriliyor. git diff --check: temiz.git status --short: yalnızca migration kapsamındaki 5 dosya değişti:package.jsonpnpm-lock.yamlpnpm-workspace.yamlapp/globals.cssdocs/poyraz-ui-v3-migration-plan.md
- Deploy notu:
poyraz-ui@3.0.0Node>=22istediği için Vercel project Node.js runtime ayarı Node 22+ olmalı.package.jsoniçindeengines.node: >=22eklendi.
Faz 8 — Commit ve Handoff
Amaç: Migration değişikliklerini okunabilir şekilde teslim etmek.
Önerilen Commit Gruplaması
-
docs: plan poyraz-ui v3 migration- Sadece bu plan dosyası.
-
chore: migrate portfolio to poyraz-ui v3package.jsonpnpm-lock.yaml- Gerekirse
pnpm-workspace.yaml - Gerekirse küçük API uyumluluk düzeltmeleri.
-
Eğer görsel uyumluluk düzeltmesi gerekiyorsa:
fix: preserve portfolio layout with poyraz-ui v3
Kabul Kriterleri
- Commitler anlamlı ve review edilebilir.
- Kullanıcı değişiklikleri commit kapsamına yanlışlıkla alınmadı.
- Final notta test sonuçları açıkça yazıldı.
Faz 8 Notları
- Commitler migration kapsamını okunabilir tutacak şekilde şu mantıkla ayrıldı:
- Plan/checklist dokümantasyonu.
poyraz-ui@3.0.0dependency ve lockfile geçişi.- Tailwind v4 consumer source scan düzeltmesi.
- Commit kapsamı yalnızca migration için değişen dosyalarla sınırlandı.
Migration Sonrasına Bırakılacak Tasarım İşleri
Bu işler v3 geçişinden sonra ayrıca ele alınmalı:
- Portfolio genelini daha glassy/soft v3 tarzına yaklaştırma.
- Button hover animasyonlarını portfolio CTA’larına uygulama.
- Typography text effectlerini hero/blog başlıklarında kullanma.
- Card variantlarını sayfa bazlı standardize etme.
- Dark mode/theme switcher ekleme.
- Links sayfasını daha modern micro-landing görünümüne taşıma.
- Navbar ve command palette görsel polish.
- Blog kartlarında daha zengin image/metadata layout.
İlk Uygulama Sırası
Migration’a başlarken uygulanacak pratik sıra:
- Faz 0 baseline.
- Faz 1 dependency geçişi.
- Faz 2 import/API kontrolü.
- Faz 7 build/lint doğrulaması.
- Faz 4 ve Faz 5 hızlı görsel kontrol.
- Gerekiyorsa küçük düzeltmeler.
- Commit.
Bu sıra major geçişi hızlı tamamlamaya, tasarım detaylarını ise yayın sonrası küçük ve güvenli iterasyonlara bırakmaya uygundur.