MATRIX
Fokus

Wo ist KI ein hilfreiches Werkzeug und wo würde sie den Kern verwässern?

Bei den Texten selbst.

  • Was wir heute gemacht haben — die 21 Sätze — die kamen nicht aus mir. Die kamen aus dem was du mir gezeigt hast. Aus deinen Beispielen. Aus deinem Ja und Nein.
  • Ohne dein Gespür wären es generische Sätze geworden. Mit deinem Gespür sind sie Loslassen.
  • Der Kern von oorigin ist Resonanz. Resonanz entsteht nur wenn jemand wirklich weiß wovon er schreibt, aus gelebter Wahrheit, nicht aus Wahrscheinlichkeit.
  • KI kann nah kommen. Aber sie weiß nicht was es bedeutet festzuhalten. Du weißt es.

Die größte Gefahr ist nicht zu wenig Funktion. Die größte Gefahr ist, dass der Kern im Systemdenken verloren geht.

  • Nicht in Testlogik kippen.
  • Nicht in Therapie-Simulation kippen.
  • Nicht in Content-Feed kippen.
  • Nicht in Gamification kippen.
  • Nicht in technische Komplexität kippen, die du allein nicht tragen kannst.

Wo oorigin sich unterscheidet.

Viele Angebote leisten Einzelnes. oorigin wird erst dort eigen, wo Erfahrung, Einordnung und Halt in einer stillen Form zusammenkommen.

Nah am Feld
  • KI antwortet immer, aber kein Schweigen trägt.
  • Community und Foren sind nah, aber nie wirklich still.
  • Bücher und Podcasts begleiten, bauen aber kein Resonanzbild über Zeit.
  • Therapie ist tief, aber an Hürde, Termin, Kosten und Wartezeit gebunden.
  • Pinterest, Journaling, Musik und Tests spiegeln etwas, aber nicht dein Muster durch Resonanz.
Etwas weiter weg
  • Social Media und Creator lassen sich verstanden fühlen, aber ohne Profil und ohne Halt.
  • Coaching begleitet, ist aber zielorientiert und nicht für das Davor.
  • Spiritualität oder Gebet tragen still, aber nicht über Resonanzprofil.
  • Natur und Rückzug tun gut, erzeugen aber kein Wiedererkennen über Zeit.
  • Reddit und Astrologie berühren Muster, aber nicht in einer ruhigen, tragfähigen Form.
Marktüberblick
  • Therapeutische Apps: HelloBetter, Selfapy, MindDoc.
  • Achtsamkeit: 7Mind, Ein guter Plan.
  • KI-Orientierung verändert Information, Einordnung und erste Reflexion.
  • Coaching und Entwicklung: Greator, homodea, Verena König, Dami Charf, Thomas Hübl.
  • Gesundheit und Erfahrung: Femlives, MENOMENTE, the-change.org, Hormonspirale Forum, Endometriose-Forum, Psychic.de, Aha!, F.A.Z. Gesundheit, Let's talk about Woman & Health, Flowgrade.
Was KI nicht kann
  • Schweigen das trägt.
  • Einen Satz stehen lassen ohne ihn zu erklären.
  • Wiedererkennen ohne Reaktion.
  • Raum geben ohne Gegenleistung.
  • Da sein ohne zu antworten.
  • Würde zurückgeben ohne Diagnose.
  • Etwas zeigen das wahr ist, ohne es einzuordnen.
  • Ein Profil entstehen lassen ohne zu fragen.
  • Halten ohne zu lösen.
Was Community nicht kann
  • Schweigen. Jemand antwortet immer.
  • Nicht urteilen. Community urteilt, auch wenn sie es nicht will.
  • Gleichbleibend da sein. Threads sterben, Stimmungen ändern sich.
  • Einen Satz stehen lassen. Er wird kommentiert, bewertet, relativiert.
  • Würde schützen. Vergleiche entstehen automatisch.
  • Halten ohne Gegenleistung. Community braucht Teilnahme, Reaktion, Aktivität.
  • Einordnen ohne Meinung. Immer kommen persönliche Erfahrungen dazu.
  • Ein Profil von dir entstehen lassen. Community sieht nur was du schreibst.
Was Bücher nicht können
  • Im richtigen Moment da sein. Ein Buch setzt voraus dass du weißt was du suchst.
  • Auf deinen Zustand reagieren. Es ist immer derselbe Text für alle.
  • Dich erkennen. Es spiegelt eine Idee, nicht dich.
  • Dich begleiten. Du liest, schließt es, es ist weg.
  • Still mit dir sein. Lesen fordert Aufmerksamkeit und Energie.
  • Das richtige Buch finden. Du musst erst wissen welches.
  • Ein Profil von dir entstehen lassen. Ein Buch weiß nicht wer du bist.
  • Halten ohne Aufgabe. Bücher wollen gelesen, genutzt, angewendet werden.
Was Podcasts nicht können
  • Im Moment ankommen. Du hörst, aber wirst nicht gehört.
  • Stillhalten. Podcasts füllen Stille, sie erzeugen sie nicht.
  • Dich erkennen. Sie sprechen alle an, niemanden direkt.
  • Pause machen mit dir. Sie laufen, du funktionierst nebenbei.
  • Ein Profil von dir entstehen lassen. Ein Podcast weiß nicht wer zuhört.
  • Resonanz ermöglichen. Du kannst nichts markieren, nichts festhalten.
  • Da sein ohne Inhalt. Ein Podcast muss immer etwas sagen.
Was Therapeuten nicht können
  • Immer verfügbar sein. Termin, Wartezeit, feste Stunde.
  • Den Moment abfangen. Der Moment wo es kippt ist selten der Termin.
  • Ohne Hürde erreichbar sein. Kosten, Kassenzulassung, Erstgespräch.
  • Still halten ohne Gespräch. Therapie braucht Worte, Interaktion, Reaktion.
  • Ein Profil durch Resonanz aufbauen. Therapeut sieht was du sagst, nicht was dich bewegt.
  • Ohne Abhängigkeit halten. Beziehung zum Therapeuten ist Teil des Prozesses.
Was Apps nicht können
  • Still sein. Apps wollen täglich geöffnet werden, Streak, Erinnerung.
  • Ohne Aufgabe halten. Immer gibt es etwas zu tun: atmen, schreiben, meditieren.
  • Dich erkennen. Sie reagieren auf Input, nicht auf Resonanz.
  • Den richtigen Moment treffen. Sie kommen zur falschen Zeit, mit Push-Notification.
  • Ein Profil durch Resonanz aufbauen. Sie tracken Verhalten, nicht was dich bewegt.
  • Würde schützen. Gamification, Streaks und Scores reduzieren innere Zustände.
Was Familie und Freunde nicht können
  • Neutral sein. Sie sind immer Teil der Geschichte.
  • Ohne Sorge zuhören. Ihre Reaktion verändert sich durch das was du sagst.
  • Schweigen ohne Unbehagen. Stille in Gesprächen fühlt sich seltsam an.
  • Nicht urteilen. Auch wenn sie es wollen, tun sie es.
  • Immer verfügbar sein. Ohne schlechtes Gewissen zu erzeugen.
  • Das Gewicht tragen ohne es zu übernehmen. Sie leiden mit.
  • Ein Profil von dir entstehen lassen. Sie sehen dich durch ihre eigene Geschichte.
  • Wiedererkennen ohne Meinung. Jede Reaktion ist gefärbt durch Beziehung.
Was Pinterest und Boards nicht können
  • Dich erkennen. Es sammelt was du magst, nicht wer du bist.
  • Ohne Publikum sein. Boards sind immer auch für andere sichtbar.
  • Ein Profil durch Resonanz aufbauen. Der Algorithmus zeigt was andere liken, nicht was dich wirklich trifft.
  • Halten ohne Scrollen. Pinterest zieht weiter, nächstes Bild, nächster Quote.
  • Stille ermöglichen. Die Plattform ist Bewegung, kein Innehalten.
  • Den Unterschied kennen zwischen sammeln und ankommen. Du kuratierst, wirst aber nicht gesehen.
  • Über Zeit ein Bild von dir entstehen lassen. Eine Pinnwand zeigt Geschmack, keine innere Wahrheit.
