> ## Documentation Index
> Fetch the complete documentation index at: https://ziva.zeleza.ru/llms.txt
> Use this file to discover all available pages before exploring further.

# Hızlı Başlangıç

> Ziva ile 5 dakikada ilk TUI uygulamanızı oluşturun

# Hızlı Başlangıç

Bu kılavuzda Ziva'un ana özelliklerini gösteren basit bir TUI uygulaması oluşturacağız.

<img src="https://mintcdn.com/terem/7tfdR1JkDhuUAiXc/images/pic_1.png?fit=max&auto=format&n=7tfdR1JkDhuUAiXc&q=85&s=677c154e303b16acb93bd58dbd123aa4" alt="Ekran görüntüsü: temel Ziva kuyruğu" width="952" height="309" data-path="images/pic_1.png" />

## Adım 1: Proje Oluşturma

Yeni bir Go projesi oluşturun:

```bash theme={null}
mkdir ziva-demo
cd ziva-demo
go mod init ziva-demo
go get github.com/qzeleza/ziva
```

## Adım 2: Temel Uygulama

`main.go` dosyası oluşturun:

```go theme={null}
package main

import (
    "fmt"
    "log"
    "time"
    "github.com/qzeleza/ziva"
)

func main() {
    // Başlık ile görev kuyruğu oluştur
    queue := ziva.NewQueue("Ziva Demo Uygulaması")

    // Görünümü yapılandır
    queue.WithAppName("BenimUygulamam")
    queue.WithTasksNumbered(false, "[%d]")

    // Görevleri oluştur
    createTasks(queue)

    // Kuyruğu çalıştır
    if err := queue.Run(); err != nil {
        log.Fatal(err)
    }

    // Sonuçları göster
    printResults()
}

func createTasks(queue *ziva.Queue) {
    // 1. Zaman aşımı ile onay görevi
    confirm := ziva.NewYesNoTask("Onay", "Kuruluma başlansın mı?").
        WithTimeout(5*time.Second, "Evet")

    // 2. Ortam seçimi
    environments := []string{
        "development||Geliştirme ortamı",
        "staging||Test ortamı",
        "production||Canlı ortam",
    }
    env := ziva.NewSingleSelectTask("Ortam Seçimi", environments).
        WithDefaultItem("staging")

    // 3. Bileşen seçimi
    components := []string{
        "api||REST API sunucusu",
        "web||Web arayüzü",
        "cli||Komut satırı",
        "docs||Belgeler",
    }
    comp := ziva.NewMultiSelectTask("Bileşenler", components).
        WithSelectAll("Tümünü seç").
        WithDefaultItems([]string{"api", "cli"})

    // 4. Doğrulama ile proje adı girişi
    name := ziva.NewInputTask("Proje Adı", "Adı girin:").
        WithValidator(ziva.DefaultValidators.Required())

    // 5. Fonksiyonel görev
    setup := ziva.NewFuncTask("Kurulum", func() error {
        time.Sleep(2 * time.Second) // İş simülasyonu
        return nil
    }, ziva.WithSummaryFunction(func() []string {
        return []string{"Yapılandırma oluşturuldu", "Proje hazır"}
    }))

    // Tüm görevleri kuyruğa ekle
    queue.AddTasks(confirm, env, comp, name, setup)
}

func printResults() {
    fmt.Println("\n🎉 Uygulama tamamlandı!")
    fmt.Println("Sonuçlar görev nesnelerinde saklandı.")
}
```

## Adım 3: Çalıştırma

Uygulamayı çalıştırın:

```bash theme={null}
go run main.go
```

Farklı türde görevlerle etkileşimli arayüzü göreceksiniz.

## Adım 4: Sonuçlarla Çalışma

Sonuçlarla çalışmak için örneği genişletelim:

```go theme={null}
func printResults(confirm *ziva.YesNoTask, env *ziva.SingleSelectTask,
                 comp *ziva.MultiSelectTask, name *ziva.InputTask) {
    fmt.Println("\n📋 Yapılandırma Sonuçları:")
    fmt.Printf("Onay: %v\n", confirm.IsYes())
    fmt.Printf("Ortam: %s\n", env.GetSelected())
    fmt.Printf("Bileşenler: %v\n", comp.GetSelected())
    fmt.Printf("Proje adı: %s\n", name.GetValue())
}
```

Ve main'i güncelleyin:

```go theme={null}
func main() {
    queue := ziva.NewQueue("Ziva Demo Uygulaması")

    // Referansları koruyarak görevleri oluştur
    confirm, env, comp, name := createTasksWithReferences(queue)

    if err := queue.Run(); err != nil {
        log.Fatal(err)
    }

    // Sonuçları göster
    printResults(confirm, env, comp, name)
}
```

## Ana Kavramlar

### Görev Kuyruğu (Queue)

Görevlerin sıralı yürütülmesini yöneten merkezi bileşen:

```go theme={null}
queue := ziva.NewQueue("Başlık")
queue.WithAppName("BenimUygulamam")      // Uygulama adı
queue.WithClearScreen(true)              // Ekran temizleme
queue.WithTasksNumbered(true, "[%02d]")  // Görev numaralandırma
```

### Görev Türleri

1. **YesNoTask** - Evet/Hayır seçimi
2. **SingleSelectTask** - Tek seçenek seçimi
3. **MultiSelectTask** - Çoklu seçenek seçimi
4. **InputTask** - Doğrulama ile metin girişi
5. **FuncTask** - Fonksiyon yürütme

### Zaman Aşımları

Tüm görevler varsayılan değerlerle zaman aşımını destekler:

```go theme={null}
task.WithTimeout(10*time.Second, defaultValue)
```

### Doğrulama

Çeşitli veri türleri için yerleşik doğrulayıcılar:

```go theme={null}
v := ziva.DefaultValidators
inputTask.WithValidator(v.Email())        // Email
inputTask.WithValidator(v.IP())           // IP adresi
inputTask.WithValidator(v.MinLength(5))   // Minimum uzunluk
```

## Sonraki Adım

<CardGroup cols={2}>
  <Card title="Bileşenler" icon="puzzle-piece" href="/tr/components/queue">
    Tüm mevcut bileşenleri detaylı inceleyin
  </Card>

  <Card title="Doğrulama" icon="shield-check" href="/tr/validation/overview">
    Veri doğrulama sistemi hakkında bilgi edinin
  </Card>

  <Card title="Stil" icon="palette" href="/tr/customization/styling">
    Uygulama görünümünü özelleştirin
  </Card>

  <Card title="Örnekler" icon="code" href="/tr/examples/basic-usage">
    Gelişmiş kullanım örneklerini inceleyin
  </Card>
</CardGroup>
