İçeriğe geç

ADR-001: Müşteri Landing Frontend Stack

Derin

Versiyon: 1.0.0
Durum: Onaylandı (2026-06-16, operatör Seçenek A)
Karar tarihi: 2026-06-16
Stack: Astro 5 + React islands + Hub Content API
Not: ADR tam kilidi BL-001 benchmark pass sonrası (§12.4). Next trimmed yalnızca BL-001 fail → Client Pro fallback. İlgili: 02-client-landings.md, 04-site-hub-cms.md, ADR-001-RESEARCH.md v1.4.0 §13, governance/BACKLOG.md BL-001


Müşteri tuning web siteleri (reprocarspain, kfzservice24, tuningwebsite dağıtımı) için landing UI stack’i seçilecek.

Bu katman:

  • Filament Site Hub (admin.{musteri}.com) ile ayrı repo
  • Hub Content API’den içerik alır
  • Müşteriye teslim edilebilir (landing repo + DB dump)
  • Portal (portal.*) ile karıştırılmaz

Kendi markalar (tuningwebsite, ygtlabs, ETP) bu ADR kapsamı dışındadır; onlar Next.js tam klon kullanır.

  • Laravel coupling; React özgürlüğü kısıtlı hissi
  • laravel-react-i18n yetersiz (reprocarspain mevcut acı noktası)
  • SPA hissi SEO ve hız beklentisiyle çelişiyor
  • Müşteriye landing verirken Laravel de gider

reprocarspain bugün: Laravel 12 + Inertia 3 + React 19 + Filament admin + SSR (PM2 reprocar-ssr). Migrate hedefi: landing’i ayır, admin Filament Hub’ta kalır.


#GereksinimÖncelik
R1Gelişmiş SEO (meta, schema, sitemap, CWV)Zorunlu
R2Çok dil (1-3 locale per site)Zorunlu
R3Hub API’den içerik fetch, sadece UI renderZorunlu
R4Admin değişikliği ~5 sn içinde görünür (kayıt + refresh)Zorunlu
R5Statik ağırlıklı, hızlı sayfa hissiZorunlu
R6Müşteriye teslim edilebilir ince repoZorunlu
R7Stajyer öğrenilebilirYüksek
R8ETP ekosistemi pattern uyumuOrta
R9İnteraktif sayfalar (simulator, funnel) desteklenmeliYüksek (reprocar)

TipÖrnekÖzellik
Basitkfzservice24Slider, services, blog, FAQ, contact
ZenginreprocarspainBasit + tuning simulator (Vehicle API, cascade UI, grafik)

Tek stack her iki tipi de karşılamalı veya dual-template (ADR aday D) kabul edilmeli.


Sunucuda kanıt: tunerstack.io/httpdocs (Astro 5.17, @astrojs/node, React 18 islands, PM2 :4321)

ArtıEksi
SEO-first, HTML ağırlıklı çıktıETP ekosisteminden farklı stack (öğrenme)
Müşteriye çok temiz repo (Node + Astro)Hub webhook revalidation yazılmalı
Statik blog/landing idealSimulator = React island port gerekir
Düşük JS bundlePrisma/admin prototipi tunerstack’te var; müşteri landing’de olmamalı

Simulator uyumu: SimulatorWidget React bileşeni Astro island olarak port edilebilir; Vehicle API client-side veya Astro server endpoint proxy.

i18n: astro-i18n veya route-per-locale (/es/, /de/); 1-3 dil için yeterli.

Revalidation: Astro 5 on-demand server islands veya build webhook; ADR-002 için custom Hub webhook gerekir (BL-007).


Sunucuda kanıt: ecutuningportal.com/httpdocs (landing) katmanı

ArtıEksi
ETP SEO guard’ları, next-intl, ISR taşınırMüşteri için ağır (Node, .next, Prisma kalıntısı temizlenmeli)
revalidateTag ADR-002’ye doğrudan uyumHer müşteri PM2 + daha fazla RAM
Simulator ETP vehicle section pattern’i yakınMüşteriye “framework” olarak Next vermek daha karmaşık
Stajyer ETP öğrendikten sonra aynı dilBundle ve build süresi Astro’dan yüksek

