Simplified Next.js File Structure (App Router)

Kutay Utku
4 dk okuma

📁 Proje Kök Dizini: my-next-app/

Next.js uygulamasının ana klasörüdür. Projenin tüm dosya ve yapılandırmaları burada yer alır.

📂 public/ — Statik Dosyalar

Tarayıcıya doğrudan servis edilen dosyalar burada bulunur.

Örnekler:

  • images/logo.png
  • fonts/inter.woff2

Bu dosyalar şu şekilde erişilir:

/logo.png
/images/logo.png

CDN mantığıyla çalışır, build sürecine dahil edilmez.

📂 src/ — (Opsiyonel ama Önerilen)

Kod organizasyonu için tavsiye edilen klasördür. Uygulama mantığı genellikle burada toplanır.

📂 components/ — Yeniden Kullanılabilir UI Bileşenleri

Uygulama genelinde tekrar kullanılabilen arayüz bileşenleri burada yer alır.

Örnekler:

  • Header.tsx
  • Footer.tsx
  • Button.tsx

Amaç:

  • Kod tekrarını azaltmak
  • Atomic design yapısını desteklemek
  • Modüler mimari oluşturmak

📂 app/ — App Router Çekirdeği

Next.js 13+ ile gelen App Router sisteminin merkezidir. Route yapısı klasör bazlıdır.

Temel Dosyalar:

  • layout.tsx
    Root layout. <html> ve <body> yapısını içerir. Tüm sayfalarda ortaktır.
  • page.tsx
    İlgili route’un ana sayfasıdır.
  • loading.tsx
    Veri yüklenirken gösterilen UI.
  • error.tsx
    Route seviyesinde hata yakalama ve gösterim.

📌 Route Örnekleri

/blog Route’u

app/
 └── blog/
      ├── layout.tsx
      ├── page.tsx

URL: /blog

  • layout.tsx → Blog bölümüne özel layout
  • page.tsx → Blog liste sayfası

Dinamik Route: /blog/[slug]

app/
 └── blog/
      └── [slug]/
           └── page.tsx

URL: /blog/post-1

  • [slug] → Dinamik parametre
  • page.tsx → İlgili blog yazısının UI’ı

API Route: /api/hello

app/
 └── api/
      └── hello/
           └── route.ts

URL: /api/hello

  • route.ts → Backend logic
  • GET, POST, PUT, DELETE handler’ları içerir

📂 Diğer Önemli Dosyalar

  • package.json → Proje bağımlılıkları ve script’ler
  • next.config.js → Next.js konfigürasyonu
  • .env.local → Ortam değişkenleri
  • tsconfig.json → TypeScript ayarları
  • .gitignore → Git tarafından takip edilmeyecek dosyalar

🎨Renk Kodlarının Anlamı

  • Mavi Klasörler: Dizinler
  • Yeşil Dosyalar: Page / Layout / UI
  • Sarı Dosyalar: Konfigürasyon
  • Mor Dosyalar: API / Server logic

🚀 Profesyonel ve Geliştirilmiş Açıklama

Modern Next.js App Router Mimarisi

Next.js App Router, dosya tabanlı routing mantığını React Server Components, nested layouts ve route-level error boundaries ile birleştirerek ölçeklenebilir ve modüler bir frontend mimarisi sunar.

Bu yapı:

  • 📦 Modüler
  • ⚡ Performans odaklı (Server Components)
  • 🔐 Route seviyesinde hata yönetimi destekli
  • 🧠 Otomatik kod bölme (Automatic Code Splitting)
  • 🌍 SEO dostu (Server-side rendering & Streaming)

1️⃣ app/ Klasörü Neden Kritik?

App Router sisteminde her klasör bir route segment’idir.

Örneğin:

app/dashboard/settings/page.tsx

Oluşturur:

/dashboard/settings

Bu yaklaşım:

  • Merkezi route tanımı gerektirmez
  • URL hiyerarşisini dosya yapısıyla eşleştirir
  • Nested layout’lar sayesinde UI tekrarını azaltır

2️⃣ Layout Sistemi (Nested Layout Architecture)

layout.tsx dosyaları sayesinde:

  • Global layout (root layout)
  • Bölüm bazlı layout (örneğin blog layout)
  • Segment bazlı layout

tanımlanabilir.

Bu, enterprise seviyede büyük projelerde:

  • Navbar tekrarını önler
  • Yetkilendirme katmanını route bazlı yönetmeyi sağlar
  • Performansı artırır (layout yeniden render edilmez)

3️⃣ Server & Client Component Ayrımı

App Router ile:

  • Varsayılan olarak tüm component’ler Server Component
  • "use client" ile client component yapılır

Avantajları:

  • Daha az JS bundle
  • Daha iyi TTFB
  • Daha güçlü SEO

4️⃣ API Route Yapısı

route.ts dosyası sayesinde aynı proje içinde backend logic yazılabilir.

Örnek handler yapısı:

  • export async function GET() {}
  • export async function POST() {}

Bu yapı:

  • Microservice ihtiyacını azaltır
  • Serverless uyumludur
  • Vercel optimizasyonlu çalışır

5️⃣ Ölçeklenebilir Proje Organizasyonu (Önerilen)

Profesyonel projelerde genellikle şu yapı tercih edilir:

src/
 ├── app/
 ├── components/
 ├── lib/          → yardımcı fonksiyonlar
 ├── services/     → API servisleri
 ├── hooks/        → custom React hooks
 ├── types/        → TypeScript tipleri
 └── constants/    → sabitler

Bu yapı:

  • Domain driven design’e yakındır
  • Test edilebilirliği artırır
  • Takım çalışmasını kolaylaştırır

🎯 Sonuç

Bu dosya yapısı:

  • Küçük projeler için sade
  • Orta ölçekli projeler için modüler
  • Büyük projeler için genişletilebilir

bir mimari sunar.

Next.js App Router yapısını doğru kullanmak:

  • Performans
  • SEO
  • Kod sürdürülebilirliği
  • Geliştirici deneyimi

açısından ciddi avantaj sağlar.

💬 Yorum Bırak