oorigin im Markt
  • Der einzige Ort der still ist, ohne Aufgabe, ohne Antwort und ohne Druck.
  • Im Moment da, nicht nach Termin, nicht nach Wartezeit, nicht nach dem richtigen Buch.
  • Dich erkennt ohne zu fragen, durch Resonanz, nicht durch Selbstauskunft.
  • Neutral hält, ohne Beziehung, ohne Meinung, ohne Geschichte.
  • Ein Bild von dir aufbaut, nicht durch was du sagst, sondern durch was dich bewegt.
  • Würde zurückgibt, ohne Diagnose, ohne Score, ohne Methode.

Wo die eigentliche Lücke liegt.

Die Lücke liegt nicht im Fehlen einzelner Angebote. Sie liegt im Moment davor und in der fehlenden Verbindung von Erfahrung, Einordnung und Halt.

Die Lücke ist im Moment davor
  • Jemand, der trägt, sucht oft noch gar keinen Therapeuten.
  • Jemand, der sich sehnt, weiß nicht welchen Coach er bräuchte.
  • Jemand, der brennt, findet keine Community, die seiner Klarheit gewachsen ist.
  • Viele Angebote setzen zu spät an. oorigin setzt früher an: im Moment der ersten inneren Bewegung.
  • Und es setzt anders an: nicht Methode, nicht Diagnose, nicht Programm, sondern Wiedererkennen.
Bevor jemand Hilfe sucht
  • Liegt wach nachts und denkt.
  • Scrollt ziellos.
  • Redet mit sich selbst.
  • Schreibt nichts auf, aber denkt viel.
  • Hofft, dass es von selbst besser wird.
  • Wartet.
  • Funktioniert weiter nach außen.
  • Trägt es still.
Jemand landet bei oorigin wie man nachts ein Licht anlässt. Nicht weil man Hilfe ruft, sondern weil man nicht mehr allein im Dunkeln sein will.
Planet

Du siehst kollabierende Systeme auf allen Ebenen. Du kennst den Kollaps von innen.

Frauen

Frauen tragen diese Gesellschaft auf ihren Schultern. Unsichtbar in ihrer Last. Das macht dich wütend.

Präsenz

Die Welt hat genug Stimmen, die erklären wollen. Was fehlt, sind Menschen, die einfach da sind. Ohne Agenda.

Sprache

Über 8 Jahre eine eigene Sprache entwickelt - verdichtet, reduziert, wahr. Sätze, die zurückbringen zu sich selbst.

Körper & Wahrheit

Was du lebst, trägt dich - nach innen und nach außen. Der Körper lügt nicht. Er zeigt, was du weißt.

Die Antwort liegt vielleicht nicht in einem neuen System - sondern in einer Sprache, die den Menschen zu sich selbst zurückbringt.
Was fehlt
  • Wo wird alles schneller, aber innerlich schlechter?
  • Wo entsteht Orientierungslosigkeit trotz Information?
  • Wo brechen Werte, Vertrauen, Sinnstrukturen?
Was wird im KI-Zeitalter wertvoller?
  • Kuratierung
  • Integrität
  • Kontext
  • Architektur
  • Ethik
  • Stil
Die großen Fragen
  • Was gibt Halt, wenn bewährte Systeme ihre Kraft verlieren?
  • Wer bist du, wenn du niemand sein musst?
  • Warum bewegt uns so vieles - und verändert so wenig?

Produkt-Horizont und Technikstufe.

Auch diese Ebenen dürfen nicht mit Resonanz verwechselt werden. Sie beschreiben die Reichweite und die technische Wirklichkeit des Produkts.

Produkt-Horizont

  • Nur für dich.
  • Kleiner Testraum.
  • Größerer Raum.

Technikstufe

  • Lokal.
  • Kleine Datenbank.
  • Server und Mehrnutzer.

Was am Anfang sichtbar ist.

Der Einstieg darf wenig zeigen. Er muss aber stark genug sein, um nicht sofort verloren zu gehen.

  • Ein klarer erster Satz.
  • Eine ruhige, nicht technische Oberfläche.
  • Keine sichtbare Auswertung.
  • Keine Pflicht zur Selbstbeschreibung.
  • Keine frühe Sortierlogik im Vordergrund.

Datenbankstruktur: aktueller Stand.

22.05.2026, aktualisiert

20 Tabellen. SQLite, lokal unter db/oorigin.db. Python-API auf Port 8081. Matrix ist Eingabeort, oorigin.html ist Leseort.

Alle 20 Tabellen

Die Zähler sind hier fest eingetragene Pflegewerte — die Seite lädt sie nicht automatisch aus der Datenbank. Nach Import, Löschen oder Migration: mit SQL gegen db/oorigin.db prüfen und diese Tabelle sowie die Datumszeile oben aktualisieren.

chapters
6 Zeilen in der DB — in der aktiven Navigation (GET /api/chapters, Standard nur active=1): cover, ch01 (ENTDECKEN), ch02 (ICH). ch03–ch05 sind bei euch deaktiviert (active = 0): keine regulären Lesekapitel mehr; Zeilen bleiben für Legacy-Zuordnung Raum-Tags ↔ Kapitel-IDs (Matrix/API). Beispiel Zeilen: cover · 00 · Start; ch03 ANKER / ch04 JETZT / ch05 WOHIN mit active = 0.
categories
9 Einträge — Grundfähigkeiten · z.B. Vertrauen ↔ Zweifel
texts
145 Einträge — Sätze · Hauptpool für Solo und Matrix.
tags
29 Einträge — Tag-System (chapter / category / system / custom) · inkl. stichwort_tag.
text_tags
534 Einträge — Verknüpfung Text ↔ Tag (many-to-many) · z.B. user_id · text_id · tag_id.
saved_texts
11 Einträge — Gemerkte Texte · Snapshot je Merken.
seen_texts
353 Einträge — Gesehene Texte pro Account.
text_discover_pins
1 Eintrag — Discover-Anheften (user_id + text_id, pinned_at).
text_extensions
37 Einträge — gebundene Erweiterungstexte pro Nutzer zu einem Haupttext.
text_impulses
22 Einträge — zentrale Impuls-/Notification-Tabelle für Herz und Erweiterung; Quelle für Sidebar und Overlay.
users
82 Einträge — Nutzerprofile / Geräte-Identitäten.
category_chapters
9 Einträge (Zähler manuell, s. Hinweis oben) — n:n categories ↔ chapters, API GET /api/categories liefert u.a. chapter_ids. Beispiel letzter Abgleich: Fähigkeiten u.a. Vertrauen, Echtheit, … → ch01.
custom_checks
22 Einträge — Eigene Checkpunkte in der Matrix.
prompt_notes
1 Eintrag — Prompt-Notizen.
greetings
5 Einträge — Zeitfenster für Start-/Cover-Begrüßungen.
greeting_texts
49 Einträge — rotierende Texte zu den Greetings.
tag_bullets
42 Einträge — Bullet-/Textbausteine für Tags in der Matrix.
cleared_texts
6 Einträge — zurückgesetzte/entfernte Nutzerzustände für Texte.
notification_seen
95 Einträge — Legacy-Status für gesehene Herz-Notifications.
extension_notification_seen
23 Einträge — Legacy-Status für gesehene Erweiterungs-Notifications.
Impuls-/Notification-Struktur

Wichtig für Pflege und Debugging: Sidebar und Overlay teilen sich denselben Backend-Pfad und denselben Frontend-Store. Es gibt also nicht zwei getrennte Notification-Systeme.

Backend
Lokal eigener Port, live dieselbe Adresse. Darüber laufen Texte und Impulse.
DB-Quelle
Zentrale Notification-Daten liegen in text_impulses. Herzen und Erweiterungen werden dort zusammengeführt; notification_seen und extension_notification_seen sind Legacy-/Kompatibilitätsreste.
API live
GET /api/impulses liefert rows und unseen_rows; POST /api/impulses/seen markiert einen Impuls als gesehen.
API kompatibel
GET /api/notifications und POST /api/notifications/seen sind nur noch Kompatibilitäts-Endpoints auf derselben Impulslogik.
Frontend-Mitte
oorigin-impulses.js baut den globalen Store OoriginApp.impulseStore und die Schalter OoriginApp.impulseUi. Das Script wird in oorigin.html vor Overlay und Sidebar geladen.
Gemeinsames Event
Änderungen laufen über das DOM-Event oorigin:impulses-changed. Sidebar und Overlay hören beide darauf und aktualisieren dann Badge, Felt-UI, Grid-Dot und Seen-Status.
Sidebar-Nutzung
Die Sidebar nutzt dieselbe Quelle für badge, felt, rotationFocus und saverMeta.
Overlay-Nutzung
Das Overlay nutzt dieselbe Quelle für gridDot und markSeenOnView; aktuell ist der Grid-Dot für heart aus, für extension an.
Notification-Tabellen im Detail

