JJourney AI

Site şablonu

Journey AI içeriğini yayınlayan Next.js site şablonunun yapısı, ayarları ve bir isteğin sayfaya dönüşme yolu.

Son güncelleme: 14 Ekim 20264 dk okuma

Bu sayfada site şablonunun ne olduğunu, proje yapısını, gereken ortam değişkenlerini ve bir isteğin nasıl sayfaya dönüştüğünü öğreneceksin.

Journey AI başsız (headless) bir CMS'tir. İçerik panelde düzenlenir, API üzerinden JSON olarak sunulur. Ziyaretçinin gördüğü siteyi ise site şablonu çizer. Şablon Cms-Landing-Core deposunda duran bir Next.js projesidir. Her yeni site bu şablondan kopyalanır ve yapılandırılır.

Teknik yığın

AlanKullanılan
ÇatıNext.js 16 (App Router), React 19, TypeScript
StilTailwind CSS v4, shadcn/ui, lucide-react
Formreact-hook-form, zod
İçerikreact-markdown, remark-gfm
Paket yöneticisiYalnızca pnpm
Çıktıoutput: "standalone", Docker ve Node 22

Hızlı başlangıç

Terminal
git clone <Cms-Landing-Core> my-site && cd my-site
cp .env.example .env.local   # NEXT_PUBLIC_API_URL ve NEXT_PUBLIC_SITE_URL'i doldur
pnpm install
pnpm dev                     # http://localhost:3000
pnpm exec tsc --noEmit && pnpm lint

Yeni bir site projesi, depodaki scripts/create-landing-project.sh betiğiyle oluşturulur. Node 22 veya üstü gerekir; paket yöneticisi olarak yalnızca pnpm kullan.

README güncel değil

Deponun README dosyası artık bulunmayan klasörlere (templates/next-core/, examples/proxy.ts) atıf yapar. Kurulumda bu sayfayı ve deponun .env.example dosyasını esas al.

Proje yapısı

proxy.ts
page.tsx
layout.tsx
sitemap.ts
robots.txt/route.ts
indexnow.txt/route.ts
globals.css
types/cms.ts
next.config.ts
.env.example

Proje başına yapılandırma

DosyaNe ayarlanır
src/lib/template-config.tsAna sayfa slug'ı (HOME_SLUG), varsayılan dil (DEFAULT_LANGUAGE), HTML_LANG, OG_LOCALE, header ve footer slug'ları, sitemap dışı yollar, form metinleri
src/lib/middleware/languages.tsSitede açık olan diller (TEMPLATE_LANGUAGES)
src/lib/middleware/config.tsDil öneki davranışı, proxy ayarları
src/app/globals.cssTailwind v4 @theme ve shadcn renk değişkenleri
next.config.tsUzak görsel kaynakları, paneli iframe'de açacak alan adları

Ortam değişkenleri

Değerleri .env.example dosyasındaki açıklamalara göre doldur. Gizli değerleri depoya koyma.

DeğişkenGörevi
NEXT_PUBLIC_API_URLZorunlu. CMS API kökü, örneğin https://api.example.com.
PRIVATE_API_ADDRESSİsteğe bağlı. Sunucu tarafının kullanacağı iç CMS adresi.
NEXT_PUBLIC_SITE_URLCanonical, Open Graph ve paylaşım URL'lerinin kökü.
NEXT_PUBLIC_SITE_NAMEBaşlık şablonundaki site adı.
PREVIEW_MODEYalnızca sunucuda okunur. true ise site önizleme sitesi olarak çalışır.
NEXT_PUBLIC_INSPECTOR_ENABLEDPanel denetleyicisi. Yalnızca önizleme dağıtımında açılır.
SITE_PROXY_SECRETForm gönderiminde ziyaretçi bilgisini CMS'e iletmek için ortak anahtar.
REVALIDATE_ALLOWED_ORIGINSYenileme ucunu çağırabilecek kökenler.
REVALIDATE_NODESBirden çok sunucu örneği varsa yenilemenin iletileceği diğer örnekler.
NEXT_PUBLIC_BUILD_IMG_SERVER_ADDRESS, NEXT_PUBLIC_RUNTIME_IMG_SERVER_ADDRESSGörsel CDN'i için preconnect.

NEXT_PUBLIC_API_URL ayarlı değilse geliştirmede bir kurulum ekranı görürsün. Üretimde sayfalar 404 döner.

Tek içerik rotası

Sitede elle yazılmış sayfa yoktur. Tüm içerik tek bir catch-all rotadan geçer: src/app/[[...slug]]/page.tsx. /kurumsal/ekip adresi kurumsal/ekip slug'ına, / adresi HOME_SLUG'a çevrilir.

Bir istek nasıl sayfaya dönüşür

Proxy çalışır

src/proxy.ts statik dosyaları atlar, bozuk URL artıklarını temizler, CMS'ten gelen yönlendirme haritasını uygular, büyük harfli yolları küçük harfe 301 ile yönlendirir ve dil önekini çözer.

Sayfa CMS'ten çekilir

Rota GET /api/v1/page/detail/{dil}?path={slug} çağrısını yapar. Çağrı react.cache ile sarılıdır. Böylece metadata ve sayfa gövdesi tek isteği paylaşır.

Bileşen ağacı çizilir

components[] dizisindeki her üst düzey eleman DynamicComponent üzerinden bir React bileşenine çevrilir. Ayrıntı için Bileşenler sayfasına bak.

Metadata üretilir

buildMetadata SEO alanlarından başlık, açıklama, canonical, Open Graph, Twitter ve robots etiketlerini üretir. PageSchemas JSON-LD bloklarını basar.

Kabuk eklenir

Header, footer ve navigasyon kök layout'ta sunucuda çekilen şablondan gelir. İlk HTML'de bulunurlar.

Sonuç önbelleğe yazılır

Sayfa 300 saniyelik ISR ile önbellekte durur. Ayrıntı için Önbellek ve önizleme sayfasına bak.

Kod kuralları

  • Varsayılan olarak sunucu bileşeni yaz. "use client" yalnızca durum veya tarayıcı API'si gerektiğinde.
  • Tailwind ölçeğinin dışına çıkma: text-[17px] değil text-lg.
  • Ham renk yerine anlamsal token kullan: bg-background, text-muted-foreground.
  • İkonlar yalnızca lucide-react. GSAP modül seviyesinde değil, src/lib/gsap.ts üzerinden tembel yüklenir.

Sonraki adımlar

İlgili sayfalar

Bu sayfada