# Real Life Stack > Real Life Stack (RLS) is a modular, backend-agnostic app and UI toolkit for local communities, commons and decentralized collaboration. An app is a connector to its data, a register of modules and the frame from the toolkit; map, calendar, kanban, feed, list, graph and resonance come ready-made. Architecture in one line: `app frame / modules -> hooks -> DataInterface -> connector -> data source`. Surfaces never talk to a backend; they ask hooks, hooks read the `DataInterface`, and the connector decides whether data lives in memory, in Supabase or in an end-to-end encrypted Web of Trust network. Swapping the connector swaps the backend without touching the UI. The spec is written in German. The type definitions in `@real-life/data-interface` are the precise, English source of truth for all data shapes. This file is generated (`pnpm docs:agents`) from the packages, the spec index and the hooks' documentation comments; CI fails when it is stale. ## Building an app on Real Life Stack Requires `@real-life/toolkit` 0.2.0 or newer: the frame (`RoutedAppFrame`, subpath `/router`) and the seven modules arrived with that release. - [First app (handbook, German)](https://real-life-stack.de/handbuch/erste-app/): ~40 lines — connector, router, `RoutedAppFrame`. Every line explained. - [examples/first-app](https://github.com/real-life-org/real-life-stack/tree/master/examples/first-app): the same app as running code, built and tested in CI. - [AGENTS.md template for RLS apps](https://github.com/real-life-org/real-life-stack/blob/master/docs/templates/AGENTS.md): drop-in guide for a coding agent that builds an app on the published packages. Its bootstrap code is the first app, verbatim. - [Working with an agent (handbook, German)](https://real-life-stack.de/handbuch/agenten/): entry points, task shape, rules, the checks. - Rule of thumb (spec 01, "what stays with the app"): an app provides connector, router, register, map engine and the frame — nothing else. A module runs without a line in the app. ## Packages (npm) - [@real-life/data-interface](https://www.npmjs.com/package/@real-life/data-interface): The core contract: Item, Relation, Group (Space), User, ItemFilter, Observable, capability interfaces and module hints. Zero dependencies. - [@real-life/toolkit](https://www.npmjs.com/package/@real-life/toolkit): React UI toolkit: the app frame (AppFrame, RoutedAppFrame), the module host, seven modules (feed, list, kanban, calendar, map, graph, resonance), item preview and detail, composer, hooks. Styles from ./styles/globals.css; map engine from ./maplibre or ./leaflet; router glue from ./router. - [@real-life/local-connector](https://www.npmjs.com/package/@real-life/local-connector): Local persistence connector: offline-first, single device. - [@real-life/mock-connector](https://www.npmjs.com/package/@real-life/mock-connector): In-memory connector with seed data. The starting point for prototypes, stories and tests. - [@real-life/supabase-connector](https://www.npmjs.com/package/@real-life/supabase-connector): Connector for a central Supabase backend (auth, rows, realtime). - [@real-life/wot-connector](https://www.npmjs.com/package/@real-life/wot-connector): Decentralized connector on the Web of Trust stack: DID identity, end-to-end encrypted groups and sync. ## Specification (normative, German) The spec is the single source of truth of the repository; when code and spec disagree, the spec wins. Index: https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/README.md - [00-architecture.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/00-architecture.md) (Normativer Startpunkt): Schichtenmodell, Verantwortlichkeiten und Architekturregeln - [01-app-composition.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/01-app-composition.md) (Normativer Entwurf): App Shell, Current Space, Space Modules und Module Components - [02-data-interface.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/02-data-interface.md) (Normativer Entwurf): Read-only Core-Vertrag, Items, Observables und Filter - [03-capabilities.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/03-capabilities.md) (Normativer Entwurf): Optionale Connector-Fähigkeiten, Type Guards und FullConnector-Abgrenzung - [04-items-relations-groups-spaces.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/04-items-relations-groups-spaces.md) (Normativer Entwurf): Items, Relations, Groups/Spaces und Projektionen für RLNP/Game - [05-confirmations-and-trust.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/05-confirmations-and-trust.md) (Normativer Entwurf): Claims, Confirmations, Attestations und Trust-Level - [06-schema-composition.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/06-schema-composition.md) (Normativer Entwurf): Schema-Komposition über `@context`, Standardvokabulare, `type`-Hint, Typ-Register - [07-tags.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/07-tags.md) (Normativer Entwurf): Tags als Kategorisierungs-Achse: einfache Strings + strukturierte URN-Tags - [08-relation-records.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/08-relation-records.md) (Normativer Entwurf): Relationen als eigenständige Items (`type: "relation"`), `RelationStoreCapable`, Trust-Bindung an Confirmations - [09-mirror-bridge.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/09-mirror-bridge.md) (Normativer Entwurf (Implementierung ab Netzwerk-App P2)): Items in mehreren Spaces: Canonical Home, read-only Mirror-Snapshots, Brücken-Clients; Mitgliedschaftsbindung, Ablage/Registry, `MirrorCapable` - [10-activity-log.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/10-activity-log.md) (Normativer Entwurf): CRUD-Historie pro Space: Collection-Form, ID-/Merge-Ordnung, Retention, Atomarität - [11-runtime-config-und-branding.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/11-runtime-config-und-branding.md) (Normativer Entwurf): Ein Artefakt, viele Instanzen: Endpunkte und Identität zur Laufzeit statt zur Build-Zeit - [12-profile.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/12-profile.md) (Normativer Entwurf (erste Anwendung von 09)): Profil = person-Item im persönlichen Space, Mirror je freigegebenem Gruppen-Space; Freigabe, Widerruf, Ablage - [glossary.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/glossary.md) (Lebendes Dokument): Kurzdefinitionen der Spec-Begrifflichkeit mit Verweisen auf die normative Quelle - [schemas/README.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/schemas/README.md): Konventionen, Komposition, Versionierung - [schemas/vocab/](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/schemas/vocab/): Pro Vokabular: `context.jsonld` (JSON-LD) + `schema.json` (JSON-Schema) + `examples/valid/` - [modules/](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/modules/) (Normative Detail-Specs im Aufbau): Verbindliche Space-Module-Spezifikationen auf Basis der Kern-Spec - [code-and-storybook-mapping.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/code-and-storybook-mapping.md) (Normativer Entwurf): Abbildung von App Shell, Space Modules, Module Components und Primitives in Code und Storybook - [architektur2.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/architektur2.md) (Historische Referenz, nicht direkt normativ): bisher beste Gesamtbeschreibung; wird schrittweise in die neue Spec-Struktur überführt - [reaktivitaet.md](https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/reaktivitaet.md) (Ergänzende Referenz): Bestehendes Detailverhalten für Reaktivität und Relations; wird später in passende Kern-Slices überführt ## Modules (7, generated from the module register) A module is a register entry plus a view; the host loads what a module presents and provides detail, create and the plus button. Register order is tab order. Reference: https://real-life-stack.de/reference/modules/ - `feed` (Feed): The feed is the aggregating view of a space: everything that stands as a card of its own — posts, events, tasks, places — newest first, with comments and reactions on the card. It is a toolkit module and runs inside the module host (spec 01): this story contains no line of feed wiring. presents: everything that stands as a card; loads: host; suggests `post`; spec: https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/modules/feed.md; story: https://real-life-stack.de/storybook/?path=/docs/rls-modules-feed--docs - `kanban` (Kanban): The kanban shows the tasks of a space in columns by status and lets you drag them. It is a toolkit module and runs inside the module host (spec 01): the host loads what carries a status (`presents: ["status"]` — the field decides, never the type), applies search and filter, and provides detail, create ("Aufgabe" suggested) and the plus button. presents: `status`; loads: host; suggests `task`; spec: https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/modules/kanban.md; story: https://real-life-stack.de/storybook/?path=/docs/rls-modules-kanban--docs - `calendar` (Kalender): The calendar shows the events of a space by month, week, day or as a list. It is a toolkit module and runs inside the module host (spec 01): the host loads what carries a start (`presents: ["start"]` — a task with a date appears too), applies search and filter, and provides detail, create ("Termin" suggested) and the plus button. presents: `start`; loads: host; suggests `event`; spec: https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/modules/calendar.md; story: https://real-life-stack.de/storybook/?path=/docs/rls-modules-calendar--docs - `map` (Karte): The map shows the items of a space that have a position, clustered, with the shared search floating over it. It is a toolkit module and runs inside the module host (spec 01) — with one difference: it loads itself (`loads: "module"`), by viewport, so a large space never loads its whole stock. The host issues no query but still provides detail (without backdrop, `panelFit: "overlay"`, so the map stays movable), create ("Ort" suggested) and the plus button. Picking a location for a new place happens on this map: the panel steps aside while you pick. presents: `position`; loads: module; suggests `place`; spec: https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/modules/map.md; story: https://real-life-stack.de/storybook/?path=/docs/rls-modules-map--docs - `resonance` (Resonanz): Resonance collects statements a group positions itself on: each card carries a vote bar, and the module sorts by resonance. It is a toolkit module and runs inside the module host (spec 01): the host loads the class `statement` (a hint by affordance, not by field — spec 06), applies search and filter, and provides detail, create ("Aussage" suggested) and the plus button. presents: `statement`; loads: host; suggests `statement`; spec: https://github.com/real-life-org/real-life-stack/blob/master/docs/spec/modules/resonance.md; story: https://real-life-stack.de/storybook/?path=/docs/rls-modules-resonance--docs - `collection` (Liste): The list shows everything in a space that stands as a card of its own, as a list or a grid; the density toggle sits in the header next to the search. It is a toolkit module and runs inside the module host (spec 01) without a line of wiring here: the host loads (no `presents` — the list aggregates), filters, and provides detail, create and the plus button. presents: everything that stands as a card; loads: host; story: https://real-life-stack.de/storybook/?path=/docs/rls-modules-list--docs - `graph` (Graph): The graph shows the items of a space and their relations as a force layout: embedded relations (a task assigned to a person) and relation records (a vote on a statement) become edges; people appear as nodes only when an edge reaches them. It is a toolkit module and runs inside the module host (spec 01): the host loads everything that stands as a card, applies search and filter — here floating over the canvas (`panelFit: "overlay"`) — and provides detail, create and the plus button. presents: everything that stands as a card; loads: host; story: https://real-life-stack.de/storybook/?path=/docs/rls-modules-graph--docs ## Hooks (62, generated from the toolkit's documentation comments) Every surface asks hooks, never the connector. Reading hooks answer empty without a capability; writing hooks fail on the call, not on render. Living examples: https://real-life-stack.de/storybook/?path=/docs/rls-foundations-all-hooks--docs ### Read items - `useSurfaceItems()` → `Item[]`: The items of this surface, filtered as its head shows. Without capability: throws on render — without `ModuleSurfaceScope`. - `useActivity(limit?)` → `{data, supported}`: What happened in this space recently? Without capability: empty — `supported: false`. - `useDraftItem()` → `Item | null`: What is someone typing right now that modules should preview? Without capability: null — without provider. - `useModuleFilteredItems(items)` → `Item[]`: Exactly what the toolbar in the module head promises: filter plus search text. Without capability: value — the items unchanged, without `FilterProvider`. - `useItems(filter?)` → `{data, isLoading}`: Which items match this filter, and is the list still arriving? Without capability: —. - `useItemsWithDraft(filter?)` → `{data, isLoading}`: The same list, with the draft being typed already in it as a card. Without capability: —. - `useItem(id)` → `{data, isLoading}`: Does this one item exist, and is "not found" already decided? Without capability: —. ### Write items - `useSetDraftItem()` → `(draft) => void`: Publish or discard the running draft. Without capability: no-op. - `useItemEditor(options)` → `{isOpen, mode, submit, remove, …}`: Open the composer and save an input as an item, including its space. Without capability: throws on call. - `useCreateItem()` → `(input, options?) => Promise`: Create a new item — optionally directly in a given space (`{ group }`). Without capability: throws on call. - `useUpdateItem()` → `(id, updates) => Promise`: Change an existing item. Without capability: throws on call. - `useDeleteItem()` → `(id) => Promise`: Delete an item. Without capability: throws on call. - `useUnsavedChanges()` → `{dirty, setDirty} | null`: Are there unsaved inputs that leaving must intercept? Without capability: null — without provider. - `useSetUnsavedDirty()` → `(dirty) => void`: Report that something unsaved sits in the form. Without capability: no-op. ### Groups and members - `useGroupVocabulary(fallbackItems?)` → `{tags, types}`: Which tags and types exist in the space? The one derivation for filter card, chips and tag suggestions. Without capability: empty. - `usePersonalGroupId()` → `string | null`: Where does an item belong that is shared with nobody? Without capability: null. - `useGroups()` → `{data, isLoading}`: Which spaces do I see? Without capability: empty. - `useCurrentGroup()` → `Group | null`: Which space am I in right now? Without capability: null. - `useCreateGroup()` → `(name, data?) => Promise`: Create a space. Without capability: throws on call. - `useUpdateGroup()` → `(id, patch) => Promise`: Change a space's name or data. Without capability: throws on call. - `useDeleteGroup()` → `(id) => Promise`: Delete a space. Without capability: throws on call. - `useMembers(groupId)` → `{data, isLoading}`: Who belongs to this space, or with `null` to all of mine? Without capability: empty. - `useInviteMember()` → `(groupId, userId) => Promise`: Invite someone into a space. Without capability: throws on call. - `useRemoveMember()` → `(groupId, userId) => Promise`: Remove someone from a space. Without capability: throws on call. ### People - `useOptionalCurrentUser()` → `{data, isLoading}`: Who am I, if anyone at all? Without capability: null. - `useCurrentUser()` → `{data, isLoading}`: Who am I? For surfaces that make no sense without sign-in. Without capability: throws on render. - `useContacts()` → `{contacts, addContact, …}`: Whom do I know, who is waiting for confirmation? Without capability: empty — actions no-op. - `useIncomingEvents()` → `{current, dismiss, …}`: Which incoming event is waiting for an answer? Without capability: throws on render — without provider. - `useOpenProfile()` → `(userId) => void`: Open a person's profile. Without capability: no-op. - `useResolvedUsers(ids)` → `Map`: For which ids do I know a name? Without capability: empty — map. - `useUserNameResolver()` → `(userId) => string`: A display name for a user id, falling back to the id. Without capability: value — value — the id itself. - `useVerification()` → `{supported, createChallenge, …}`: Two people who meet in real life confirm each other. Without capability: empty — `supported: false`. ### Relations - `useCommentCount(itemId)` → `number`: Is there a conversation on this card? Without capability: value — `0`. - `useComments(itemId)` → `{data, isLoading, canComment, createComment, …}`: What was said, by whom, and may I reply? Without capability: empty — writing no-op. - `useReplies(itemId, commentId)` → `{data, isLoading}`: Which replies does this comment have? Without capability: empty. - `useReactions(itemId)` → `{data, isLoading, react, canReact}`: How was reacted, and can I set my reaction? Without capability: empty — `react` no-op. - `useReactionUsers(itemId, emojiFilter?)` → `{data, isLoading}`: Who reacted with which emoji? Without capability: empty. - `useRelationRecords(filter?)` → `{data, supported}`: Which signed relation records match? Without capability: empty — `supported: false`. - `useVerifiedRelationRecords(records)` → `RelationRecord[]`: Which of those are cryptographically covered? Without capability: empty — also while checking. - `useVotes(statementId)` → `{data, isLoading, vote, canVote}`: How does the resonance stand, and how do I vote? Without capability: empty — without signature verification no vote counts. - `useVoteUsers(statementId, enabled?)` → `{data, isLoading}`: Who voted how? Without capability: empty. ### Permissions and capabilities - `useOptionalConnector()` → `DataInterface | null`: The same for surfaces that render without data access too. Without capability: null. - `useConnector()` → `DataInterface`: Which data access applies here? Without capability: throws on render — without provider. - `useItemPermissions(item)` → `{canEdit, canDelete}`: May I show the ⋮ menu here? Without capability: value — both `false`. ### Host and focus - `useSharedFilter()` → `{value, searchText, setSearchText, clear}`: The app-wide filter that survives the module switch. Without capability: throws on render. - `useCreate()` → `{isComposing, startCreate, patchCreate}`: Start creating — with suggestion and prefill, never with restriction. Without capability: throws on render. - `useOptionalCreate()` → `CreateHostValue | null`: The create host, or `null` where a surface may stand without one (story, test). Without capability: value — null. - `useModuleHost()` → `{entry, currentSpace, members, groups, items, setCreateAnchor, …}`: The space context and the items the module host produced for this surface. Without capability: throws on render. - `useModulePanel()` → `{current, open, close}`: Open a panel beside the module. There is only one. Without capability: throws on render. - `useItemFocus()` → `{itemId, isEditing, composeType, focusItem, editItem, startCompose, …}`: Which item is open, is it being edited, is something being created? The focus contract — in the app the URL (`UrlFocusProvider` from `/router`), otherwise memory. Without capability: throws on render. - `useOptionalItemFocus()` → `ItemFocus | null`: The focus, or `null` where a surface may stand without one. Without capability: value — null. - `useModuleFilter(key, initial)` → `[value, setValue]`: A module's own filter value that survives the module switch. Without capability: value — local state. ### Environment - `useColorScheme()` → `"light" | "dark"`: Is it light or dark right now? Without capability: —. - `useInitialSync()` → `{active, loadedGroups, expectedGroups}`: Is the first fill still running, may "nothing there" be said? Without capability: value — permanently `active: false`. - `useIsMobile()` → `boolean`: Narrower than 768px? Without capability: —. - `useIsCompact()` → `boolean`: Below 1024px, where the panel becomes a drawer? Without capability: —. - `useNotifications()` → `{notifications, badgeCount, …}`: What is new for me, and how much is unread? Without capability: empty. - `useMarkNotificationsSeen(notifications)` → —: Advance the seen boundary once per opening. Without capability: no-op. - `useRelayStatus()` → `{state, isConnected, pendingCount}`: Is this device attached to the relay, is anything unsent waiting? Without capability: throws on render. - `useI18n()` → `I18n` — `{language, locale, t, tDynamic, formatDate, formatTime, formatFullDateTime, formatRelativeTime, setLanguage}`: In which language and regional locale does this surface speak — and how? Without capability: — (works without a provider; the toolkit owns its language state). ### Item properties - `useItemPresentation(activeGroupId?)` → `(item) => {group, color, isPrivate}`: How does this item present itself: which group it comes from, in which colour, and whether it is private? Without capability: value — no group, palette colour, `false`. - `useItemTags(item)` → `string[]`: Which tags does this item carry? Without capability: —. ## Contributing to the stack itself - [AGENTS.md](https://github.com/real-life-org/real-life-stack/blob/master/AGENTS.md): rules for agents and humans contributing to this repository (as opposed to building apps on it). - [Agent workspace context](https://github.com/real-life-org/real-life-stack/blob/master/docs/agent-workspace.md): detailed repository context, module host, hook documentation convention. - Checks that run in CI and that an agent can run itself: `pnpm test`, `pnpm -r typecheck`, `pnpm check:hooks`, `pnpm check:agents`, `pnpm build:site && pnpm check:site && pnpm test:site`, `python3 scripts/check-normative-words.py`, `python3 scripts/check-shared-derivations.py`. ## Optional - [Storybook](https://real-life-stack.de/storybook/): every module, the app composition (register, host, loading contract, focus, create) and all hooks live. - [Reference app](https://github.com/real-life-org/real-life-stack/tree/master/apps/reference): full app wiring all modules together. - [Network app](https://github.com/real-life-org/real-life-stack/tree/master/apps/network): an app with a module of its own (marketplace) on the frame. - [Web of Trust](https://github.com/real-life-org/web-of-trust): the decentralized identity and sync layer behind the wot-connector. - [Real Life Agent Protocol](https://github.com/real-life-org/real-life-agent-protocol): agent workflow specs used to develop this stack. ## Handbook (German first; Markdown export of the site) - [Datenschutzerklärung](https://real-life-stack.de/markdown/de/datenschutz.md) — /datenschutz/: Zuletzt aktualisiert im April 2026. - [Mit Agenten arbeiten](https://real-life-stack.de/markdown/de/handbuch/agenten.md) — /handbuch/agenten/: Einstiege, Auftragsform, Regeln und die Prüfungen — für Coding-Agents, die eine App bauen oder am Stack mitarbeiten. - [Zusammen am Stack arbeiten](https://real-life-stack.de/markdown/de/handbuch/beitragen.md) — /handbuch/beitragen/: Wie ein Beitrag zum Pull Request wird, wer reviewt, was gemergt wird, wie daraus ein Release entsteht. - [Vom Klick zur gemeinsamen Änderung](https://real-life-stack.de/markdown/de/handbuch/datenfluss.md) — /handbuch/datenfluss/: Wie ein Item aussieht, was Typ, Vokabular, Tag und Modul jeweils tun, und wie eine Änderung durch die Schichten läuft. - [Lokal entwickeln](https://real-life-stack.de/markdown/de/handbuch/entwickeln.md) — /handbuch/entwickeln/: Quelltext holen, Referenz-App, Storybook und Site starten, die erste Änderung sehen, die Prüfungen laufen lassen. - [Eine eigene App bauen](https://real-life-stack.de/markdown/de/handbuch/erste-app.md) — /handbuch/erste-app/: In zehn Minuten eine eigene App auf dem Rahmen — Connector, Router, Rahmen, fertig. - [Glossar](https://real-life-stack.de/markdown/de/handbuch/glossar.md) — /handbuch/glossar/: Die Begriffe des Real Life Stack aus seinem Begriffsregister, mit ihren Entsprechungen im Netzwerk und im Trust Protocol. - [Identität und Anmeldung](https://real-life-stack.de/markdown/de/handbuch/identitaet.md) — /handbuch/identitaet/: Anmelden ist eine Fähigkeit des Connectors. Was der Vertrag festlegt und was die Connectoren daraus machen. - [Handbuch](https://real-life-stack.de/markdown/de/handbuch/index.md) — /handbuch/: Real Life Stack verstehen und damit bauen — vier Wege, je nachdem, was du vorhast. - [Eine Instanz betreiben](https://real-life-stack.de/markdown/de/handbuch/instanz.md) — /handbuch/instanz/: Von der lokalen Vorschau zum Betrieb unter eigener Domain — ein fertiges Image, eure Konfiguration und Assets, kein Build. - [Eine Detailansicht für alle Items](https://real-life-stack.de/markdown/de/handbuch/item-detail.md) — /handbuch/item-detail/: Die Anatomie der Detailansicht, Lesen und Schreiben als Paar, die Zustände, und warum ein Profil kein zweites UI-System ist. - [Vom Space zum Item](https://real-life-stack.de/markdown/de/handbuch/oberflaeche.md) — /handbuch/oberflaeche/: Die Oberfläche als drei Ebenen — Rahmen, Space, Item — und warum ein Termin nicht dem Kalender gehört. - [Wie dieses Handbuch aktuell bleibt](https://real-life-stack.de/markdown/de/handbuch/pflege.md) — /handbuch/pflege/: Eine Quelle je Aussage, Wächter für das Prüfbare, ein Mensch für den Rest. - [Fähigkeit, Berechtigung, Herkunft](https://real-life-stack.de/markdown/de/handbuch/rechte.md) — /handbuch/rechte/: Kann der Connector schreiben, darf ich dieses Item bearbeiten, woher stammt es — drei Fragen, die nicht eine sind. - [Versionen und Releases](https://real-life-stack.de/markdown/de/handbuch/release.md) — /handbuch/release/: Welche Version läuft, woher Image-Tags und npm-Versionen kommen, was ein Release auslöst und was ein Merge schon veröffentlicht. - [Runtime-Konfiguration](https://real-life-stack.de/markdown/de/handbuch/runtime-config.md) — /handbuch/runtime-config/: Was eine Instanz zur Laufzeit liest — Endpunkte, Connector, Branding — woher die Werte kommen und was mit falschen passiert. - [Ein Supabase-Backend betreiben](https://real-life-stack.de/markdown/de/handbuch/supabase.md) — /handbuch/supabase/: Ein eigenes Supabase für Instanzen mit dem Connector supabase — aufsetzen, anschließen, prüfen, sichern. - [Privacy Policy](https://real-life-stack.de/markdown/en/datenschutz.md) — /en/datenschutz/: Last updated April 2026. - [Work with agents](https://real-life-stack.de/markdown/en/handbuch/agenten.md) — /en/handbuch/agenten/: Entry points, task shape, rules and the checks — for coding agents that build an app or contribute to the stack. - [Working on the stack together](https://real-life-stack.de/markdown/en/handbuch/beitragen.md) — /en/handbuch/beitragen/: How a contribution becomes a pull request, who reviews, what gets merged, how a release comes out of it. - [From click to shared change](https://real-life-stack.de/markdown/en/handbuch/datenfluss.md) — /en/handbuch/datenfluss/: What an item looks like, what type, vocabulary, tag and module each do, and how a change travels through the layers. - [Develop locally](https://real-life-stack.de/markdown/en/handbuch/entwickeln.md) — /en/handbuch/entwickeln/: Get the source, start the reference app, Storybook and the site, see a first change, run the checks. - [Build your own app](https://real-life-stack.de/markdown/en/handbuch/erste-app.md) — /en/handbuch/erste-app/: Your own app on the frame in ten minutes — connector, router, frame, done. - [Glossary](https://real-life-stack.de/markdown/en/handbuch/glossar.md) — /en/handbuch/glossar/: The terms of the Real Life Stack from its term register, with what they correspond to in the network and the trust protocol. - [Identity and sign-in](https://real-life-stack.de/markdown/en/handbuch/identitaet.md) — /en/handbuch/identitaet/: Signing in is a capability of the connector. What the contract fixes and what the connectors make of it. - [Handbook](https://real-life-stack.de/markdown/en/handbuch/index.md) — /en/handbuch/: Understand Real Life Stack and build with it — four ways in, depending on what you are up to. - [Run an instance](https://real-life-stack.de/markdown/en/handbuch/instanz.md) — /en/handbuch/instanz/: From the local preview to running under your own domain — a finished image, your configuration and assets, no build. - [One detail view for all items](https://real-life-stack.de/markdown/en/handbuch/item-detail.md) — /en/handbuch/item-detail/: The anatomy of the detail view, reading and writing as a pair, the states, and why a profile is not a second UI system. - [From space to item](https://real-life-stack.de/markdown/en/handbuch/oberflaeche.md) — /en/handbuch/oberflaeche/: The interface as three levels — frame, space, item — and why an event does not belong to the calendar. - [How this handbook stays current](https://real-life-stack.de/markdown/en/handbuch/pflege.md) — /en/handbuch/pflege/: One source per statement, guards for what can be checked, a person for the rest. - [Capability, permission, origin](https://real-life-stack.de/markdown/en/handbuch/rechte.md) — /en/handbuch/rechte/: Can the connector write, may I edit this item, where does it come from — three questions that are not one. - [Versions and releases](https://real-life-stack.de/markdown/en/handbuch/release.md) — /en/handbuch/release/: Which version is running, where image tags and npm versions come from, what a release triggers and what a merge already publishes. - [Runtime configuration](https://real-life-stack.de/markdown/en/handbuch/runtime-config.md) — /en/handbuch/runtime-config/: What an instance reads at runtime — endpoints, connector, branding — where the values come from and what happens to wrong ones. - [Run a Supabase backend](https://real-life-stack.de/markdown/en/handbuch/supabase.md) — /en/handbuch/supabase/: Your own Supabase for instances using the supabase connector — set it up, connect it, check it, back it up.