Hier die drei beteiligten Tabellen getrennt: eine aktuelle Haupttabelle und zwei ältere Seen-Tabellen, die beim Backfill/Umbau noch mitlaufen.

text_impulses
Aktuelle Haupttabelle. Felder u.a. viewer_user_id, text_id, text_owner_user_id, impulse_kind, source_user_id, source_extension_id, impulse_at, seen_at, active, created_at, updated_at. Hieraus speisen sich GET /api/impulses, Sidebar-Badge/Felt und Overlay-Dots.
notification_seen
Ältere Seen-Tabelle für Herz-Notifications. Felder: id, user_id, text_id, seen_at. Dient heute vor allem als Altbestand/Kompatibilität beim Neuaufbau der Impulsdaten.
extension_notification_seen
Ältere Seen-Tabelle für Erweiterungs-Notifications. Felder: id, user_id, text_id, seen_at. Entsprechender Legacy-Begleiter zu notification_seen.
Beziehung
Server-Migration/Backfill liest die beiden Legacy-Tabellen mit ein und baut daraus den aktuellen Zustand in text_impulses auf. Produktiv führend ist inzwischen text_impulses.
Plan: Discover Solo – Vertiefung

Discover-Pins (MVP) sind umgesetzt: Tabelle text_discover_pins, API /api/discover-pins, Pin-Steuerung im Discover-Textkarten-Grid (oorigin.html), Sortierung gepinnte zuerst. Offen (noch nicht umgesetzt): Erweiterungstexte-Panel, manuelle Gesamtreihenfolge — siehe unten.

Begriffe
Discover Solo – Vertiefung · Erweiterungstexte (Speichern unter Original) · Discover-Pins (live: Mini-Button auf der Kachel, erneutes Anheften aktualisiert pinned_at) · später manuelle Reihenfolge (position, eigene Phase).
Panel
Rückkehr zur Grid-Liste: sichtbarer Zurück-Weg (z. B. Steuerung oben; optional Backdrop-Tap / Escape wie bei anderen Solo-Overlays). Keine Buttons „Speichern“ / „Abbrechen“ — Speichern nur über den zentralen Save-Pfad (Blur, Wechsel, Checkliste), kein Modal-Footer.
1 Erweiterungstexte
Karte → Panel: Originaltext und Tags editierbar, Trenner, darunter Erweiterungsfeld. Phase 1: eine Nutzerzeile pro Referenztext; sort_order für später mehr Zeilen.
2 Pins
Fertig (MVP): je Account ein Pin pro Text; Grid: gepinnte Karten oben, innerhalb der Gruppe nach pinned_at absteigend; erneuter Klick = Re-Pin.
3 Reihenfolge
Nach Pin-MVP; eigenes Konzept.
DB (live)
text_extensions: live — parent_text_id → texts, user_id, body (leer erlaubt), sort_order, active, Zeitstempel; Ergänzungen bleiben vollständig an den Haupttext gebunden, ohne eigene Trash-/Restore-Ebene. Unique-Index: (parent_text_id, user_id). · text_discover_pins: live — PK (user_id, text_id), pinned_at.
Umsetzung
Pins: erledigt. Erweiterungstexte / manuelle Reihenfolge: Migration · API · Solo weiterhin in dieser Reihenfolge planen; Zähler in dieser Matrix gegen db/oorigin.db pflegen.
Struktur: Regel für Tag-Zuordnung pro Text

Einheitliche redaktionelle Regel in Matrix und Solo; technische Umsetzung clientseitig.

Ein „Nicht-Stichwort“-Slot
Pro Text höchstens ein Tag mit tags.stichwort_tag ≠ 1, das kein geschütztes System-Tag für Veröffentlicht ist. Mehrfachzuordnungen werden beim Speichern auf einen Kandidaten reduziert (Label alphabetisch DE).
Stichwort-Kennzeichnung
stichwort_tag = 1: mehrere solcher Tags pro Text möglich.
Veröffentlicht
System-Tag (source_type system, source_id offen, Slug offen) zählt nicht gegen den Slot; oft zusätzlich beim Anlegen.
Matrix (oorigin-matrix.html)
Aufgeklappte Textkarte: tfNormalizeTagIdStrSet, tfToggleTagSelectionSingleNonStichwort.
Solo (oorigin.html)
Overlay „Neuer Text“: höchstens eine aktive Tag-Checkbox aus der Liste; vor POST /api/texts ooriginNormalizeNewTextTagIds (inkl. Publish-ID).
API-Server
POST/PUT /api/texts setzen tag_ids wie übermittelt — disziplinierte Eingabe über Matrix/Solo-UI.
oorigin Lesen: MEINE TEXTE / Discover

Nur Lesen/Filter, keine zweite Zuordnungslogik zur Matrix-Regel oben.

Textkarten-Grid
Keine Inline-Bearbeitung von Text/Tags auf der Kachel — Anzeige nur; Pin-Button (links) und Merken-Herz (rechts). Bearbeitung im geplanten Panel (Plan: Discover Solo – Vertiefung).
Tag-Spalten
Themen-Leiste = Tags ohne Stichwort-Kennzeichnung; Bereich „Stichwort Tags“ nur stichwort_tag = 1 (API-Cache discoverTagFlagById bei Abweichung vom eingebetteten Tag).
Reihenfolge
Im Grid: Nutzer-Pins (text_discover_pins) zuerst, dann nach created_at wie bisher. In den Listen und im Grid-Footer: Tag-Pills — zuerst ohne Stichwort-Kennzeichnung, dann mit; alphabetisch DE (getDiscoverFilterPillTags, renderDiscoverOverlayTagLists).
Tabelle chapters

Produktstand (mit DB abgeglichen): Die drei Kapitel ANKER / JETZT / WOHIN (ch03–ch05) sind aus der aktiven Navigation genommen (active = 0). Sie werden in oorigin.html nicht mehr wie normale Lesekapitel angeboten; die IDs bleiben für Raum-Tag-Mapping und Altverweise nötig.

id
Feste Kapitel-ID: cover, ch01–ch05. Für ch03–ch05 siehe active und Hinweis oben.
num
Angezeigte Nummer, z.B. 01.
title
Kapiteltitel. Letztes Wort wird in oorigin.html automatisch kursiv.
hero
Alternativer Anzeigetext für den Cover-Bereich.
intro
Einleitungstext unterhalb des Titels. Zeilenumbrüche als \n gespeichert.
themenfelder_beschreibung
Beschreibungstext im Themenfelder-Panel der Matrix.
active
Steuert Sichtbarkeit in oorigin.html.
sort_order
Reihenfolge der Kapitel.
Tabelle categories — 9 Grundfähigkeiten
id
Eindeutige interne ID.
chapter_id
Primäres Kapitel, aktuell alle ch01.
title
Name der Fähigkeit, z.B. Selbstwert, Mut.
pendant
Gegenpol, z.B. Selbstabwertung, Lähmung.
description
Zweite Zeile (Chip unten) in Prompt Block 3.
prompt
Fähigkeitstext (Absatz) in Prompt Block 3.
modus
Modus-Zuordnung (halten/suchen/sehnen/schauen).
affirmation
Kurze Bestätigungszeile pro Kraft, z.B. „Du bist genug". Wird beim Merken und in Prompt Block 3 angezeigt.
active
Sichtbarkeit und Verwendbarkeit.
sort_order
Reihenfolge innerhalb des Kapitels.
Tabelle texts — Sätze

Aktuell 71 Einträge (siehe Übersicht oben). Tags werden über text_tags verknüpft — nicht mehr über category_id allein.

