İçeriğe geç

ADR-001 ARGE: Müşteri Landing Frontend Stack

Derin

Versiyon: 1.5.0
Tarih: 2026-06-16
Durum: Operatör onaylı Astro (D-024); BL-001 benchmark ile tam ADR kilidi bekliyor
React: Kesin (komponentler veya islands; doğrudan React UI)

İlgili: ADR-001: Müşteri Landing Frontend Stack, Mimari Backlog BL-001


Müşteri tuning web siteleri (reprocar freeze; kfzservice24 ve sonrası) için landing frontend stack seçimi.

Sabit kararlar (değişmez):

  • Admin: Laravel Filament Site Hub (admin.{musteri}.com), site başına PostgreSQL
  • Landing: ayrı repo, Hub Content API tüketici, müşteriye teslim edilebilir
  • Kendi markalar: Next.js 16 tam klon (bu ARGE kapsamı dışı)
  • Inertia: yeni üretimde hayır
  • React: evet (Astro islands veya Next RSC/client)

Kaynaklar: npm registry, PkgPulse 2026, devpick, State of JS 2025, sektör blogları.

PaketHaftalık indirme (aralık)YoY yönYorum
react30–50M→ (hacim ↑, hız yavaş)Taban; yeni sinyal meta-framework’te
next11–30M↑ (+28% YoY)React yeni projelerinin varsayılanı
astro1.9–3.1M↑↑ (+85% YoY küçük taban)İçerik/landing en hızlı büyüyen meta-framework
@astrojs/react~650KAstro büyümesinin ~%20–25’i
gatsby180–316K↓↓ (-65%)Ölüyor; Astro yerine geçiyor
@inertiajs/react~450K→ (niş)Laravel monolith; headless değil
next-intl2.2–3.7M↑↑Next App Router i18n lideri
react-i18next12–13MFramework-agnostic; routing çözmez
react-router (v7 lib)~48MÇoğunluk SPA library mode; Framework Mode değil
@react-router/dev~1.3–1.5MRR7 Framework Mode (eski Remix)
@remix-run/react~1.5MLegacy; RR7’ye migrate
@tanstack/react-router~400–800K↑↑TanStack Start tabanı; erken
@tanstack/startdüşükRC; üretim için erken
nuxt1.5–3.1M↑ +35%Vue; React şartıyla ADR dışı
@sveltejs/kit~1.6M↑↑ +55%Svelte; ADR dışı

2026–2027 sektör yönü:

  • Marketing/docs: Astro (Cloudflare satın alımı Ocak 2026; islands mimarisi)
  • SaaS/dashboard/B2B app: Next.js (RSC, PPR, enterprise default)
  • Headless CMS + ayrı frontend: endüstri standardı
  • Gatsby: migrate ediliyor
  • Hibrit pattern: Astro marketing + Next app (yaygınlaşıyor)

AB/TR iş piyasası: Next + React + TS dominant; Astro dedicated ilan az. RR7 Framework “Remix dev” niş; TanStack Start çok erken.

Aralık 2024: Remix v2 → React Router v7 Framework Mode. Tek paket, üç mod:

ModKullanım
Library ModeSPA (BrowserRouter) — landing için uygun değil
Framework ModeSSR + prerender + loaders — headless CMS consumer
Data ModeOrta katman

create-react-router@latest ile scaffold. Shopify Hydrogen RR7 kullanıyor. Landing segmentinde Next/Astro baskın; Framework Mode adoption ~1.3M/hafta (@react-router/dev).


Görüş: Landing için büyüme sinyali Astro’da; hacim ve iş gücü Next’te. Meta-framework indirmeleri asıl adoption göstergesi.

Eksen 2 — Laravel Filament Hub uyumu (Ajan: Hub entegrasyon)

Bölüm başlığı “Eksen 2 — Laravel Filament Hub uyumu (Ajan: Hub entegrasyon)”

Görüş: Stack bağımsız Hub API (Sanctum token, locale-resolved Spatie JSON, revalidate webhook). Skor: Next trimmed 86/100, Astro 80/100, React SPA 64/100, Inertia 38/100.

Görüş: reprocar laravel-react-i18n acısından kaçın. Astro native i18n 91/100 (hard <a> nav, prefixDefaultLocale false). next-intl 84/100 (Pro/simulator). Hub API alternates[] + translation_group_id zorunlu.

