Verdieping en bijlagen

De gegevensmap en het bestandsformaat

Inhoud

De gegevensmap (in de Markdown-wereld ook “vault” genoemd) is de map waarin TandemLoop al je gegevens bewaart. Ze bestaat uitsluitend uit gewone tekstbestanden – Markdown met YAML-kopregels – en staat waar je ze bij het instellen kiest – lokaal of in iCloud Drive. Daardoor is ze leesbaar voor andere tools, AI-agents en natuurlijk voor jezelf, met elke teksteditor.

Mapstructuur

{gegevensmap}/
  AGENTS.md                  ← Instructies voor AI-agents
  _inbox/                    ← Snel vastgelegde taken (GTD-inbox)
  bereiche/                  ← Je gebieden (elk een submap)
    {gebied}/
      area_{slug}.md         ← Metadata van het gebied
      _projects/             ← Projecten van het gebied
      _singles/              ← Losse taken direct in het gebied
      _folders/              ← Optionele mappen
        {map}/
          fld_{slug}.md      ← Metadata van de map
          _projects/
          _singles/
  _config/                   ← Configuratie (tags, attributen, thema's, weergave, taal)
    tags.yaml
    attributes/              ← Eigen attributen (één bestand per attribuut)
      {sleutel}.yaml
    themes/                  ← Thema's (één bestand per thema)
      {sleutel}.yaml
    agent.yaml               ← Laatste ronde van je AI-agent (schrijft de agent)
    language.yaml            ← Taal van de gegevensmap
  _views/                    ← Bewaarde weergaven (ook in submappen)
    vw_{slug}.yaml
  _proposals/                ← Voorstellen van de AI
    prop_{slug}.md
  _archive/                  ← Gearchiveerde entiteiten (niet handmatig wijzigen)
  _conflicts/                ← Bewaarde iCloud-conflictkopieën
  _system/                   ← Schema en gegenereerde naslagdocumenten

Mappen met het voorvoegsel _ zijn systeemmappen en worden door de app beheerd.

Entiteit-ID’s en voorvoegsels van bestandsnamen

Elke entiteit heeft in het veld id van haar frontmatter een stabiele, op een UUID gebaseerde ID. De bestandsnaam staat daar los van en volgt een leesbare slug. Alleen weergaven, weergavemappen (vf_…) en voorstellen hebben hun slug in de ID. Oudere bestanden kunnen nog slug-ID’s hebben (bijvoorbeeld area_arbeit).

Entiteit Voorvoegsel Voorbeeld-ID Voorbeeld-bestandsnaam
Taak tsk_ tsk_f66f123ebac0402f… tsk_logo-entwerfen.md
Project prj_ prj_03ebb2b6286f4a9f… prj_website-relaunch.md
Gebied area_ area_4f8e2d1c0b9a4e… area_arbeit.md
Map fld_ fld_a1b2c3d4e5f647… fld_kunden.md
Mijlpaal ms_ ms_9fd12a6f440a4c… ms_sprint-1.md
Tag tag_ tag_a1b2c3d4e5f647… (in _config/tags.yaml)
Weergave vw_ vw_signal-tasks vw_signal-tasks.yaml
Voorstel prop_ prop_inbox-aufraeumen prop_inbox-aufraeumen.md
Attribuut attr_ attr_3f2e9a0b4c5d… _config/attributes/klant.yaml
Thema thm_ thm_7c1d0e9f2a4b… _config/themes/nordlicht.yaml

Het gegevenscontract

Het bestandsformaat volgt drie principes:

Tolerant lezen: De app leest bestanden ook als er velden ontbreken, als ze onbekende statuswaarden bevatten of als het oude bestanden uit eerdere versies zijn. Zo blokkeert een item dat handmatig is gewijzigd of door een AI-agent is aangemaakt niet de hele app.

Stabiel schrijven: Bij het bijwerken van een bestand behoudt de app de volgorde van de bestaande velden en de bestaande informatie. Onbekende velden die een externe editor heeft toegevoegd, blijven behouden. Later toegevoegde velden zoals een herinnering (remind_at) zet de app aan het eind van de frontmatter; lege velden staan er als null, alleen enkele zoals remind_at en repeat: ontbreken helemaal zolang ze niet zijn ingesteld.

Machineleesbaar: Omdat het om platte Markdown-tekstbestanden gaat, kunnen AI-agents en andere tools de gegevensmap rechtstreeks lezen. Welke wijzigingen ze direct mogen uitvoeren, staat in het hoofdstuk Samenwerken met AI-agents.

Eigen attributen

Eigen attributen (in Instellingen onder Attributen) breiden taken, projecten en mijlpalen uit met extra velden. Elk attribuut is een klein YAML-bestand in _config/attributes/ – de bestandsnaam is de sleutel van het attribuut:

key: klant
name: Klant
type: select
applies_to:
  - task
  - project
options:
  - ACME
  - Contoso
description: Voor welke klant het werk wordt gedaan.

De waarden staan in de frontmatter van het betreffende bestand onder attributes::

attributes:
  klant: ACME
  budget: 12000
  oplevering: '2026-11-30'
  • Typen: text, number (getal), date ('JJJJ-MM-DD'), boolean (ja/nee), select (een van de opties), url (link).
  • Sleutels bestaan uit kleine letters, cijfers en onderstrepingstekens en mogen niet gelijk zijn aan een ingebouwd veld zoals status of due_date. Een sleutel kan achteraf niet meer worden gewijzigd.
  • Lege velden worden niet bewaard. Verwijderde attributen verwijderen geen waarden – die blijven in de bestanden staan en verschijnen in het infopaneel als alleen-lezenregel.
  • In weergaven zijn attributen beschikbaar als velden attributes.sleutel om te filteren, te sorteren en te groeperen.

AI-agents kunnen zelf attributen aanmaken: Vraag je een agent bijvoorbeeld “Maak een attribuut Budget voor projecten aan”, dan schrijft hij een bestand in _config/attributes/. De app herkent het meteen en toont het nieuwe veld.

Herhalende taken

De herhalingsregel staat in de frontmatter van de taak onder repeat:, bijvoorbeeld elke maandag:

repeat:
  unit: week
  days: [mon]

unit is day, weekday, week, month of year; daarnaast zijn optioneel every (interval), day of nth + weekday (maandregels), from: completion (vanaf voltooiing) en until of count als einde mogelijk. De sleutels series, occurrence en next beheert de app zelf. De volledige naslag voor agents staat in _system/docs/data-model.md.

Thema’s

Elk thema is een YAML-bestand in _config/themes/ – de bestandsnaam zonder extensie is de sleutel (nordlicht.yaml → nordlicht). Een thema noemt alleen de kleuren die van de standaard afwijken:

name: Nordlicht
description: Koel petrol met donkere vlakken.
appearance: system        # system, light of dark
font_design: rounded      # default, rounded, serif of monospaced
colors:
  primary:
    light: "#0F766E"
    dark: "#2DD4BF"
  danger: "#E5484D"       # één waarde geldt voor licht en donker

Kleuren staan als hexwaarde tussen aanhalingstekens, met dekking als #RRGGBBAA. Welke kleursleutels er zijn, welke uit andere worden afgeleid en welke standaardwaarden gelden, staat in _system/docs/themes.md – deze naslag houdt TandemLoop zelf bij, zodat AI-agents passende thema’s kunnen ontwerpen. Welk thema actief is, bewaart elk apparaat afzonderlijk; de themabestanden zelf worden met de gegevensmap gesynchroniseerd.

Het relatieblok

Elk bestand van een taak, project, mijlpaal en map – behalve Inbox-taken – bevat aan het einde van de body een kort machineleesbaar gedeelte dat de koppeling met het bovenliggende item als relatieve Markdown-links bewaart, hier voor een taak in het project “Website Relaunch”:

<!-- tandemloop:relations:start -->
[Bereich: Arbeit](../../../area_arbeit.md) · [Projekt: Website Relaunch](../prj_website-relaunch.md)
<!-- tandemloop:relations:end -->

Dit blok houdt de app automatisch up-to-date; je hoeft het niet handmatig te wijzigen; AI-agents laten het bij nieuwe bestanden weg en verwijderen het bij het verplaatsen. Het maakt de hiërarchische indeling ook zonder de index van de app in het geheugen begrijpelijk voor tools en agents.

Taal van de gegevensmap

De weinige teksten die TandemLoop zelf in bestanden schrijft – de labels in het relatieblok (Bereich: / Area: …), de koppen in het logboek van een taak (## Du — 21.3.2026 / ## You — 2026-03-21), de secties van een voorstel (## Diskussion / ## Discussion) en de instructies voor AI-agents (AGENTS.md, _system/docs/) –, volgen de taal van de gegevensmap. Die staat in _config/language.yaml:

language: en

Nieuw aangemaakte gegevensmappen zijn Engels; gegevensmappen zonder dit bestand (uit oudere versies) blijven Duits. De taal van de gegevensmap hangt niet af van de taal van het apparaat – daardoor schrijven alle apparaten dezelfde bestanden. Bij het lezen herkent TandemLoop beide varianten.

Rechtstreeks in de gegevensmap wijzigen – met beleid. Je kunt bestanden met elke teksteditor openen. Let daarbij op: ID’s mogen nooit worden gewijzigd; datumwaarden staan in de frontmatter van Markdown-bestanden tussen enkele aanhalingstekens ('2026-03-14T09:30:00'), in weergave- en configuratiebestanden (_views/, _config/) zonder aanhalingstekens; de map _archive/ kun je beter niet handmatig wijzigen. Gebruik voor structurele wijzigingen (projecten verplaatsen, tags een andere naam geven) liever de app of het voorstellenmechanisme – anders kan de interne index inconsistent worden.

Meerdere apparaten: synchroniseren via iCloud Drive

TandemLoop heeft geen eigen server en verstuurt uit zichzelf geen gegevens via het internet. Omdat je gegevensmap een heel gewone map is, gebruik je hem op meerdere apparaten door hem in iCloud Drive te zetten. iCloud houdt de bestanden tussen Mac, iPad en iPhone up-to-date; TandemLoop leest op elk apparaat dezelfde map en haalt ontbrekende bestanden zo nodig uit iCloud.

Instellingen › Gegevensmap › Gegevensmap wisselen… › kies een map in iCloud Drive

Niet op twee apparaten tegelijk schrijven. Clouddiensten synchroniseren op bestandsniveau en kennen de interne opbouw van je gegevensmap niet. Wijzig je gegevens daarom zo veel mogelijk op één apparaat tegelijk en wacht tot de synchronisatie klaar is voordat je het volgende apparaat gebruikt – anders kunnen er conflictkopieën van afzonderlijke bestanden ontstaan. Hetzelfde geldt als een AI-tool tegelijkertijd dezelfde gegevensmap in de cloud gebruikt.

Synchronisatie vervangt geen back-up. Een cloudsynchronisatie zet ook verwijderingen door naar alle apparaten. Gebruik voor echte back-ups daarnaast bijvoorbeeld Time Machine of de versiegeschiedenis van je clouddienst.