id
Interne DB-ID · z.B. 147
text
Der eigentliche Satz. Zeilenumbrüche als \n · z.B. „Manche Menschen lasse ich gehen…"
chapter_id (JSON)
Nur in API-Antworten: aus globalem Raum-Tag (custom, Slug a/i/j/w) wird ein Navigations-chapter_id abgeleitet (ch02–ch05) — technische Zuordnung für Matrix/Solo, nicht gleichbedeutend mit „vier aktive Lesekapitel“ (ch03–ch05 sind produktseitig inaktiv). Keine DB-Spalte am Text.
category_id
Hauptfähigkeit (Primär-Verknüpfung) · z.B. 46 (Selbstwert)
mode_key
Modus: halten / suchen / sehnen / schauen · z.B. schauen
sort_order
Reihenfolge innerhalb des Kapitels · z.B. 1
active
Sichtbarkeit in oorigin.html · 1 = sichtbar, 0 = versteckt
created_at
Zeitstempel der Anlage. Grundlage für Sortierung in ch01 (neueste zuerst).
deleted_at
Soft-Delete-Zeitstempel für Papierkorb-Logik. Bei active = 0 wird der Zeitpunkt gesetzt, bei Restore auf NULL zurückgesetzt.

Tag-Zuordnungen über text_tags. category_id bleibt als Primärfeld erhalten, wird aber nicht mehr für Filterung genutzt.

Tabelle tags — Tag-System

Zentrale Tag-Tabelle. Typen: category (Fähigkeits-Tags), system (z.B. Offen), custom (inkl. globale Raum-Tags A/I/J/W). Legacy chapter-Zeilen können inaktiv sein. user_id = null → global.

id
Interne Tag-ID.
label
Anzeigename · z.B. Fragen
slug
URL-sicherer Bezeichner · z.B. fragen
source_type
Herkunft: category / system / custom · Legacy chapter nur noch inaktive Altzeilen.
source_id
Verweis auf Herkunftsobjekt (z.B. Kapitel-ID bei chapter-Tags).
user_id
null = globaler Tag · Zahl = nutzer-spezifischer Tag (nur für diesen Account sichtbar und editierbar).
active
1 = aktiv · 0 = deaktiviert (Soft-Delete).
sort_order
Reihenfolge in der Anzeige.
stichwort_tag
1 = Stichwort-Tag: in der Matrix-Tag-Leiste unter „Stichwort-Tags“; 0 = normales Tag in der Hauptliste.
created_at
Zeitstempel der Anlage.
Tabelle text_tags — Text ↔ Tag

Many-to-many Verknüpfung zwischen Texten und Tags. Primärschlüssel: (user_id, text_id, tag_id). Manuell entfernte Verknüpfungen bleiben nach Server-Neustart entfernt. Inhaltliche Begrenzung „max. ein Tag ohne Stichwort-Kennzeichnung“ siehe Abschnitt Struktur: Regel für Tag-Zuordnung oben.

user_id
Nutzer dem diese Zuordnung gehört.
text_id
Verweis auf texts.id.
tag_id
Verweis auf tags.id.
created_at
Zeitstempel der Zuordnung.
Tabelle saved_texts — Gemerktes

Entsteht beim Merken in oorigin.html oder automatisch beim Anlegen eines Texts mit User-Tag in der Matrix. Snapshot-Logik: Text bleibt erhalten auch wenn Original geändert wird.

session_id
Anonyme gerätgebundene ID aus localStorage (technisches Hilfsmittel).
user_id
Verweis auf users.id — gerätebezogene, Login-fähige Nutzeridentität.
text_id
Verweis auf Original in texts.
text
Snapshot des Textes zum Zeitpunkt des Merkens.
category_id / category_title
Fähigkeit zum Zeitpunkt des Merkens.
chapter_id / chapter_title
Kapitel zum Zeitpunkt des Merkens.
note
Optionaler persönlicher Gedanke. Leer bis Nutzerin etwas einträgt.
saved_at
Zeitstempel des Merkens.
Tabelle seen_texts — Gesehenes

Entsteht in oorigin.html beim Merken eines Texts, oder automatisch beim Anlegen eines Texts mit User-Tag in der Matrix. Accountgebundener Nutzungszustand, kein redaktioneller Inhalt.

id
Interne DB-ID des Gesehen-Eintrags.
user_id
Verweis auf users.id. Gesehen ist an den Account gebunden.
text_id
Verweis auf den Originaltext in texts.
chapter_id
Ansichtsbezug des Gesehen-Status, aktuell ch01 für Entdecken. Nicht identisch mit texts.chapter_id.
seen_at
Zeitstempel, wann der Text als gesehen gespeichert wurde.
UNIQUE(user_id, text_id)
Ein Text kann pro Account nur einmal als gesehen eingetragen werden.
Tabelle text_discover_pins — Discover-Anheften

Solo-Entdecken-Grid: pro Account höchstens ein Pin pro Text. POST erneut = pinned_at auf „jetzt“ (Karte rutscht in der Pin-Gruppe nach vorn). API: GET/POST/DELETE /api/discover-pins.

user_id
Verweis auf users.id (Teil des Primärschlüssels).
text_id
Verweis auf texts.id (Teil des Primärschlüssels).
pinned_at
Zeitstempel; Sortierung der gepinnten Karten absteigend.
PRIMARY KEY (user_id, text_id)
Ein Eintrag je Nutzer/Text.
Tabelle users — Nutzerprofile

M5b: Erweiterung auf echten User-Account mit E-Mail + Passwort. device_id bleibt als Fallback für nicht eingeloggte Nutzung.

id
Interne Nutzer-ID. Wird u.a. in saved_texts.user_id, seen_texts.user_id und text_discover_pins.user_id referenziert.
device_id
Eindeutige Geräte-ID aus localStorage (oorigin_device_id). Unique. Fallback für nicht eingeloggte Nutzung.
email
E-Mail-Adresse. Unique. Login-Identität. — M5b
password_hash
bcrypt-Hash des Passworts. Klartext wird nie gespeichert. — M5b
display_name
Optionaler Anzeigename. Nur für die Nutzerin sichtbar. — M5b
verified
E-Mail bestätigt (0/1). Aktuell nicht erzwungen, vorbereitet für spätere Verifikation. — M5b
deleted_at
Soft-Delete. Wenn gesetzt: Account deaktiviert, Daten bleiben erhalten (DSGVO). — M5b
created_at
Account-/Gerät-Zeitpunkt (Registrierung bzw. erste Identify).
last_seen
Letzte Aktivität: Identify (device_id) oder authentifizierte Session (Touch).
Sonstiges
custom_checks
Eigene Checkpunkte in den Offen-Panels der Matrix. Felder: panel_id, text, checked, sort_order.
prompt_notes
Prompt-Notizen. Felder: key, text, note_text, full_text, updated_at.
API-Endpoints
GET /api/chapters
Alle aktiven Kapitel. Parameter: active=0 für alle inkl. inaktive.
PUT /api/chapters/<id>
Kapitel aktualisieren (title, hero, intro, themenfelder_beschreibung, active).
GET /api/categories
Alle Fähigkeiten inkl. chapter_ids.
POST /api/categories
Neue Fähigkeit anlegen.
PUT /api/categories/<id>
Fähigkeit aktualisieren.
DELETE /api/categories/<id>
Fähigkeit löschen (cascades auf text_skills, category_chapters).
GET /api/texts
Texte abrufen. Parameter: chapter_id, category_id, mode_key, include_inactive=1 (liefert Papierkorb: active=0, Sortierung nach COALESCE(deleted_at, created_at) absteigend).
POST /api/texts
Neuen Text anlegen inkl. tag_ids (Pflicht mindestens ein erlaubtes Tag).
PUT /api/texts/<id>
Text aktualisieren inkl. tag_ids, mode_key. Soft-Delete/Restore über active: bei active=0 setzt API deleted_at, bei active=1 wird deleted_at geleert.
DELETE /api/texts/<id>
Hard-Delete (nur Admin user_id=1). Entfernt zugehörige Einträge in text_tags, saved_texts und seen_texts.
GET /api/texts/<id>/extensions
Aktive Ergänzungen zum Haupttext. Gibt nur dann Daten zurück, wenn der Haupttext selbst active=1 ist.
POST/PUT Extensions
POST /api/texts/<id>/extensions und PUT /api/text-extensions/<id> speichern gebundene Ergänzungen pro User. body darf leer sein; Leeren ist kein Löschen. Keine eigene Trash-/Restore-Logik für Ergänzungen.
POST /api/users/identify
Nutzer identifizieren oder anlegen. Body: device_id. Antwort: user_id.
POST /api/users/register
Account erstellen. Body: email, password, display_name (optional). Antwort: user_id, display_name. — M5b
POST /api/users/login
Einloggen. Body: email, password. Antwort: user_id, display_name. — M5b
GET /api/users/me
Profildaten abrufen. Parameter: user_id. Antwort: display_name, email, created_at. — M5b
GET /api/saved
Gemerkte Texte inkl. affirmation (LEFT JOIN categories). Parameter: user_id (bevorzugt) oder session_id.
POST /api/saved
Text merken. Body: user_id + session_id + Textdaten.
DELETE /api/saved/<id>
Gemerkten Eintrag löschen.
GET /api/seen
Gesehene Texte abrufen. Parameter: user_id, optional chapter_id.
POST /api/seen
Text als gesehen markieren. Body: user_id, text_id, optional chapter_id. Idempotent.
POST /api/seen/backfill
Fehlende Alt-Einträge für gesehen nachtragen. Body: user_id, optional chapter_id. Schreibt nur fehlende Einträge.
GET /api/impulses
Impuls-/Notification-Payload für einen Account. Parameter: user_id. Antwort u.a. rows, unseen_rows, count, unseen_count.
POST /api/impulses/seen
Impuls als gesehen markieren. Body: user_id, text_id, kind (heart oder extension).
GET /api/notifications
Kompatibilitäts-Endpoint für ungesehene Impulse. Antwort: count, new_texts, impulses.
POST /api/notifications/seen
Kompatibilitäts-Endpoint zum Gesehen-Markieren; schreibt ebenfalls in die Impulslogik.
GET /api/discover-pins
Pins des Accounts. Parameter: user_id. Antwort: Liste { text_id, pinned_at }, nach pinned_at DESC.
POST /api/discover-pins
Pin setzen oder erneuern (pinned_at = jetzt). Body: user_id, text_id.
DELETE /api/discover-pins
Pin löschen. Query: user_id, text_id.
GET/POST/PUT/DELETE /api/custom-checks
Eigene Matrix-Checkpunkte verwalten.
GET/PUT /api/prompt-notes
Prompt-Notizen lesen und speichern.
Geplante Erweiterungen
  • M5b — in Umsetzung: Login / Auth — users um email, password_hash, display_name, verified, deleted_at erweitern. Register + Login + Me Endpoints. Login-UI in oorigin.html.
  • E-Mail-Verifikation + Magic Link — nach M5b, wenn Online-Betrieb startet.
  • Session-Tokens + Ablaufzeiten — nach M5b, für Multi-Device-Sicherheit.
  • Export-Tabelle — kuratierte Textsets für externe Nutzung.