Eksen 4 — 2026–2031 sürdürülebilirlik (Ajan: projeksiyon)

Bölüm başlığı “Eksen 4 — 2026–2031 sürdürülebilirlik (Ajan: projeksiyon)”

Görüş: Kendi marka Next (8/10), müşteri Astro (7.8/10), dual-template (6.5/10), Inertia yeni (4/10). “Boring reliable” üçlü: Laravel Hub + Astro client + Next own-brand.

Görüş: Astro handoff 88/100, Vite SPA 80, Next trimmed 62. Öneri: Astro + paylaşılan @ygt/client-widgets React paketi; Next Pro yalnızca benchmark fallback.

Görüş: Astro SSG hybrid CWV 94/100, SEO 92. Next trimmed CWV 82, SEO 90, revalidation ops en düşük. Vite SSR önerilmez.

AdayTrendHubi18n5YHandoffCWVOrtalama
Astro 5 + React islands88809178889485
Next 16 trimmed92868470628279
Dual (Astro Lite + Next Pro)85838865758881
Vite React SPA70645860807267
Inertia (referans)40384540305541

Derin eksen 7 — React Router 7 Framework Mode (Ajan: RR7)

Bölüm başlığı “Derin eksen 7 — React Router 7 Framework Mode (Ajan: RR7)”

Skor toplam: 77/100 | Karar: Reject (fabrika varsayılanı)

GüçlüZayıf
Route loader → Hub API doğal eşleşmerevalidateTag yok; ADR-002 custom cache (56/100)
Tam React; simulator port kolayETP ekibi RR7 deneyimi sıfır (54/100 öğrenme)
Vite tabanlı; Next’ten ince repoFull hydrate; CWV Astro’nun altında (79 vs 94)
Shopify backing; Remix merge tamami18n: Paraglide/Intlayer; next-intl/astro kadar olgun değil (73)
PM2 + nginx (reprocar SSR benzeri)Üçüncü meta-framework; Astro+Next yeterli

İstisna: reprocar migrate (D-023 freeze) kalkarsa loader mental modeli sürekliliği için secondary değerlendirilebilir.

i18n RR7: prefix(":locale?", routes) + Hub alternates[]meta(). prefixDefaultLocale: false mümkün. Middleware henüz rewritten Request’i loader’a geçirmiyor (dikkat).

Skor toplam: 76/100 | Karar: İzleme listesi (üretim şablonu değil)

GüçlüZayıf
Full-stack React; loader benzeri patternRC/erken 1.x; May 2026 supply-chain olayı
Simulator tam ReactISR/tag revalidation yok (Astro gibi DIY)
Router hızlı büyüyori18n birinci sınıf değil
npm hacmi Next/Astro altında

Rol: BL-001 benchmark’ta Astro island fail → Next yerine opsiyonel üçüncü satır.

AdaySkorRed nedeni
RR7 Library + Vite SSR61Standart fabrika yok; ADR Vite SPA (67) kötüleşmiş hali
Nuxt 483*Vue; React zorunlu; @ygt/client-widgets uyumsuz
SvelteKit81*Svelte; aynı neden
Gatsby~25Ölü trend

*React şartı olmasaydı güçlü; ADR-001 kapsamı dışı.

SıraAdayToplamFabrika rolü
1Astro 5 + React islands86.0Primary
2Dual-template82.1Opsiyonel (bakım maliyeti)
3Next 16 trimmed80.4Secondary (Pro fallback)
4RR7 Framework Mode77.0Reject
5TanStack Start76.0İzleme
6Vite React SPA66.8Reject
7RR7 Library + SSR61.0Reject
8Inertia41.0Reject (freeze referans)

4. 100 üzerinden kapsamlı puanlama (genişletilmiş)

Bölüm başlığı “4. 100 üzerinden kapsamlı puanlama (genişletilmiş)”

Ağırlıklar müşteri landing fabrikası için kalibre edildi (SEO ağır, satış hızı, teslim, Filament uyumu).

KriterAğırlıkAstroNextRR7 FWTanStackDualVite SPA
SEO15%929085849178
Core Web Vitals15%948279868872
Laravel Hub API uyumu12%808683788364
Çok dil (1–3 locale)12%918473668858
ADR-002 revalidation10%689256708045
Müşteri teslimi (R6)10%886269707580
Satış hızı8%907065727875
Ekip öğrenilebilirlik8%729254787855
Deploy/ops maliyeti5%886563687270
5 yıl sürdürülebilirlik5%787077626560
npm/trend / iş gücü5%759278708470
Simulator / Pro5%788883888575
TOPLAM100%86.080.477.076.082.166.8

