ahnifyDokumentation
Anwenderdokumentation

Wie ahnify benutzt wird.

Diese Seite fasst zusammen, was in der Anwendung steckt und wie man es benutzt — von Rollen & Rechten über Import und Qualitätsprüfung bis zur Systemkonfiguration. Wer stattdessen Code lesen will: die technische Referenz liegt als README.md im Projekt-Repository, ebenso vollständig auf Deutsch.

01 · Zugriffsmodell

Rollen & Rechte

Zwei unabhängige Ebenen: die funktionale Rolle bestimmt Schreibrechte, das Capability-Profil bestimmt Leserechte — pro Rolle einzeln konfigurierbar.

RolleSchreibrechte
adminAlles — inkl. Benutzerverwaltung und Systemeinstellungen
editorLesen + Schreiben (Personen, Familien, Dokumente, …)
viewerNur lesen
guestNur lesen — JWT ohne DB-Eintrag, 24 h gültig
Capability-Profile (Admin → Benutzer → Tab „Rollen"): jede Rolle hat einzeln togglebare Lese-Capabilities — Genealogie, Dokumente, private/lebende Personen, Orte, Quellen. Neue, frei benennbare Rollen sind anlegbar. Durchsetzung erfolgt serverseitig (SQL-WHERE bzw. 403) — die Navigation blendet passend zusätzlich Punkte aus, ist aber nicht die eigentliche Schranke.
Gast-Modus: über guest_access in den Systemeinstellungen aktivierbar. Gäste sehen standardmäßig genealogische Daten, Orte und Quellen — aber keine Dokumente, keine privaten/lebenden Personen, keinen KI-Review und keine Admin-Seiten.
02 · Login & Konto

Konto, Sicherheit & Zugang

Mein Konto (/profile.html) — Anzeigename und Sprache ändern, Passwort wechseln, 2FA verwalten, eigene Person im Stammbaum verknüpfen.

Bei aktivem SMTP: Passwort-Reset per zeitlich begrenztem Link, aus Datenschutzgründen immer generische Antwort (keine Auskunft, ob ein Konto existiert).

Zwei-Faktor-Authentifizierung (TOTP): QR-Code mit Authenticator-App scannen, Code bestätigen → Backup-Codes werden einmalig angezeigt. Login wird danach zweistufig. E-Mail-Code als Fallback, falls SMTP aktiv ist.

Admins können 2FA über require_2fa für alle Nutzer erzwingen.

Gerät merken: Beim 2FA-Login lässt sich optional „dieses Gerät merken" ankreuzen (nur sichtbar, wenn ein Admin unter Systemeinstellungen eine Merkdauer in Tagen hinterlegt hat) — folgende Logins von diesem Gerät überspringen dann den Code-Schritt, bis die Frist abläuft. Eigene gemerkte Geräte lassen sich im Profil einsehen und einzeln vorzeitig widerrufen; beim Deaktivieren von 2FA werden automatisch alle gemerkten Geräte mit entfernt.
Registrierungsanfragen (optional, allow_registration): Besucher beantragen im Login-Dialog ein Konto, Admins genehmigen mit Rollenwahl (versendet einen „Passwort festlegen"-Link) oder lehnen ab.
03 · Überblick

Dashboard

Landing-Page nach dem Login (/dashboard.html) — kombiniert Zähler, Zeitleisten-Diagramme und genealogische Kennzahlen zu einem Überblick über den ganzen Baum. Zwei Auswertungen gehen über einfache Aggregation hinaus: eine Analyse der zusammenhängenden Zweige und der längste bekannte Generationen-Pfad, beide per Klick direkt im Stammbaum nachvollziehbar.

Jede Kachel und jedes Diagramm respektiert die Rolle des Betrachters — ohne Leserecht erscheint ein Schloss-Symbol statt eines dauerhaften Ladezustands.

  • Zähl-Kacheln für Personen, Familien, Ereignisse, Dokumente, Orte, Quellen
  • Geburten/Sterbefälle pro Jahrhundert (gestapelt nach Geschlecht) + Ø-Lebensalter-Trend, beide mit einstellbarer Mindest-Fallzahl
  • Ereignistyp-Verteilung, Kinderzahl je Familie, häufigste Vor-/Nachnamen und Geburtsorte
  • Beleg-/Datenqualitäts-Score: Anteil Ereignisse mit Quelle, Verstorbene mit vollständigen Lebensdaten, Personen mit Dokument
  • Baumstruktur: Größe der einzelnen Zweige, längster Generationen-Pfad — beide Charts klickbar direkt in den Stammbaum
  • Letzte Änderung / Aktivität der letzten 30 Tage, damit wiederkehrende Besucher auf einen Blick sehen, ob sich etwas getan hat
04 · Kerndaten

Personen & Familien

Personen haben Grunddaten (Name inkl. Adelsprädikat/Beiname, Geburts-/Sterbejahr, ein Descriptor-Kurztext für Stammbaum und Karten), beliebig viele Ereignisse mit Datum und Ort, Quellverweise, verknüpfte Dokumente und ein Profilfoto.

Familien verbinden zwei Partner und beliebig viele Kinder, mit eigenen Ereignissen, Quellen und Dokumenten.

Sowohl die Personen- als auch die Familienliste zeigen eine Spalte mit der Anzahl verknüpfter Ereignisse — ein schneller Blick, wie gut eine Person oder Familie schon belegt ist, ohne erst hineinklicken zu müssen.

  • Stammbaum (/tree.html) — Lazy-Load per Klick, Suche, Zoom, Geschwister per Drag & Drop sortierbar
  • Ahnenfächer (/fan.html) — bis 6 Generationen, Zentrum frei wechselbar
  • Netzwerk-Graph (/timeline.html) — Personen & Ereignisse als verbundene Knoten
  • Alle drei Ansichten verlinken sich im Popup gegenseitig, Kartenansicht auf jeder Ebene verfügbar
05 · Belege & Transkription

Dokumente & KI-Pipeline

Upload unter /documents.html — JPEG, PNG, WebP, GIF, TIFF, PDF. SHA256-Duplikaterkennung, automatisches Thumbnail. Jedes Dokument bekommt automatisch eine 1-Seiten-Gruppe; mehrseitige Dokumente lassen sich zu Gruppen zusammenfassen (Drag & Drop zum Umsortieren, Gesamttext aus Einzeltranskriptionen). Wie bei Personen und Familien lassen sich einem Dokument mehrere Quellen zuordnen, je mit Fundstelle, Zitat und Konfidenz.

Ein Dokument lässt sich direkt mit beliebig vielen Personen, Familien und Ereignissen verknüpfen — praktisch, wenn ein Beleg (z. B. eine Urkunde) mehrere Personen gleichzeitig betrifft. Für ein Ereignis geht das in beide Richtungen: von der Ereignisseite aus ein bestehendes Dokument suchen und anhängen, oder umgekehrt vom Dokument aus ein Ereignis suchen (nach beteiligter Person, Ort, Datum oder Typ, da Ereignisse keinen eigenen Namen haben) und verknüpfen. Belegt das Dokument stattdessen ein noch gar nicht erfasstes Ereignis, muss man dafür nicht erst zur Person wechseln: „Neues Ereignis" direkt aus der Dokumentenansicht heraus legt Typ, Datum, Ort und die zugehörige Person oder Familie in einem Schritt an und verknüpft das Dokument automatisch als Beleg.

Die Dokumentenliste zeigt neben Typ und Datum auch eine Spalte „Verknüpfungen" (Anzahl verbundener Personen/Familien/Ereignisse auf einen Blick), lässt sich nach Dateiname oder Datum sortieren, und der Spaltenkopf bleibt beim Scrollen sichtbar.

Dokument hochladen ↓ ai_doc_queue (automatisch befüllt, wenn no_transcribe=0) ↓ Worker: python -m backend.worker_ai ai_transcriptions (Rohtext, Modell) ↓ manuell oder AI_AUTO_EXTRACT=1 ai_extracted_persons (merge_status=pending) ↓ /import_review.html Merge (Person zuordnen) | Accept (neue Person) | Ignore
Sicherheitsprinzip: Merge/Accept schreibt niemals in bestehende Personendaten — nur eine Zuordnung wird gesetzt. Eine Übernahme erfordert immer eine explizite Benutzeraktion.
06 · Datenübernahme

Import (GEDCOM & JSON)

/admin_import.html — zwei gleichwertige Formate, ein Ablauf: Upload → Review → Commit, jederzeit unterbrechbar.

GEDCOM 5.5.1 — der Standardweg für Daten aus Gramps, MacFamilyTree, Ancestry & Co. Export ebenfalls als GEDCOM 5.5.1 jederzeit möglich, inkl. Ereignissen, Quellen, Notizen und Datums-Qualifikatoren (ABT/BEF/AFT/BET).

JSON — eigenes Schema für Daten aus eigener Recherche, die mehr abbilden als GEDCOM erlaubt: echte Beteiligten-Rollen (Pate, Trauzeuge, Amtsperson statt nur „Subjekt"), Zitat-Seite/-Text mit Konfidenz, Orts-Koordinaten, Quellen-Hierarchie per parent_ref.

Beide Formate teilen sich Dublettenerkennung (fuzzy Namensvergleich + phonetischer Vorfilter, Konfidenz-Score Exact/Probable/Possible) und denselben zweistufigen Commit: zuerst werden alle Datensätze angelegt, dann Querverweise aufgelöst — auch wenn eine referenzierte Quelle oder Person erst später in der Datei steht.

Bekannte Grenze: Die Dublettenerkennung vergleicht nur gegen bereits vorhandene Personen in der Datenbank — nicht gegeneinander innerhalb derselben Importdatei.
07 · Belegstruktur

Quellen, Zuverlässigkeit & Ereignisse

Diese drei gehören zusammen: Ein Ereignis ist die Einheit, die belegt wird — eine Quelle liefert dafür Fundstelle, Zitat und eine Zuverlässigkeit (0–100, angelehnt an die GEDCOM-QUAY-Skala), ein Dokument ist meist der konkrete Scan dahinter. Personen und Familien erben Quellen und Zuverlässigkeit automatisch über ihre Ereignis-Beteiligung — ein Zitat direkt an der Geburt reicht, es muss nicht zusätzlich an der Person wiederholt werden.

In der Ereignisliste steht deshalb ganz am Ende jeder Zeile (vor dem Bearbeiten-Stift) eine einzige Spalte für beides zusammen: ein farbiger Kreis mit Symbol, wenn eine Quelle bewertet wurde (rot = wenig zuverlässig, gelb = mittel, grün = hoch), ein grauer Kreis-Umriss bei Quelle ohne Bewertung, ein ausgegrauter Strich bei fehlender Quelle. Ein Dropdown in der Filterleiste grenzt gezielt auf eine dieser Stufen ein (z. B. „nur unzuverlässige/fragwürdige Ereignisse anzeigen", um gezielt Nacharbeit zu finden) oder auf „ohne Quelle" — nützlich, um systematisch offene Lücken in der eigenen Recherche aufzuspüren, statt sie zufällig beim Durchklicken zu entdecken.

Quellen-Hierarchie

Quellenangaben lassen sich mit Personen, Familien, Ereignissen und Dokumenten verknüpfen — einheitlich über dasselbe Zitat-Modell (Fundstelle, Zitat, Konfidenz) — und seit der Hierarchie-Erweiterung auch untereinander gruppieren, analog zum Orte-Modell (Ort → Gemeinde → Kreis → Land).

Nützlich vor allem nach Imports: mehrere Einzelartikel derselben Publikation (z. B. ein biographisches Lexikon) lassen sich unter einem gemeinsamen Repository-Eintrag bündeln, statt die Liste als gleichrangige Einzeleinträge zu überfluten.

Felder im Detail

Orientiert an GEDCOM 5.5.1, da Quellen darüber importiert/exportiert werden — zwei Felder werden häufig verwechselt:

FeldBedeutung
Archiv / RepositoryDie Institution, die das Original verwahrt — Archiv, Bibliothek, Kirchengemeinde, Online-Datenbank (z. B. „Staatsarchiv Aurich", „FamilySearch")
SignaturDie genaue Fundstelle innerhalb dieser Institution — Aktenzeichen, Band/Seite, Mikrofilm-Nummer (z. B. „Rep. 135, Nr. 42")
Standard-ZuverlässigkeitOptional — Vorbelegung der Konfidenz für neue Zitate dieser Quelle; bereits angelegte Zitate bleiben davon unberührt

Kurz: Archiv/Repository beantwortet „wo?", Signatur „wo genau dort?" — wie Bibliotheksname vs. Signaturnummer im Katalog. Vollständige Feldliste inkl. GEDCOM-Tags: README.md, Abschnitt „Quellen".

08 · Geografie

Orte & Geocoding

Das zentrale Ortsverzeichnis (/places.html) verknüpft sich mit Ereignissen und lässt sich — analog zu den Quellen — hierarchisch gruppieren (Ort → Gemeinde → Kreis → Land).

  • Freitext-Ortsangaben mit Komma („Ort, Gemeinde, Kreis, Land") werden beim Speichern automatisch in die passende Eltern-Kette zerlegt — fehlende Zwischenebenen legt das System selbst an
  • Hierarchie-Tab in places.html: auf-/zuklappbarer Baum, Drag & Drop zum Umhängen zwischen Ebenen oder Umsortieren, „Auf oberste Ebene"-Button — gleiche Mechanik wie bei Quellen
  • Geo-Indikator in der Ortsliste zeigt auf einen Blick, welche Orte noch keine Koordinaten haben; Filter „Nur ohne Koordinaten"
  • Geocoding über Nominatim (OpenStreetMap), direkt aus der Listenansicht — einzeln per Klick (mit Mehrfachtreffer-Auswahl bei Namensgleichheit) oder als Batch für alle offenen Orte; kein API-Key nötig
  • Findet Nominatim einen historischen Ortsnamen nicht (häufig bei nicht mehr existierenden Bezeichnungen), lässt sich der Karten-Pin im Bearbeiten-Modal manuell per Klick setzen
  • Orte zusammenführen: Beim Import oder manuellen Erfassen entstehen gelegentlich Dubletten (Schreibvarianten, Tippfehler) — ein Merge-Dialog vergleicht zwei Orte Feld für Feld und hängt beim Bestätigen alle Verknüpfungen der Dublette auf den behaltenen Ort um, analog zum Personen-Zusammenführen
09 · Filtern

Suche & Filter

Jede Listenseite hat eine Freitextsuche, die parallel als Filter-Chips gesammelt werden (mehrere Begriffe = UND-Verknüpfung). Zusätzlich lässt sich gezielt auf eine einzelne Spalte einschränken:

spalte:wert Beispiele: geburtsort:Esens → nur Personen mit Esens als Geburtsort typ:Urkunde → nur Dokumente vom Typ „Urkunde" ort:Oldenburg → nur Familien mit Heiratsort Oldenburg

Nützlich, wenn ein Suchbegriff sonst mehrdeutig wäre (ein Ort, der zufällig auch als Nachname vorkommt) oder wenn eine Spalte gar nicht Teil der normalen Freitextsuche ist (z. B. Geburts-/Sterbedatum bei Personen). Ein Tooltip am Such-Icon jeder Liste zeigt die dort verfügbaren Spalten-Schlüsselwörter — sie unterscheiden sich je nach Liste, angelehnt an deren sichtbare Spalten. Unbekannte wort:-Kombinationen fallen automatisch auf die normale Suche zurück, es kann also nichts kaputtgehen, wenn ein Doppelpunkt zufällig im Suchtext vorkommt.

10 · Konsistenz

Qualitätsprüfung

/admin_quality.html — über fünfzehn regelbasierte Prüfungen, unterteilt in:

Ein datenbankweiter Dubletten-Scan (unabhängig von jedem Import) findet doppelt angelegte Personen und schlägt ein Zusammenführen vor — Feld für Feld, mit automatischer Übernahme aller Fremdschlüssel (Familien, Ereignis-Beteiligte, Dokumente, Notizen, Quellenverweise). Die Ähnlichkeitssuche kombiniert Jaro-Winkler (Tippfehler/Buchstabendreher) mit Kölner Phonetik als phonetischer Vorauswahl — robuster bei deutschen/friesischen Namensvarianten als die häufig genutzte, englisch-phonetische SOUNDEX-Funktion. Auf der Personenseite selbst gibt es zusätzlich einen „Duplikate finden"-Knopf, der gezielt nach möglichen Dubletten dieser einen Person sucht, unabhängig vom großen Scan.

11 · Administration

Systemeinstellungen & Branding

/admin_settings.html — App-Name, Basis-URL, 2FA-Pflicht, Registrierung, Stammbaum-Startperson, Ereignis-Sortierung, SMTP, Audit-Log-Schalter, KI-Provider — sowie das komplette Branding der Willkommensseite (Layout, Texte, Bilder, Impressum/Datenschutz) über einen Mini-WYSIWYG-Editor, kein Deployment nötig.

Wichtig: Passwort-Reset, 2FA-E-Mail-Codes und Einladungen brauchen eine funktionierende SMTP-Konfiguration und eine gesetzte app_url — ohne app_url werden aus Sicherheitsgründen keine Links mehr verschickt.
12 · Bedienung

Benutzeroberfläche

Keine Cookies: ahnify speichert nichts in Cookies — Anmeldung läuft über einen Token im Anfrage-Header, alles Weitere (s.o.) liegt in localStorage des Browsers und wird nie automatisch an den Server geschickt. Vollständige Liste aller gespeicherten Schlüssel: Technologie & Lizenzen.