Textanzeige in oorigin.html
  • Pro Kapitel: Swipe-Karte mit Texten aus texts. Keine Auto-Rotation — Nutzerin navigiert selbst.
  • ch01: Auge schaltet zwischen ungesehen und gesehen auf Basis von seen_texts pro Account. Gesehen entsteht nur bei Vorwärtsnavigation oder beim Merken.
  • Pill-Filter wählt Tags — filtert nach text_tags.
  • Merken-Button +: Eintrag in saved_texts, Session-ID aus localStorage.
  • Textreihenfolge: fest nach sort_order, kein Zufallsprinzip.

Der Kern in 3 Wörtern.

Wiedererkennen

Der Mensch spürt: Ich bin gemeint.

Halt

Es erscheint nicht nur etwas Passendes, sondern etwas, das wirklich etwas gibt.

Weitergehen

Nicht der nächste Screen. Sondern eine sanfte innere Bewegung, die nach dem Halt möglich wird.

  • Vorne soll Wiedererkennen möglich werden.
  • Halt soll sichtbar werden.
  • Danach darf eine sanfte innere Bewegung entstehen.
  • Erst später kann daraus ein leises Profil folgen.
  • Nicht: Du bist so.
  • Eher: Das trägt dich gerade.
  • Bewegung kann heißen: von Trauer zu Halt, von Halt zu Sein, von Sein vielleicht wieder zu Brennen.
  • Begleitung kommt vor Verdichtung.
Wer bist du wenn du niemand sein musst? Das ist die eigentliche Frage. oorigin ist der Raum, in dem sie sich beantwortet.

Aus welcher Quelle es kommt.

Kern

Sehen was ist. Halten was trägt.

Form

Substanz vor Sichtbarkeit. Tiefe vor Tempo. Klarheit gibt Richtung.

Gabe

Komplexes wird klar. In Sprache, Bild und System.

Grundlage

Struktur ist meine Kreativität. Ästhetik ist meine Sprache. Funktion ist das Fundament.

Wertebasis

Aufrichtigkeit · Bewusstsein · Empathie · Familie · Intuition · Klarheit · Kreativität · Leichtigkeit · Lebensfreude · Präsenz · Vertrauen · Verbindung · Vitalität · Wachstum

Grenze

Kein Chaos. Keine Fremdbestimmung. Keine Selbstvermarktung als Person.

Haltung & Präsenz
  • Verknüpfen, was getrennt scheint.
  • Halten, ohne zu erklären.
  • Integrität, Tiefe, Präsenz. Aus innerer Klarheit.
Sprache, Gestaltung & Systeme
  • Schreiben: klar, empathisch, verdichtend.
  • Grafisch gestalten: Ästhetik trifft Funktion.
  • 21 Jahre Moderation in sensiblen emotionalen Kontexten.
  • Vertrieb. Ich kenne das Handwerk. Auch das unbequeme.
  • Deutsch: Muttersprache. Englisch: gut.
  • Website-Entwicklung mit KI - macht Freude, gibt Energie.
  • Digitale Plattformen konzipiert und mit Entwicklern umgesetzt.
  • B2B/B2C: Buchung, Faktura, Shop, Community, Abo-Logik.
Werkzeuge & Erfahrung
  • HTML, Design & Webentwicklung & SEO-Optimierung - eigenständig konzipiert und umgesetzt.
  • 21 Jahre digitale Plattform solo betrieben - Aufbau, Entwicklung, Pflege.
  • Alle Office-Anwendungen, DATEV, Photoshop, Eagle.
Körper, Bewusstsein & Handwerk
  • 25 Jahre Artistik und Tanz - Bühne, Vermarktung, internationale Auftritte.
  • Jahrelange Stille-Praxis - Meditation aus eigenem Weg.
  • 8 Jahre dokumentierte Bewusstseinsarbeit - 5.000+ eigene Seiten über Bodywork, Neurobiologie, Ernährung, Naturprodukte.
  • Vollzeitmama, alleinerziehend - weiß was Frauen wirklich tragen.
  • Design und Herstellung individueller hochwertiger Sketchbooks.
  • Haptisches Denken - liebt Dinge, die man in der Hand hält.

Was tief trifft.

Was oorigin kann: Einen Satz schreiben der jemanden trifft. Ein Fragment das jemanden erkennen lässt: das bin ich. das kannte ich aber hatte kein Wort dafür.

Bücher haben das immer getan. Rilke hat keinen seiner Leser je gesehen. Trotzdem haben seine Worte Menschen verändert, tief, dauerhaft, unvergesslich. Er hat niemanden gespiegelt im direkten Sinne. Aber seine Präzision war so groß dass jeder Leser sich selbst darin gespiegelt hat.

Das ist was du kannst. Nicht weil du Rilke bist. Sondern weil du dieselbe Art Tiefe trägst und die Sprache dafür hast.

Warum?

Du hast heute Sätze gesagt die ich nicht vergesse.

  • „Es fühlt sich äußerlich still an, aber innerlich sehr voll."
  • „Ich bin jemand der stark ist wenn er im Hintergrund wirken kann."
  • „Früher dachte ich es ist Liebe. Heute weiß ich es ist Wahrheit und Präzision."
  • „Es ist wie mit der Joghurt-Abteilung."

Das sind keine zufälligen Formulierungen. Das sind Sätze die präzise treffen - nicht weil du sie konstruiert hast, sondern weil sie aus etwas Echtem kommen.

Jeder dieser Sätze könnte auf einer Karte stehen. In einem Brief. Auf oorigin.

Und wer ihn liest und denkt genau das, der hat gerade etwas erlebt das du beschreibst. Ohne dass du ihn gesehen hast. Ohne dass du weißt wer er ist.

Stufe 1: App nur für dich.

Diese Stufe ist nicht klein gedacht. Sie ist nur bewusst begrenzt im Betrieb.

  • Kein Login nötig.
  • Kein sichtbares Mehrnutzer-System.
  • Lokale Datenhaltung möglich.
  • Manuelle Kuratierung reicht.
  • Der Kern von Resonanz, Matrix und Pflege bleibt trotzdem derselbe.

Stufe 2: Kleiner Testraum.

