- ViraStack Start
v2.0.0Major
Yeni başlangıç sayfası, eklenip kaldırılabilen modüller ve güncel araçlar
Yeni projeler kısa bir başlangıç sayfasıyla kuruluyor, hazır modüller tek komutla eklenip kaldırılıyor; API katmanı ve araç sürümleri yenilendi, dört paket yöneticisi destekleniyor, Node aralığı yükseldi.
Ne değişti
- Başlangıç sayfası: Landing kalktı. Yerine sonraki adımları ve kullandığın stack'i sürümleriyle gösteren kısa bir sayfa geldi. Marka logosu font indirmeden inline SVG olarak çiziliyor.
virastack add <modül>:users,checkout-addressvecheckout-cardmodüllerinivirastack.com/rregistry'sinden dört template'e de kurar. Yalnızca feature kurar, sayfa oluşturmaz: CLI import satırını yazar, modülün sayfası framework'üne ve sayfa yoluna göre prompt ve manuel adımlar verir.initmodül kurmaz; başlangıç sayfası hazır modüllere yönlendirir. i18n'de çevirilersrc/messagesiçine birleştirilir; çakışma varsa hiçbir dosya değişmez.checkout-address: Teslimat ve fatura adresi seçimi, popup'ta ekleme ve düzenleme. Form@virastack/addressve@virastack/maskkullanır.checkout-card: Kayıtlı kart seçimi ve yeni kart formu. Kart numarası ve CVV network'e çıkmaz; POST yalnızca dummy token, marka, son dört hane, son kullanma tarihi ve adı taşır.virastack remove <modül>: Modülün dosyalarını, boş kalan klasörlerini ve çevirilerini siler, paketleri bırakır. Değiştirdiğin dosyalar varsa silmeden önce sorar.- API katmanı:
api.tsiçindeapi.get(path, { schema })yanıtı doğrular ve tipi çıkarır.ApiError.kindhatayıhttp,network,timeoutveparseolarak ayırır.createApi({ baseUrl, getHeaders })ile auth başlıkları yalnızca kendi API'ne gider. Varsayılan zaman aşımı 10 saniye. - React Compiler: Next.js ve TanStack Start template'lerinin ikisinde de açık. Next.js tarafında artık yalnızca production'da değil.
- Araçlar: ESLint 10, MSW 3, Vitest 5 ve pnpm 12.
tscTypeScript 7 ile,typescript-eslintvenext buildTypeScript 6 ile çalışır. - Prettier: Varsayılanlar
semi: falsevetrailingComma: "none". Dört template'te aynı.prettierrcvar. - SEO: Başlangıç sayfasında canonical var,
APP_URLyoksa production'da uyarı çıkar, kökteki sabitog:urlkalktı. Next.jsX-Powered-Bybaşlığını göndermez. - Paket yöneticileri: npm, Yarn, bun ve pnpm destekleniyor.
init,ci.ymlve husky hook'larını seçtiğin paket yöneticisine göre yazar, gereken ayar dosyasını ekler. - i18n: Varsayılan dil
/adresinde, diğer dil/traltında. Dili yalnızca URL belirler, otomatik yönlendirme yok;hreflangetiketleri geliyor. - shadcn: Dört template'e
components.jsoneklendi,shadcn addkurulu projede hazır çalışır. - Layout shift: TanStack Start template'lerinde Inter için metriği eşlenmiş fallback ve preload var.
Neden
- Landing: Kullanıcının ilk silmek zorunda kaldığı bir pazarlama sayfasıydı ve bir sonraki adımı göstermiyordu.
- Modüller registry'de: Template yalın kalıyor, modül istenince ekleniyor ve kaldırılıyor. Yeni modül için CLI sürümü gerekmiyor.
- Sayfa kurulmaması: Hangi sayfaya gireceğine sen karar veriyorsun; iki modül aynı sayfada çakışmıyor,
/checkoutgibi bir sayfayı kendin birleştiriyorsun. - API: Aynı Zod kalıbı tekrar ediyordu, auth yalnızca yorum satırındaydı, retry hem
api.tshem TanStack Query içinde olunca çağrı sayısı katlanıyordu. - Araçlar: ESLint 9 artık desteklenmiyor. 1.2.0 template'leri pnpm 11 ve 12'de kurulumda
ERR_PNPM_IGNORED_BUILDSbasıyordu. TypeScript 7.0'da API yok, bu yüzden Microsoft'un önerdiği alias ile iki sürüm birlikte çalışıyor;tscölçümümüzde Next.js için 2,6 sn'den 0,51 sn'ye, TanStack Start için 2,3 sn'den 0,37 sn'ye indi. - Node: Node 20 desteği bitti.
jsdomgibi bağımlılıklar da daha yüksek sürüm istiyor; Yarn 1 kurulumu bu yüzden düşüyordu. - Paket yöneticileri: Yalnızca pnpm yazan CI, diğer yöneticilerde düşüyordu. shadcn/ui
pnpm-workspace.yamldosyasını görüp npm projesinde pnpm çalıştırıyordu, Yarn 4'te Plug'n'Play build ve lint'i bozuyordu. - Tek yapı: ViraStack AI kuralları barrel'sız yapıyı ve tek alias'ı anlatıyor; template bununla çelişmemeli. Tek yönlü import, feature silindiğinde paylaşılan kodun bozulmamasını sağlıyor.
- SEO: Sayfadaki
openGraphkök ayarı tamamen ezdiği için sayfa bazındaurlsenin kararın. Template'tekillms.txtise kullanıcının sitesinde ViraStack'i anlatıyordu. - i18n: Google dile göre otomatik yönlendirmemeyi öneriyor.
- Layout shift: Inter, TanStack Start template'inde CLS 0,207'ye yol açıyordu; üç ölçümde de 0,000 oldu.
- Sınırlar: Windows denenmedi. Üretilen
ci.ymlGitHub Actions'ta çalıştırılmadı.api.tsgerçek bir üretim API'si ve auth ile denenmedi. Modüller yalnızca dummy API ve dummy veriyle çalışır; gerçek API'yi bağlamak sana kalır.
Kaynaklar
- Announcing TypeScript 7.0
- Version Support (ESLint)
- pnpm 11
- pnpm 12
- 2.x → 3.x (Mock Service Worker)
- Project Structure (Bulletproof React)
- Problem Details for HTTP APIs (RFC 9457)
- Query Retries (TanStack Query)
- Installation (React Compiler)
- reactCompiler (Next.js)
- generateMetadata (Next.js)
- Managing Multi-Regional and Multilingual Sites (Google)
- Getting Started (shadcn/ui registry)
- Test Cards (iyzico)
Geçiş
Bu sürüm mevcut projeleri değiştirmez. Aşağıdakiler 2.0.0 ile kurulan yeni projeler için geçerli; 1.x projeni taşımak istersen bunları elle uygulaman gerekir. virastack add users 2.0.0 projelerinde denendi, eski projelerde denenmedi.
Kırılan değişiklikler:
- Node: Template'ler
^22.22.2 || ^24.15.0 || >=26.0.0istiyor. Önceki taban>=20.9.0. - Alias: Yalnızca
@/*var.@/ui,@/layout,@/hooks,@/schemasve#/*kalktı. - Barrel: Uygulama kodunda
index.tsbarrel'ları kalktı, import'lar tanımlandığı dosyaya gider. - Tek yönlü import: Shared klasörler feature ve route, feature'lar route import ederse ESLint hata verir.
- Mesajlar: i18n mesajları
messages/yerinesrc/messages/altında. Paraglide ayarlarıbaseLocale,localesve{locale}kullanıyor. api.ts:retryseçeneği kalktı, retrymakeQueryClientiçinde. Şema vermezsen sonuçunknown. Yanıt gelmeyen hatalardastatusnull, ayrımkindile yapılır.- Paketler:
clsxvetailwind-mergeyerinecnpaketi var.motionkalktı. TanStack Start template'lerinde nuqs yerinevalidateSearchkullanılıyor. - MSW 3:
onUnhandledRequestyerineonUnhandledFrame, import'larmsw/httpüzerinden. - pnpm:
package.jsoniçindekipnpmalanı kalktı, ayarlarpnpm-workspace.yamlveallowBuildsile yazılıyor. - Kalkan dosyalar:
public/llms.txt,.changesetve i18n'siz Next.js template'indeproxy.ts.