# MuslimOS / EhliSünnet App: Datenstruktur

Die App speichert Daten in `/DATA/AppData/muslimos/data/db.json`.

## Top-Level Abschnitte

- `tahajjud`: tägliche Tahajjud-Einträge mit `rakats`, `time`, `note`
- `sunnah`: täglich erledigte Sünnet-/Nafile-Namaz-Keys
- `evrad`: tägliche Evrad mit `short` und `long`
- `hifz`: Kuran-Hifz-Fortschritt (Sure → Anzahl Wiederholungen)

## Sünnet- und Nafile-Namaz-Liste

Statisch definiert in `/DATA/AppData/muslimos/app/public/app.js`:

### Müekked Sünnetler (stark empfohlen)

| Key | Name | Zeitpunkt | Rekât |
|-----|------|-----------|-------|
| sabah | Sabah sünneti | vor Fajr-Fard | 2 |
| ogle_once | Öğle ilk sünneti | vor Dhuhr-Fard | 4 |
| ogle_son | Öğle son sünneti | nach Dhuhr-Fard | 2 |
| aksam | Akşam sünneti | nach Maghrib-Fard | 2 |
| yatsi_son | Yatsı son sünneti | nach Ishaa-Fard | 2 |

### Gayr-i Müekked

| Key | Name | Zeitpunkt | Rekât |
|-----|------|-----------|-------|
| ikindi | İkindi sünneti | vor Asr-Fard | 4 |
| yatsi_once | Yatsı ilk sünneti | vor Ishaa-Fard | 4 |

### Nafile Namazlar

| Key | Name | Zeitpunkt | Rekât |
|-----|------|-----------|-------|
| kusluk | Kuşluk (Duhâ) | nach Sonnenaufgang | 2–8 |
| evvabin | Evvâbîn | nach Maghrib | 6 |
| israk | İşrak | nach Sonnenaufgang | 2 |
| tahiyyat | Tahiyyetü'l-mescid | beim Betreten einer Moschee | 2 |

## Gebetszeiten: Aladhan-Methoden für Wien

Die App cached Gebetszeiten im `prayerTimesCache`-Objekt. Die verwendete Methode ist **nicht explizit in der DB gespeichert** — sie wird beim Abruf über die Aladhan-API parametrisiert.

### Methoden-Vergleich (Wien, 19. Juni 2026)

| Methode | Name | Fajr |
|---------|------|------|
| 3 | MWL (18°) | 02:31 |
| 4 | Umm Al-Qura (18.5°) | 02:27 |
| 5 | Egyptian (19.5°) | 02:19 |
| 7 | Karachi (18°) | 02:33 |
| 8 | Gulf (19.5°) | 02:19 |
| 12 | **Diyanet (18°)** | **03:18** |
| 13 | Diyanet New | 02:31 |
| 99 | Custom (15°) | 02:55 |

**Aktueller Cache-Wert:** 03:46 (entspricht Methode 13 / Diyanet New)

**Wichtig:** Keine Standard-Aladhan-Methode gibt 03:09 aus. Falls der Nutzer eine abweichende Zeit erwartet (z.B. von einer lokalen Moschee-Tabelle), kann das an Imsak (10 min vor Fajr), einer anderen Berechnungsorganisation, oder einem lokalen Kalender liegen. Die App selbst speichert keine Methoden-ID — um die Methode zu ändern, muss der App-Code (`/DATA/AppData/muslimos/app/`) gepatcht werden.

### API-Abfrage

```bash
# Mit Methode 12 (Diyanet):
curl -s "https://api.aladhan.com/v1/timings/19-06-2026?latitude=48.2082&longitude=16.3738&method=12&school=hanafi"

# Alle Methoden testen:
for m in 3 4 5 7 8 12 13 99; do
  curl -s "https://api.aladhan.com/v1/timings/19-06-2026?latitude=48.2082&longitude=16.3738&method=$m" | python3 -c "import json,sys; d=json.load(sys.stdin); print(f'Method $m: Fajr={d[\"data\"][\"timings\"][\"Fajr\"]}')"
done
```

## Dateipfade

- App-Code: `/DATA/AppData/muslimos/app/`
- Datenbank: `/DATA/AppData/muslimos/data/db.json`
- Compose: `/DATA/.casaos/apps/muslimos/docker-compose.yml` (root-protected, use sudo)

## Compose-Details

```yaml
name: muslimos
services:
  muslimos:
    container_name: muslimos
    image: node:22-alpine
    ports:
      - "8099:3000"
    volumes:
      - /DATA/AppData/muslimos/app:/app
      - /DATA/AppData/muslimos/data:/app/data
```