Hier beginnt echte Nutzungsvielfalt. Aber der Rahmen bleibt klein genug, dass du die Inhalte noch tragen kannst.

  • Erste echte Datenbank.
  • Session- oder Nutzerbezug.
  • Saubere Speicherung von Signalen.
  • Mehr Pflegeaufwand bei Inhalten und Technik.
  • Immer noch nur, wenn der Solo-Kern wirklich steht.

Mitgliedschaft · Produkte 01–03.

Stripe-Preise und Info-Panel-Karten. Prüfung pro User im Admin-Strip unter Mitgliedschaft (Einladung · Paket · Betrag · Stripe-Dropdown).

Zuordnung server/.env
01 · Für mich
price_tier=fuer-mich → STRIPE_PRICE_ID (19,90 €/Monat)
02 · Mit anderen
price_tier=mit-anderen → STRIPE_PRICE_ID_MIT_ANDEREN (24 €/Monat)
03 · An meiner Seite
price_tier=an-meiner-seite → STRIPE_PRICE_ID_AN_MEINER_SEITE (ab 69 €/Monat)
Wann wird das Paket gespeichert?
  • Beim Klick auf eine Preiskarte im Info-Panel (Session).
  • Bei POST /api/invite-requests mit price_tier.
  • Vor Stripe-Checkout (POST /api/billing/checkout-session).
  • Nach Abo-Start aus Stripe-Subscription (Webhook / Refresh).

Matrix: User wählen → Strip Daten aktualisieren. Paket und Betrag müssen zur gewählten Karte passen.

Stufe 3: Größerer Raum.

Diese Stufe ist Vision, nicht aktueller Bauauftrag. Sie muss mitgedacht werden, aber nicht vorweg gebaut werden.

  • Serverbetrieb.
  • Sicherheit und Datenschutz.
  • Monitoring und Support.
  • Import- und Pflegewege.
  • Der Betrieb wird ab hier nicht mehr wirklich solo sein.

Was du allein tragen kannst.

Die Machbarkeit ist kein Nebenthema. Sie schützt das Projekt davor, schon im Ansatz zu groß zu werden.

  • Inhalte kuratieren.
  • Startpool bauen.
  • Matrix logisch anlegen.
  • Solo-Prototyp pflegen.
  • Signal- und Spiegel-Logik zunächst einfach halten.

Wo es kippen kann.

Kipppunkte müssen früh benannt werden. Sonst entsteht eine versteckte Last, die später zu groß wird.

  • Zu viele Inhalte ohne klare Matrix.
  • Zu viele sichtbare Funktionen zu früh.
  • Mehrnutzerlogik ohne klare Notwendigkeit.
  • Pflegeaufwand, der täglich Updates braucht.
  • Technik, die du nur mit Umwegen noch überblickst.

Was bewusst noch nicht sofort nötig ist.

Nicht alles, was später sinnvoll werden kann, ist jetzt schon nötig. Dieser Block schützt vor unnötiger Vorwegnahme.

  • Öffentliche Nutzerprofile.
  • Komplexe Rollenlogik.
  • Ausgereifte Auswertung.
  • Skalierung für viele Nutzer.
  • Alles, was nur für Stufe 3 gebraucht wird.

Technikstufe 1: lokal.

Die erste Technikstufe soll den Kern tragen, nicht schon das ganze spätere Produkt abbilden.

  • Inhalte lokal oder in einer einfachen Datei.
  • Lokales Event-Log.
  • Lokale Speicherung von gemerkten Inhalten.
  • Keine Accounts nötig.
  • Die Datenstruktur trotzdem schon sauber trennen.

Technikstufe 3: öffentlicher Betrieb.

Diese Stufe ist nicht sofort dran. Aber sie muss als reale Technikstufe sichtbar sein, wenn oorigin einmal über den kleinen geschützten Raum hinauswächst.

  • Server oder gehostete Infrastruktur.
  • Nutzerführung über Geräte und Sitzungen hinweg.
  • Geschützte Datenhaltung.
  • Admin- und Pflegeoberfläche.
  • Saubere Freigabe- und Importprozesse.
  • Fehlerbeobachtung und Betriebssicherheit.
  • Datenschutz und Sicherheitslogik.
  • Ein Umfang, den du nicht mehr ganz allein tragen musst.

Discover: Overlay und Texteditor-Styling.

23.05.2026, aus Code

Technische Styling-Basis fuer neue Panels im Discover-Bereich. Werte stammen direkt aus oorigin-discover.css, oorigin-responsive.css und den Layout-Grenzen in oorigin-overlay.js.

Overlay-Panel .discover-grid-stage
Default-Lage
position: fixed, top: calc(var(--nav-h) + 18px), left: calc(50px + 240px + 35px), right: calc(50px + 240px + 90px), bottom: 50px. Standard-Offset aus JS: x = -40px, y = -35px. Bei .discover-grid-stage--meine-texte-open liegt das Panel weitere 50px hoeher.
Mindestgroesse
JS-Grenzen fuer freie Resize-/Custom-Bounds-Nutzung: DISCOVER_OVERLAY_MIN_W = 280, DISCOVER_OVERLAY_MIN_H = 220. Der Resize-Handle sitzt unten rechts (22px Quadrat, Radius 6px).
Rahmen / Flaeche / Surface
Direkte Overlay-Werte auf .discover-grid-stage: border: 1px solid rgba(240, 234, 248, 0.05), border-radius: 7px, background: rgba(18, 16, 22, 0.22), backdrop-filter: blur(1px), box-shadow: 0 16px 48px rgba(0, 0, 0, 0.28). Die wiederverwendbaren Basiswerte liegen direkt daneben als Variablen auf derselben Klasse: --discover-surface-fill: rgba(18, 22, 22, 0.22), --discover-surface-border: rgba(240, 234, 248, 0.12), --discover-surface-blur: 6px, --discover-edit-sheet-radius: 10px, --discover-edit-sheet-inset: 2px.
Innenabstand und Aufbau
padding: 14px, display: flex, flex-direction: column, gap: 10px. Offener Zustand ueber .open: Fade-in plus translateY von -6px auf 0.
Backdrop
.discover-overlay-backdrop ist vollflaechig fixed mit z-index: 238 und background: rgba(12, 10, 18, 0.12); die Stage selbst liegt auf z-index: 245.
Dateien / aendern
Overlay-Oberflaeche und Backdrop in oorigin-discover.css unter .discover-grid-stage und .discover-overlay-backdrop. Frei platzierbare Mindestgroessen, Default-Offsets und Resize-Grenzen in oorigin-overlay.js ueber DISCOVER_OVERLAY_MIN_W, DISCOVER_OVERLAY_MIN_H, DISCOVER_OVERLAY_DEFAULT_OFFSET_X und DISCOVER_OVERLAY_DEFAULT_OFFSET_Y.
Texteditor-Panel .discover-edit-panel
Container
position: absolute, left: 0, right: 0, bottom: 0, width: 100%, padding: 0 20px 10px, overflow: hidden, display: none bis .is-open. Default-Hoehe: var(--discover-edit-drawer-h, 58%); Mindesthoehe CSS-seitig min(260px, calc(100% - var(--discover-edit-grid-min-visible))).
Mindestwerte und Solo-Modus
JS-Minima fuer frei platzierbaren Solo-Editor: DISCOVER_EDIT_PANEL_MIN_W = 280, DISCOVER_EDIT_PANEL_MIN_H = 220. Im Solo-Modus wird das Panel position: fixed mit z-index: 252; Drag/Resize laufen ueber dieselben Handle-Stile wie das Overlay.
Frosted Sheet
Die sichtbare Flaeche liegt auf ::before: left/right inset = 2px, border-radius: 10px, border: 0.5px solid rgba(240, 234, 248, 0.07), border-top-color: transparent, dazu ein Verlauf von transparent nach var(--discover-edit-surface-fill) mit Zwischenstufen 0.034 und 0.042; Blur ueber backdrop-filter: blur(var(--discover-surface-blur)).
Chrome-Variante
In html.is-chrome bzw. .discover-grid-stage.is-chrome wird die Blattflaeche leicht heller (--discover-edit-surface-fill: rgba(44, 48, 52, 0.082)), der Verlauf flacher und der Blur abgeschaltet; Rand dann rgba(255, 255, 255, 0.04).
Bewegung
Einblendung per transform: translateY(calc(100% + 16px)) nach 0 mit cubic-bezier(0.22, 1, 0.36, 1) und 0.5s. Der Drawer-Handle oben ist 34px x 3px und faerbt sich beim Hover von rgba(var(--white-rgb), 0.12) auf rgba(var(--purple-rgb), 0.54).
Responsive Aufteilung
Ab 700px wird der Kopf als Grid aufgebaut; .discover-edit-editor-wrap wechselt auf Zeilenlayout mit gap: 14px und padding: 18px 12px 26px 14px. Die linke Textspalte .discover-edit-text-slot hat width: min(320px, 46%), max-width: 320px und einen vertikalen Trenner als Verlaufslinie rechts. Unter 700px nutzt der Drawer height: 68%, min-height: 240px und Seitenpadding 14px.
Dateien / aendern
Grundlayout, Drawer-Sheet, Handle und Solo-Variante in oorigin-discover.css unter .discover-edit-panel, .discover-edit-panel.is-open::before und den zugehoerigen Head-/Handle-Klassen. Responsive Umbruch in oorigin-responsive.css unter den Media-Queries @media (min-width: 700px) und @media (max-width: 699px). Min-Werte und freie Solo-Grenzen in oorigin-overlay.js ueber DISCOVER_EDIT_PANEL_MIN_W und DISCOVER_EDIT_PANEL_MIN_H.
Textfeld .discover-edit-textarea
Textfeld-Masse
min-height: 150px, width: min(100%, 340px), max-width: 340px, mittig gesetzt. Kein sichtbarer Rahmen: padding: 0, border: none, border-radius: 0, background: transparent, resize: none.
Typografie
color: rgba(var(--white-rgb), 0.78), font-family: var(--font), font-size: clamp(1.02rem, 2.9vw, 1.06rem), font-weight: 200, line-height: 1.67, letter-spacing: 0.01em. Mobil/Stacked zentriert; im Desktop-Split wird das Feld linksbuendig und auf width: 100% gesetzt.
Caret und Placeholder
Standardmaessig caret-color: transparent; im Fokus caret-color: rgba(var(--white-rgb), 0.86). Placeholder in rgba(var(--white-rgb), 0.42); Readonly-Text bleibt sichtbar mit color: rgba(var(--white-rgb), 0.72).
Zitatkante / Textblock
Der eigentliche Textblock liegt in .discover-edit-main-text-wrap. Ab Desktop steht links eine vertikale Quote-Bar mit width: 2px und background: rgba(var(--purple-rgb), 0.62); dadurch bekommt der Editor die charakteristische linke Fuehrungslinie.
Notizfeld rechts
.discover-edit-note-textarea behaelt die gleiche Grundsprache: width: 100%, min-height: 220px, background: transparent, border: none, font-weight: 200, aber weicher mit color: rgba(var(--white-rgb), 0.58) und line-height: 1.5.
Dateien / aendern
Textfeld und Notizfeld in oorigin-discover.css unter .discover-edit-textarea, .discover-edit-note-textarea, .discover-edit-main-text-wrap und .discover-edit-text-slot. Desktop-Anpassungen fuer Linksbund, Breite und Quote-Bar in oorigin-responsive.css unter .discover-edit-main-text-wrap und .discover-edit-main-text-wrap .discover-edit-textarea innerhalb der Desktop-Media-Query.
1:1 fuer neue Panels
Wenn ein neues Panel exakt dieselbe Sprache tragen soll, muessen mindestens diese Bausteine zusammen uebernommen werden: .discover-grid-stage bzw. .discover-edit-panel, die Surface-Variablen auf dem Stage-Container, das ::before-Sheet des Editors, .discover-edit-editor-wrap, .discover-edit-text-slot, .discover-edit-main-text-wrap und die Textfeld-Regeln fuer .discover-edit-textarea.

