# Soyağacı - Türkçe Aile Ağacı Uygulaması

**Soyağacı** ailenizin tarihini kaydetmek, görselleştirmek ve yönetmek için tasarlanmış bir Angular uygulamasıdır.

## 🌳 Özellikler

- **Aile Ağacı Görselleştirmesi**: Interactive aile ağacı (family-chart kütüphanesi)
- **Akrabalik Yolu**: İki kişi arasında en kısa akrabalik yolunu bulun
- **İstatistikler**: Nesil sayısı, ortalama yaş, vs.
- **Dışa Aktarma**: SVG, PNG, JSON, CSV formatlarında
- **Progressive Web App (PWA)**: Native uygulama gibi çalışır
- **Çevrimdışı Destek**: Service Worker ile offline işlevsellik

## 🚀 Hızlı Başlangıç

```bash
# Kurulum
npm install

# Geliştirme (HTTPS, port 499)
npm start

# Production build
npm run build:prod
```

### Demo Bilgileri
- **E-posta**: demo&#64;example.com
- **Şifre**: demo

## 📁 Proje Yapısı

```
soyagaci/
├── src/                           # Standalone app
│   ├── app/
│   │   ├── auth/                  # Giriş/Kayıt
│   │   ├── shell/                 # Layout
│   │   └── app.routes.ts
│   └── index.html
│
├── projects/ng-soyagaci/          # Yeniden kullanılabilir kütüphane
│   └── src/lib/
│       ├── adapters/              # API adaptörleri
│       ├── components/            # UI components
│       ├── services/              # İş mantığı
│       └── interfaces/            # TypeScript types
│
├── public/
│   ├── manifest.json              # PWA manifest
│   └── service-worker.js          # Service Worker
│
├── angular.json
├── package.json
└── PWA_SETUP.md
```

## 🛠️ Komutlar

```bash
npm start                  # HTTPS + port 499'da başlat
npm run build:prod        # Production build
npm run library:build     # Kütüphane build
npm test                  # Unit testler
```

## 🔐 HTTPS Kurulumu

- **Port**: 499
- **Sertifikalar**: `D:/__sistem__/Masaustu/FikoYT.Yeni.Cag/docker/fikoyt-sunucu/merkez.go-server.com/cert/`

## 📦 API Adaptör Pattern

Backend bağımsız çalışır:

```typescript
export interface ISoyAgaciApiAdapter {
  aggregate(koleksiyon: string, pipeline: any[]): Observable<any[]>;
  ekle(koleksiyon: string, veri: any): Observable<any>;
  guncelle(koleksiyon: string, filtre: any, set: any): Observable<any>;
}
```

Mevcut adaptörler:
- **MockSoyAgaciApiAdapter**: localStorage (demo)
- **RestSoyAgaciApiAdapter**: TODO
- **FikoYTApiAdapter**: TODO

## 🌐 PWA Özellikleri

- Service Worker ile offline destek
- Installable app
- Native app experience
- Cache strategies

Detaylı kurulum: [PWA_SETUP.md](PWA_SETUP.md)

## 📊 Veri Modeli

```typescript
interface ISoyAgaciKisiVeri {
  isim: string;
  soyIsim: string;
  cinsiyet: 'E' | 'K';
  dogumTarihi?: string;
  vefatEtti?: boolean;
}

interface IAileBagi {
  kisi1: string;
  kisi2: string;
  akrabalikTuru: AkrabalikTuru;  // 40+ tür
}
```

Akrabalik türleri: ANNE, BABA, COCUK, KARDES, KUZEN, AMCA, DAYI, HALA, TEYZE, vb...

## 🔌 Bağımlılıklar

- @angular: ^19.2.0
- ng-zorro-antd: ^19.3.1 (UI)
- family-chart: ^0.9.0 (Ağaç)
- d3: ^7.9.0 (Veri)
- rxjs: ~7.8.0

## 🎨 Tasarım

- **Ön İşlemci**: LESS
- **UI Framework**: Ng-Zorro (Ant Design)
- **Tema**: Light Mode

## 🧪 Test

```bash
npm test
npm test -- --code-coverage
```

## 📚 Kaynaklar

- [PWA Kurulum Rehberi](PWA_SETUP.md)
- [Angular Docs](https://angular.io)
- [Ng-Zorro](https://ng.ant.design)

---

Made with 🌳 by FikoYT Team