Trimmed clone içeriği: (landing)/*, components/landing/*, Hub API client, messages/ veya API-only i18n. Çıkar: admin, customer, Prisma (içerik Hub’dan).


Durum: Elendi (migrate kaynağı, hedef değil)


ŞablonStackKullanım
Client LiteAstro 5 + Hub APIkfzservice24, basit müşteriler
Client ProNext 16 trimmed VEYA Astro + simulator island paketireprocarspain, simulator/funnel

Artı: Doğru araç doğru iş; basit siteler hafif kalır.
Eksi: İki starter bakımı; stajyer iki pattern öğrenir.

Operatör sorusu: Tek stack mi zorunlu, dual-template kabul edilebilir mi?


E: React Router 7 Framework Mode (Remix birleşmesi)

Bölüm başlığı “E: React Router 7 Framework Mode (Remix birleşmesi)”

Durum: Reject (fabrika varsayılanı) — skor 77/100 (RESEARCH)

Aralık 2024’ten itibaren Remix v2 → RR7 Framework Mode. Route loader ile Hub API fetch doğal; tam React hydrate.

ArtıEksi
Loader pattern headless CMS ile uyumlurevalidateTag yok; ADR-002 custom cache (56/100)
Vite tabanlı; Next’ten ince repoETP ekibi RR7 deneyimi sıfır
Shopify Hydrogen backingFull hydrate; CWV Astro altında
reprocar SSR mental modeli yakınÜçüncü meta-framework; Astro+Next yeterli

İstisna: reprocar migrate (D-023 freeze) kalkarsa secondary değerlendirme.

i18n: prefix(":locale?", routes) + Paraglide/Intlayer; next-intl/astro kadar olgun değil.


Durum: İzleme listesi — skor 76/100; üretim şablonu değil

ArtıEksi
Full-stack React; loader benzeriRC/erken 1.x; supply-chain riski
Simulator tam ReactISR/tag revalidation yok
Router hızlı büyüyori18n birinci sınıf değil

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


AdaySkorNeden
RR7 Library + Vite SSR61Standart fabrika yok
Nuxt 483*Vue; React zorunlu
SvelteKit81*Svelte; React zorunlu
Gatsby~25Ölü trend

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


KriterAstroNextDualRR7 FWTanStack
Toplam (100)86.080.482.177.076.0
SEO / CWV92/9490/8291/8885/7984/86
Revalidation (ADR-002)6892805670
Müşteri teslim8862756970
Ekip öğrenme7292785478
Fabrika rolüPrimarySecondaryOpsiyonelRejectİzleme

Detay: ADR-001-RESEARCH.md. Benchmark (BL-001) ile revalidation/simulator doğrulanacak.


8 savunucu + 3 jüri (Composer 2.5, izole). Oybirliği: Astro 5 + React islands birincil.

RolKarar
BirincilAstro 5 + React islands + Hub API
Client StandardAstro (kfzservice24 tipi)
Client ProAynı Astro repo + @ygt/client-widgets
FallbackYok (D-028): Astro-only; benchmark tekrar
RedInertia, Vite SPA, RR7, TanStack üretim, Next tek stack, Dual varsayılan

Tam metin: ADR-001-RESEARCH.md §13. BL-001 kanıt: customremap.com (ilk müşteri).


Landing hangi framework olursa olsun:

// lib/hub-client.ts (her starter'da aynı mantık)
const content = await hub.getHomepage({ site: SITE_SLUG, locale });
  • Build time: SSG için fetch at build
  • Runtime: ISR veya Astro SSR ile revalidate
  • Secret: HUB_API_URL, HUB_SITE_TOKEN (ENV only)

Ortam: Sentetik demo + Hub mock API.

Senaryolar:

  1. Homepage (slider + services + FAQ)
  2. Blog list + blog detail
  3. Locale switch (ES / EN)
  4. Admin webhook → sayfa güncelleme süresi
  5. Simulator mini (reprocar cascade mock)

Ölçümler: LCP, JS bundle KB, build süresi, revalidation p50/p95, stajyer 4h “yeni section” testi.


  • reprocarspain canlı sistem: Acil migrate yok (D-022). Müşteri Inertia landing’i kullanmaya devam eder.
  • Yeni müşteri siteleri: ADR-001 kilitlenince şablon fork (BL-001).
  • Site Hub Filament, frontend’den bağımsız geliştirilebilir.
  • reprocar kodu referans şablon olarak kalır (Filament CMS Resource’ları Hub için).

VersiyonTarihDeğişiklik
0.1.02026-06-16İlk ADR
0.2.02026-06-16Oturum 8: site tipleri, aday D, reprocar canlı/freeze
0.3.02026-06-16Oturum 10: RR7, TanStack Start, reddedilen adaylar; RESEARCH v1.1
0.4.02026-06-16Jüri oybirliği Astro; RESEARCH v1.4 §13
1.0.02026-06-16Onaylandı: Astro 5 + React islands (operatör A); BL-001 bekliyor