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

# Şablonu Kullanmak (dotnet new)

> Bu repoyu bir .NET template'i olarak kurup kendi proje adınızla yeni bir çözüm üretme

Bu repo aynı zamanda bir **`dotnet new` şablonudur**. `.template.config/template.json` sayesinde tüm `DiyanetCleanArchitecture` adlarını ve Keycloak client öneklerini otomatik yeniden adlandırarak sıfırdan, isme özel bir çözüm üretebilirsiniz.

<Tip>
  Komut satırı yerine **görsel sihirbaz** tercih ederseniz: VS Code / Cursor için [Studio Eklentisi](/getting-started/studio-extension) aynı işi panelden yapar (DB/modül/servis/Keycloak seçimiyle).
</Tip>

## Şablon kimliği

`.template.config/template.json` dosyasındaki tanımlar:

| Alan            | Değer                                                    |
| --------------- | -------------------------------------------------------- |
| **name**        | `Diyanet Clean Architecture (DDD + CQRS + Event-Driven)` |
| **shortName**   | `diyanet-ca`                                             |
| **sourceName**  | `DiyanetCleanArchitecture` (yeniden adlandırma anahtarı) |
| **defaultName** | `DiyanetCleanArchitecture`                               |
| **identity**    | `DiyanetCleanArchitecture.Template`                      |

`sourceName`, üretim sırasında `-n` parametresiyle verdiğiniz isme değiştirilir: dosya adları, namespace'ler, `.csproj` referansları ve `appsettings`/`docker-compose` içindeki proje adları dahil.

## 1. Şablonu kur

Repo kökünde:

```bash theme={null}
dotnet new install .
```

Çıktıda `diyanet-ca` şablonu listelenir. Kurulu olduğunu doğrulamak için:

```bash theme={null}
dotnet new list diyanet-ca
```

<Note>
  Şablonu güncellemek/yeniden kurmak için `dotnet new install . --force`, kaldırmak için `dotnet new uninstall <repo-yolu>` kullanın.
</Note>

## 2. Yeni proje üret

Hedef bir klasörde:

```bash theme={null}
dotnet new diyanet-ca -n MyProject
```

Bu komut `MyProject` adıyla tüm çözümü üretir: `MyProject.API`, `MyProject.Application`, `MyProject.Domain`, … tüm `DiyanetCleanArchitecture` örnekleri `MyProject` olur.

### Şablon parametreleri (symbols)

<ParamField path="-n / --name" type="string">
  Üretilecek çözümün adı. `DiyanetCleanArchitecture` yerine geçer. Örn. `-n MosqueFinder`.
</ParamField>

<ParamField path="--ProjectKeycloakId" type="string" default="my-project">
  Keycloak client/realm öneki için **kebab-case** kimlik. `appsettings*.json` ve `docker-compose*.yml` içindeki `my-project` örneklerini değiştirir.
  Örn. `--ProjectKeycloakId mosque-finder` → `mosque-finder-website`, `mosque-finder-admin` client'ları.
</ParamField>

<ParamField path="--Framework" type="choice" default="net10.0">
  Hedef framework. Şu an tek seçenek `net10.0`.
</ParamField>

<ParamField path="--SkipRestore" type="bool" default="false">
  `true` verilirse üretim sonrası otomatik `dotnet restore` atlanır.
</ParamField>

### Tam örnek

```bash theme={null}
dotnet new diyanet-ca \
  -n MosqueFinder \
  --ProjectKeycloakId mosque-finder
```

Üretilen çözüm:

```text theme={null}
MosqueFinder/
├── MosqueFinder.slnx
├── src/
│   ├── MosqueFinder.API
│   ├── MosqueFinder.Application
│   ├── MosqueFinder.Domain
│   ├── MosqueFinder.Domain.SharedKernel
│   ├── MosqueFinder.Infrastructure.*
│   ├── MosqueFinder.Presentation.Website
│   └── MosqueFinder.Presentation.Admin
└── docker-compose*.yml   (mosque-finder-* client adlarıyla)
```

<Warning>
  Şablon üretiminde `.git/`, `.vs/`, `bin/`, `obj/`, `*.user` ve `.template.config/` dışlanır. Üretilen çözüm temiz gelir; kendi git geçmişinizi `git init` ile başlatın.
</Warning>

## 3. Üretilen projeyi başlat

```bash theme={null}
cd MosqueFinder
git init
cp .env.example .env        # değerleri doldurun (bkz. Hızlı Başlangıç)
docker compose up -d --build
```

Devamı için [Hızlı Başlangıç](/getting-started/quickstart) sayfasına geçin.

## Şablon yerine düz klonlama

Şablon mekanizmasını kullanmadan, adları `DiyanetCleanArchitecture` olarak bırakıp doğrudan repoyu klonlayarak da çalışabilirsiniz:

```bash theme={null}
git clone https://github.com/cihandelipinar/diyanet-clean-architecture.git
cd diyanet-clean-architecture
docker compose up -d --build
```

Bu durumda projeyi kendi domain'inize göre uyarlarken namespace'ler `DiyanetCleanArchitecture.*` kalır.
