# Aplikacje randkowe

Astrologiczna kompatybilność to kluczowy czynnik retencji w aplikacjach randkowych takich jak Bumble, Hinge, Tinder, Tantan oraz w aplikacjach astrologicznych typu NUiT, Struck. API AstroWay dostarcza gotowy wynik synastrii w skali 0–100 za jednym wywołaniem — bez konieczności posiadania własnego silnika efemeryd i bez licencji na Solar Fire ($495).

## Jak to działa

1. Użytkownik wprowadza datę, godzinę i miejsce urodzenia podczas rejestracji
2. Podczas dopasowania — twój backend wywołuje `/v1/synastry` z danymi obu osób
3. API zwraca `compatibility.score` (0–100) oraz `label` (harmonious/balanced/mixed/challenging)
4. Wynik jest używany jako jeden z czynników rankingowych

```
Algorytm dopasowania
  ├── Bliskość lokalizacji         (40%)
  ├── Wspólne zainteresowania      (30%)
  ├── Astrologiczna kompatybilność (20%)  ← AstroWay API
  └── Inne sygnały                 (10%)
```

## Kluczowe endpointy

| Endpoint | Kredyty | Co zwraca |
|---|---|---|
| `/v1/synastry` | 50 | Krzyżowe aspekty + wynik 0–100 |
| `/v1/human-design/compatibility` | 100 | Kompatybilność HD (typ + strategia) |
| `/v1/horoscope/compatibility` | 50 | Analiza tekstowa kompatybilności |

## Wzorzec integracji

```ts
// Podczas dopasowania — wywołaj synastrię
async function getCompatibility(userA: UserProfile, userB: UserProfile) {
  const result = await astrowayClient.synastry({
    chart1: {
      date: userA.birthDate,
      time: userA.birthTime || '12:00:00', // południe domyślne, jeśli nieznane
      timezoneOffset: userA.tzOffset,
      latitude: userA.birthLat,
      longitude: userA.birthLng,
    },
    chart2: {
      date: userB.birthDate,
      time: userB.birthTime || '12:00:00',
      timezoneOffset: userB.tzOffset,
      latitude: userB.birthLat,
      longitude: userB.birthLng,
    },
  });

  return {
    score: result.compatibility.score,      // 0-100
    label: result.compatibility.label,      // "harmonious"
    harmony: result.compatibility.harmony,  // ważona suma
    tension: result.compatibility.tension,
  };
}
```

<Aside type="tip">
Wynik synastrii jest niezmienny (zależy tylko od dat urodzenia). Zbuforuj parę `(userA_id, userB_id) → wynik` w swojej bazie danych. Jedno wywołanie API — i nie musisz już więcej przeliczać.
</Aside>

## Szacowanie budżetu

### Scenariusz: 1 000 nowych dopasowań dziennie

| Metryka | Wartość |
|---|---|
| Dopasowań/dzień | 1 000 |
| Kredytów/dopasowanie | 50 (synastry) |
| Kredytów/dzień | 50 000 |
| Kredytów/miesiąc | ~1 500 000 |
| Taryfa | **Business ($199/mies., 3 500 000 kredytów)** |

### Scenariusz: 50 dopasowań dziennie (startup)

| Metryka | Wartość |
|---|---|
| Dopasowań/dzień | 50 |
| Kredytów/dzień | 2 500 |
| Kredytów/miesiąc | ~75 000 |
| Taryfa | **Starter ($19/mies., 200 000 kredytów)** |

### Optymalizacja

- **Buforowanie** — przechowuj wynik w bazie danych, nie przeliczaj ponownie
- **Leniwe przetwarzanie** — obliczaj synastrię tylko wtedy, gdy użytkownik otwiera dopasowanie, a nie dla wszystkich potencjalnych par
- **Pakietowe obliczenia podczas rejestracji** — oblicz kompatybilność z top 20 potencjalnych dopasowań od razu

## Brak godziny urodzenia

Jeśli użytkownik nie zna godziny — przekaż `"time": "12:00:00"` (południe). Domówki będą mniej dokładne, ale pozycje planetarne i krzyżowe aspekty będą poprawne. Wynik kompatybilności pozostanie informatywny.

Dla kompatybilności HD czas jest ważniejszy — rozważ użycie `hd/sensitivity` do oceny wpływu niedokładnego czasu.

<CardGrid>
  <LinkCard title="Synastry API →" href="/products/synastry-api/" description="Szczegółowe informacje o endpointach kompatybilności" />
  <LinkCard title="Szybki start" href="/getting-started/" description="Pierwsze zapytanie w 5 minut" />
  <LinkCard title="Cennik" href="/pricing/" description="Od darmowego do Enterprise" />
</CardGrid>