RR7 Framework (77.0): Loader pattern güçlü ama ADR-002 ve ekip öğrenme fabrika için engel. Next’in arasında skor alıyor, hiçbir eksende birinci değil.

TanStack Start (76.0): RR7 ile örtüşür; RC riski. Benchmark izleme listesi.

Dual-template (82.1): En dengeli “doğru işe doğru araç” ama iki starter bakımı.


Entegrasyon noktasıTüm stack’lerde ortak
İçerik kaynağıFilament Resource → Hub PostgreSQL (site scoped)
APIREST GET /api/v1/sites/{slug}/*?locale=
Spatie JSONHub Resource locale-resolved flat string döner
AuthHUB_SITE_TOKEN server-side only (landing ENV)
RevalidateFilament observer → POST landing /api/revalidate
Admin deployPHP-FPM admin.{domain}
Landing deployAstro static/nginx veya PM2 Node

En rahat adaptasyon: Hub API sözleşmesi stack’ten bağımsız. Filament tarafı değişmez; consumer seçimi Astro vs Next.

i18n için Hub zorunlu alanlar:

  • alternates[] (hreflang)
  • translation_group_id (blog)
  • locale_switcher[] (hard nav paths)
  • default_locale + prefix_default_locale: false

StackReact nasıl?
Astro (önerilen)@astrojs/react islands: client:load / client:visible; simulator, carousel, form
Next trimmedRSC shell + "use client" bileşenler; ETP components/landing/ extract
RR7 FrameworkRoute modules + loader; tam React hydrate
TanStack StartRoute loaders + server functions
Paylaşılan paket@ygt/client-widgets (Vehicle cascade, charts) — framework agnostic props

react-i18next: Site geneli için önerilmez (routing yok, reprocar acısına yakın). Island içi lokal string için sınırlı kullanım OK.


Toplam skor: 86/100

ŞablonKullanım
Client Standardkfzservice24, basit müşteriler
Client ProAynı Astro repo + @ygt/client-widgets (simulator)

Gerekçe: En yüksek CWV/SEO/teslim; Laravel Hub ile temiz ayrım; npm trend landing segmentinde Astro; React islands ile “basit kalır” endişesi giderilir.

Benchmark’ta Astro revalidation p95 > 5 sn veya simulator island yetersiz kalırsa yalnızca Client Pro.

  • Inertia (yeni)
  • Vite SPA, RR7 Library+SSR (birincil)
  • RR7 Framework Mode (77/100) — fabrika default reject
  • TanStack Start (76/100) — izleme listesi, BL-001 opsiyonel
  • Nuxt/SvelteKit — React şartı dışı
  • Dual-template varsayılan (bakım maliyeti)
SıraStackSkorRol
1Astro 5 + React islands86Primary
2Next 16 trimmed80Secondary (Pro / revalidation fallback)
RR7 Framework77Reject
TanStack Start76İzleme
Dual-template82Opsiyonel (iki starter maliyeti)

IDRiskMitigasyon
BL-001Astro revalidation kanıtı yokSentetik benchmark öncelik
BL-004Hub OpenAPI yokFilament MVP ile paralel
BL-007ADR-002 Astro adapterPOST /api/revalidate Astro endpoint
BL-016Umami + Vitals Astro porttunerstack landing kanıtı; @ygt/landing-analytics
BL-013HANDOFF spec (local content mode)Stack seçiminden bağımsız yaz

  1. Hub mock API (config, homepage, blog + alternates)
  2. Astro Standard + Next trimmed aynı mock
  3. Ölç: LCP p75, JS KB, build süresi, revalidation p50/p95, simulator mini
  4. Umami event + Vitals POST parity (ETP ile aynı payload)
  5. Stajyer 4 saat “yeni section” testi
  6. Skorları güncelle → ADR-001 v1.0.0 kilitle

Tetikleyici: İlk yeni müşteri satışı (D-018); reprocar freeze (D-023).


Seçenek100 skorOperatör onayı
A) Astro tek stack86☑ Onaylı
B) Next trimmed tek stack80☐ Red
C) Dual Astro + Next Pro82☐ Red
E) RR7 Framework Mode77☐ Reject
F) TanStack Start76☐ İzleme
D) BL-001 tam kilit☐ Benchmark bekliyor

11. ETP üretim kanıtı: Umami, RUM, Astro taşınabilirlik

Bölüm başlığı “11. ETP üretim kanıtı: Umami, RUM, Astro taşınabilirlik”

Kaynak: ecutuningportal.com/httpdocs kod denetimi (2026-06-16). Amaç: “Next’te çalışan özellik Astro’da kaybolur mu?” sorusunu dosya düzeyinde yanıtlamak.

BileşenDosyaNext bağımlılığı
Script yüklemecomponents/landing/shell/LandingAnalyticsScripts.tsxYalnızca next/script lazyOnload; script tag ile değişir
Bot guardAynı dosya, inline UMAMI_BOT_GUARD_SCRIPTYok
CRM trackinglib/landing/analytics/analytics.ts (~740 satır)Yok (saf browser JS)
Session initcomponents/landing/shell/AnalyticsProvider.tsxusePathname (SPA nav); Astro MPA’da gereksiz

Umami instance: https://analytics.ygtlabs.ai/script.js?v=3. data-website-id, data-tag={locale}, data-before-send="ecpBeforeSend" Astro layout’ta birebir taşınır.

Astro port: @ygt/landing-analytics paketi; AnalyticsProvider React island client:load; BaseLayout.astro içinde defer script.

BileşenDosyaNext bağımlılığı
Client ölçümcomponents/landing/shell/VitalsReporter.tsxusePathname; MPA’da her load yeterli
Paketweb-vitals ^5.2.0 (package.json)Yok
APIapp/api/vitals/route.tsNextRequest; Astro export const POST ile aynı mantık
DBprisma/schema.prisma model WebVitalORM değil; PostgreSQL tablosu Hub’da
Admin UIcomponents/admin/performance/AdminPerformancePage.tsxFilament Resource/widget hedefi (BL-016)

Outlier guard (30 sn) client + server tarafında mevcut; taşınır.

11.3 Next’e özgü landing parçaları (migrate listesi)

Bölüm başlığı “11.3 Next’e özgü landing parçaları (migrate listesi)”
ParçaDosya sayısıAstro / Hub alternatifi
Landing API15 route (app/api/landing/*)Astro server endpoint veya Hub Laravel API
Cache invalidationapp/api/revalidate/route.tsHub webhook + Astro cache purge (BL-007)
OG imagelib/landing/seo/og-image.tsx (next/og)Satori veya statik OG
i18n routingnext-intlastro-i18n; messages/landing/*.json taşınır
ProjeStackUmamiVitals RUMKanıt
ETPNext 16VarVarProd
tunerstack.io landingAstro 5 SSRYokYokPM2 :4321; BL-016 hedefi

tunerstack Astro şablonu Umami/Vitals eklenince “Astro yetersiz” argümanı kapanır.

Umami ve RUM Astro’da kayıp yaratmaz; Astro’nun CWV üstünlüğü (94 vs 82) RUM hedefleriyle uyumlu. Next trimmed’in tek net üstünlüğü revalidateTag (ADR-002); benchmark ile Astro webhook doğrulanacak (BL-001).

Operatör sinyali (oturum 11): Landing için Next tercih edilmiyor. Bu ARGE kapsamı müşteri landing; kendi marka revizyonu ayrı OD (CONSTITUTION D-007).


12. ARGE tamamlanma denetimi ve BL-001 kabul kriterleri

Bölüm başlığı “12. ARGE tamamlanma denetimi ve BL-001 kabul kriterleri”
Goal kriteriDoküman bölümüDurum
npm trendleri (Haziran 2026)§2Tamam
Laravel + Filament + PostgreSQL uyumu§3, §5, Hub APITamam
Çok dil (1-3 locale)§4 i18n satırı, §7Tamam
React kesin§1, §6Tamam
100 üzerinden puanlama§4 (13 kriter, 11 aday)Tamam
Öneri§7 (Astro 86 primary)Tamam
Verify: ADR-001-RESEARCH.md + 100Bu dosyaTamam

12.2 Goal sonrası kapılar (ARGE çıktısı değil)

Bölüm başlığı “12.2 Goal sonrası kapılar (ARGE çıktısı değil)”
KapıIDBloker
Sentetik benchmark çalıştırmaBL-001Uygulama
Operatör stack onayıOD-002İnsan kararı
Umami/Vitals Astro kanıtıBL-016tunerstack port

Ortam: sentetik demo site + Hub mock API (D-003). Her stack için aynı içerik seti.

#SenaryoSayfa
S1Homepageslider + services + FAQ
S2Blogliste + detay
S3Locale switch//tr
S4RevalidationHub webhook → görünür güncelleme
S5Simulator minivehicle cascade mock (reprocar tipi)
S6Analytics parityUmami pageview + Vitals POST 201

Katılımcılar: Astro 5 + React islands (birincil), Next 16 trimmed (karşılaştırma). TanStack Start opsiyonel (BL-015).

MetrikAstro geçişNext referansKaynak
Revalidation p95≤ 5000 ms≤ 3000 msADR-002 SLA
Revalidation p50≤ 3000 ms≤ 1500 msADR-002 SLA
LCP p75 (mobile, lab)≤ 2500 msölçüm kaydıweb.dev CWV
Homepage JS (gzip)≤ 120 KBölçüm kaydıbundle analyzer
Build süresi (cold)≤ 180 sölçüm kaydıCI log
Simulator TTI≤ 4000 msölçüm kaydıLighthouse
Stajyer 4h sectionTamamlanırTamamlanırBL-001
Vitals POST201 + valid payload201ETP parity
Umami eventpageview + locale tagpageviewBL-016

Astro fail koşulları (D-028: Next fallback yok; benchmark tekrar):

  • S4 revalidation p95 > 5000 ms (3 deneme ortalaması)
  • S5 simulator TTI > 4000 ms veya island hydrate hatası
  • S6 analytics parity başarısız

Fail durumunda: Astro webhook/cache iyileştirme tekrar; Next fallback yok (D-028).

BL-001 tamamlanınca §4 tablosunda şu satırlar güncellenir:

  • ADR-002 revalidation (Astro): benchmark ölçümüne göre 68 → hedef 75+
  • Simulator / Pro (Astro): ölçüme göre 78 → hedef 85+

ADR-001 landing-frontend-stack.md durumu Accepted olur; OD-002 kapanır.


8 savunucu + 3 jüri üyesi; her ajan izole (Composer 2.5). Savunucular birbirini, jüri üyeleri birbirinin oyunu görmedi.

SeçenekSkorSavunma özeti
Astro 5 + islands86CWV, i18n, teslim, tunerstack kanıtı
Dual-template82.1Lite/Pro segmentasyon
Next trimmed80.4revalidateTag, ETP prod kanıtı
RR7 Framework77loader→Hub, tam React
TanStack Start76Pro tam React, RC riski
Vite SPA66.8en temiz handoff
Inertia41reprocar canlı referans
RR7 Library+SSR61minimal meta-framework
Jüri rolüBirincilGüven
Senior ArchitectAstro tek stack7/10
PM/PdMAstro tek stack (A)8/10
QA/PerformanceKoşullu Astro; ADR Accepted BL-001 sonrası7/10
Kararİçerik
BirincilAstro 5 + React islands + Hub Content API
StandardAstro + Hub API (kfzservice24 tipi)
ProAynı Astro repo + @ygt/client-widgets islands
FallbackNext trimmedYok (D-028)
RedInertia, Vite SPA, RR7 FW, RR7 Lib, TanStack üretim, Next tek stack, Dual varsayılan
KilitYön şimdi; ADR Accepted → BL-001 pass sonrası

Operatör onay cümlesi (PM jüri): Müşteri landing fabrikasını Astro 5 + React islands olarak kilitle; Standard ve Pro aynı starter; BL-001 geçene kadar Next yalnızca gizli Pro fallback.


VersiyonTarihDeğişiklik
1.0.02026-06-166 eksen meclis ARGE, 100 skor, öneri Astro
1.1.02026-06-16RR7, TanStack Start, Nuxt/SvelteKit derin ARGE; genişletilmiş skor tablosu
1.2.02026-06-16Bölüm 11: ETP Umami/RUM kanıt denetimi, Astro taşınabilirlik, BL-016
1.3.02026-06-16Bölüm 12: goal denetimi, BL-001 kabul eşikleri
1.4.02026-06-16Bölüm 13: izole jüri oturumu, oybirliği Astro
1.5.02026-06-16Operatör Seçenek A onayı (D-024)