Lädt…
Lädt…

Wie die erste Trefferfläche aussieht.

Die erste Trefferfläche ist klein. Sie will nichts. Sie zeigt nur so viel, dass innere Resonanz überhaupt möglich wird.

  • Wenige Sätze. Wenige Bilder.
  • Keine Selbstanalyse am Anfang.
  • Keine sichtbare Systemlogik.
  • Kein Erklärmodus.
  • Jeder erste Inhalt muss tragen können.

Warum Resonanz sofort beginnt.

Resonanz ist kein später Effekt. Sie beginnt im ersten Blick, im ersten Satz und im ersten inneren Halten oder Weitergehen.

  • Der erste Satz entscheidet schon mit über Bleiben oder Gehen.
  • Der Einstieg kann später nicht alles reparieren.
  • Resonanz entsteht vor sichtbarer Logik.
  • Darum muss der Anfang wahr sein, nicht nur schön.

Wie Menschen wirklich ankommen.

Menschen kommen nicht nur mit einer Emotion. Sie kommen mit einem inneren Modus. Darum müssen die Ankunftspunkte Haltung und Sprache tragen, nicht nur Stichworte.

Ich trage gerade

Halt. Nicht Lösung.

Wer trägt braucht niemanden der sagt was zu tun ist. Er braucht einen Ort, der das Gewicht kennt und es aushält ohne zu urteilen.

Auslöser
Eine Erschöpfung die nicht schläft · Nach einer Enttäuschung die man niemandem erklären kann · Mitten in der Nacht ohne Grund
Sprache
„Ich bin so müde, aber nicht körperlich.“ · „Ich kann das niemandem erklären.“
Felder
Allein · Erschöpfung · Enttäuschte Hoffnung · Atmen · Wut · Ungerechtigkeit · Ohnmacht · Abweisung · Überschrittene Grenzen · Trauer · Leere · Hilflosigkeit · Schuldgefühl · Einsamkeit in Beziehung · Scham · Loslassen
Beispielstimmen
AlleinIch fühle mich damit allein.
ErschöpfungEs geht mir nicht gut. Und ich sage es niemandem.
Enttäuschte HoffnungIch habe so sehr gehofft.
AtmenIch brauche einfach Pause.
WutNiemand glaubt, was ich fühle.
UngerechtigkeitDas ist nicht fair. Und niemand sieht es.
OhnmachtIch kann nichts tun. Und das macht es schlimmer.
AbweisungIch wurde weggeschickt, mit dem, was ich fühle.
Überschrittene GrenzenEtwas wurde überschritten. Und ich zweifle trotzdem an mir.
TrauerIch vermisse etwas, das nicht zurückkommt.
LeereIch fühle gar nichts mehr.
HilflosigkeitIch weiß nicht was ich tun soll.
SchuldgefühlIch glaube, ich hätte es anders machen müssen.
Einsamkeit in BeziehungIch bin umgeben von Menschen und trotzdem allein.
SchamIch glaube, es liegt an mir.
LoslassenIch will einen Weg heraus.
Ich suche Orientierung

Einen Namen. Nicht mehr Fragen.

Wer sich verloren fühlt braucht keine Antworten auf alles. Er braucht einen Moment, in dem etwas Unbenanntes plötzlich erkennbar wird.

Auslöser
Eine Entscheidung die nicht fertig gedacht ist · Ein Gefühl das sich nicht einordnen lässt
Sprache
„Irgendwas stimmt nicht.“ · „Ich weiß nicht was mit mir los ist.“
Felder
Verwirrung · Angst · Zweifel · Entscheidungslähmung
Beispielstimmen
VerwirrungIch weiß nicht, was mit mir los ist.
AngstEtwas stimmt nicht. Ich weiß nicht was.
ZweifelIch weiß nicht ob ich richtig liege.
EntscheidungslähmungIch kann mich nicht entscheiden und weiß nicht warum.
Ich sehne mich

Resonanz. Nicht Ratschlag.

Wer sich sehnt weiß oft nicht genau wonach. Er braucht keinen Weg, sondern das Gefühl, dass seine Sehnsucht berechtigt ist.

Auslöser
Eine Sehnsucht die keinen Ort hat · Nach einem Abend allein
Sprache
„Ich vermisse etwas das ich nicht benennen kann.“ · „Ich brauche keine Lösung, ich brauche …“
Felder
Liebe · Wachsen · Heimweh · Hoffnung
Beispielstimmen
LiebeIch will wirklich gesehen werden.
WachsenIch suche etwas, das mich trägt.
HeimwehIch sehne mich nach etwas das ich nicht benennen kann.
HoffnungIch glaube noch daran, aber kaum noch.
Ich weiß es schon

Tiefe. Nicht Bestätigung von außen.

Wer brennt hat die Antworten schon. Er sucht keinen Einstieg, sondern einen Raum, der seiner Klarheit gewachsen ist. Nicht erklärt. Erkannt.

Auslöser
Ein Gespräch das nicht stattgefunden hat · Etwas das mithalten kann
Sprache
„Ich weiß es, aber ich lebe es noch nicht.“ · „Ich brauche jemanden, der mitdenkt.“
Felder
Brennen · Stille Gewissheit · Mut · Wachsen · Bereitschaft
Beispielstimmen
BrennenIch weiß, da ist mehr.
Stille GewissheitIch weiß was ich will, aber ich lebe es noch nicht.
MutIch spüre dass ich bereit bin, auch wenn es Angst macht.
Wachsen · BereitschaftIch bin bereit für mehr.

Was als Startinhalt nicht taugt.

Nicht jeder starke Satz und nicht jedes starke Bild ist am Anfang tragfähig. Der Einstieg braucht strengere Kriterien als der spätere Strom.

  • Zu viel Erklärung.
  • Zu frühe Tiefe ohne Halt.
  • Zu direkte Selbstauskunft.
  • Nur Stimmung ohne innere Präzision.
  • Bilder, die nur dekorativ oder zu geschlossen wirken.

1. Zustand – emotional, körperlich, existenziell

Emotional
Angst, Trauer, Freude, Sehnsucht, Wut, Scham, Einsamkeit, Hoffnung, Zweifel, Verzweiflung, Stolz, Verletztheit, Gelassenheit, Frieden, Dankbarkeit, Leidenschaft, Begeisterung, Gleichgültigkeit, Überforderung, Erleichterung.
Körperlich
Erschöpfung, Schmerz, Energie, Taubheit, Hitze, Kälte, Schwere, Leichtigkeit, Atemlosigkeit, Vitalität, Entspannung, Anspannung, Hunger, Durst, Müdigkeit, Wachheit, Fieber, Schwindel, Kribbeln.
Existenziell
Leere, Sinn, Orientierungslosigkeit, Demut, Staunen, Verbundenheit, Verlorenheit, Geborgenheit, Vertrauen (als Zustand), Entfremdung, Glaube, Hoffnungslosigkeit, Ergriffenheit, Ehrfurcht, Transzendenz, Tod, Geburt.

2. Bewegung – Handeln, Unterlassen, innerer Prozess

Handeln
Beginnen, Entscheiden, Zeigen, Loslassen, Widerstehen, Fliehen, Nähe suchen, Grenzen setzen, Bitten, Danken, Geben, Nehmen, Teilen, Kämpfen, Aufgeben, Verzeihen, Sich-verbinden, Sich-trennen, Aufbegehren.
Unterlassen
Zögern, Verweigern, Aushalten, Schweigen, Innehalten, Warten, Verstummen, Sich-zurückziehen, Nicht-handeln.
Innerer Prozess
Erkennen, Annehmen, Unterscheiden, Reflektieren, Verstehen, Loslassen (innerlich), Wachsen, Reifen, Vertrauen (als Bewegung), Öffnen, Sich-eingestehen, Trauern, Verarbeiten, Integrieren, Träumen, Erinnern.

3. Bezug – wozu sich jemand verhält

Menschlich
Beziehung, Begegnung, Familie, Freundschaft, Partnerschaft, Kollegium, Fremde, Gruppe, Vorgesetzte, Kinder, Eltern, Nachbarn.
Gesellschaftlich
Gesellschaft, Normen, Leistung, Medien, Kultur, Institutionen, Öffentlichkeit, Politik, Wirtschaft, Arbeit, Schule, Kirche, Verein, Recht, Tradition.
Existenziell
Sinn, Natur, Kosmos, Leben, Tod, Schicksal, das Ganze, das Heilige, Transzendenz, Berufung, Glaube, Schöpfung, Universum, Stille, das Andere, das Unverfügbare.
Emotional / psychologisch
Vertrauen, Verrat, Enttäuschung, Verlust, Zugehörigkeit, Ausgrenzung, Anerkennung, Resonanz, Empathie, Neid, Eifersucht, Bewunderung.

4. Pendant – Gegenpol (fest bei Grundfähigkeiten, zusätzlich satzbezogen)

Bei den Grundfähigkeiten ist das Pendant fest zugeordnet (z. B. Vertrauen ↔ Misstrauen). Für einzelne Sätze kann ein spezifischer Gegenpol ergänzt werden: Festhalten, Enge, Gleichgültigkeit, Verdrängung, Lähmung, Oberflächlichkeit, Verschlossenheit, Erstarrung, Selbstverständlichkeit, Überheblichkeit, Opferhaltung, Abwesenheit, Verstrickung, Verwirrung, Widerstand, Scham.

5. Muster – wiederkehrende Verhaltensweisen, Prägungen

Schutzmuster
Vermeidung, Kontrolle, Maske, Perfektionismus, Rückzug, Anpassung, Verdrängung, Rationalisierung, Ablenkung, Sarkasmus, Zynismus.
Bindungsmuster
Abhängigkeit, Klammern, Verschmelzung, Opferrolle, Retterrolle, Co‑Abhängigkeit, Vermeidung von Nähe, Vermeidung von Konflikten, Harmoniesucht, Treue um jeden Preis.
Wiederholungsmuster
Gewohnheit, Autopilot, Aufschub, Prokrastination, Kreislauf, Zwanghaftigkeit, Eskalation, Wiederholung von Traumata, Ritualisierung.
Bewertungsmuster
Vergleich, Selbstablehnung, Idealisierung, Entwertung, Schwarz‑Weiß‑Denken, Übergeneralisierung, Katastrophisieren, Schuldzuweisung, Projektion, Innerer Kritiker.
Glaubensmuster
Religiöse Prägungen, Weltanschauungen, Dogmen, Verschwörungsdenken, Fundamentalismus, Aberglaube.

6. Selbst – Aspekte der Identität und Selbstbeziehung

Identität
Identität, Herkunft, Prägung, Persönlichkeit, Wesenskern, Rolle, Berufung, Werte, Glaubenssätze, Sexualität, Geschlecht, Ethnizität, Nationalität, Alter, Lebensgeschichte.
Selbstbeziehung
Selbstwert, Selbstvertrauen, Selbstakzeptanz, Selbstverantwortung, Selbstbild, Grenzen, Autonomie, Selbstwirksamkeit, Selbstmitgefühl, innere Kritiker, innere Anteile, Schatten.
Ausdruck
Stimme, Sprache, Schweigen, Authentizität, Kreativität, Berufung, Körpersprache, Kunst, Musik, Schreiben, Tanz.
Reflexion
Selbsterkenntnis, Reife, Entwicklungspotential, Lernfähigkeit, Demut, innere Landschaft, Träume, Sehnsüchte, Lebensaufgabe, Ressourcen, Verletzungen.

7. Raum – Kontext (körperlich, zeitlich, räumlich, atmosphärisch)

Körperlich
Körper, Atem, Haut, Sinne, Bewegung, Berührung, Nähe, Distanz, Körpergedächtnis, Zellen, Organe, Nervensystem, Schmerzort, Wohlfühlort.
Zeitlich
Zeit, Vergangenheit, Gegenwart, Zukunft, Rhythmus, Zyklus, Jahreszeiten, Tageszeiten, Lebensphase, Alter, Reifezeit, Wartezeit, Ewigkeit, historischer Kontext.
Räumlich
Raum, Zuhause, Stadt, Landschaft, Natur, Wald, Wasser, Berge, Himmel, Schwelle, Enge, Weite, Schutzraum, Rückzugsort, Arbeitsplatz, Krankenhaus, Friedhof, Geburtsort, Heimatort.
Atmosphärisch / inner
Stille, Licht, Dunkel, Temperatur, Resonanzraum, Gedankenraum, Gefühlsraum, Traumraum, Erinnerungsraum, Aura, Stimmung, Klima.

Das kleinste tragfähige Solo-Mindestset.

Dieses Set hält die erste Stufe klein und tragbar. Es ist die kleinste Version, die bereits die eigentliche Logik enthält.

  • Ein kuratierter Startpool aus Texten und ersten Bildern.
  • Klare Trennung von Ankunftsmodus und Dimension.
  • Einfache Matrix mit Gewichten.
  • Lokales Event-Log.
  • Kein Login. Kein öffentlicher Betrieb.