Atelier programma-architectuur

Definitie

Atelier is de werknaam voor Jims all-in-one desktop-app program. Het is een umbrella over bestaande systemen (KennisBank, vault-mcp, vault-app, kennisbank-web, jimvandenbreemen.nl, Backlog.md) waarin assets, taken, schrijfwerk en publicaties samenkomen als één werkruimte.

Context

Voor april 2026 bestonden de onderdelen als losse projecten die parallel ontwikkelden. Sync tussen vault-mcp en kennisbank-web ging via directe SQLite-reads, wat schema-drift veroorzaakte. Publicatie was handmatig. Een schrijfdraft leefde in Obsidian, een interview-asset in vault-mcp, een taak in Backlog.md. Geen plek bracht dit samen per project (Lokaal, Boek Engagency, Remotion Hackerspaces, jimvandenbreemen.nl, Eindredacteur). Atelier is opgezet om die fragmentatie te dichten zonder bestaande systemen te vervangen.

Kernpunten

Vier sub-projecten, lineaire afhankelijkheid.

A. Integratiecontract (@atelier/vault-contract). Fundament. TypeScript-package in een nieuwe ideeen/ monorepo met Zod-schemas en versie-veld als contract tussen vault-mcp en consumers. Consumers zijn vault-app, kennisbank-web en toekomstige agents. Doel: einde van stille schema-breuken en directe SQLite-access.

B. Unified project view. Per project in Atelier een dashboard: assets + backlog tasks + drafts + publicatielinks. vault-app wordt bij start van B hernoemd naar atelier (product name, identifier nl.jimvandenbreemen.atelier). Schema v4 breidt de projects tabel uit met status, deadline, project_repos, project_channels.

C. Schrijf/productiewerkflow. CodeMirror 6 editor in Atelier met transcript-modus (sprekers, timestamps) en conflict-detectie met Obsidian. doc.write MCP-tool routeert alle writes via vault-mcp voor atomaire schrijvingen en FTS5 re-index. promote to publication flow: draft → getagde asset → verschijnt in kennisbank-web build.

D. Publicatieautomatisering (compleet, 2026-04-22). Vier kanalen: quartz, hugo, remotion, indesign-export. Typed pipeline-modules in Atelier/pipelines/<channel>.ts plus een publication_targets tabel (schema v6) in vault-mcp voor dynamische status per asset per kanaal. UI: PublishButton + PublishModal (preview + execute) + PublicationLog overlay. 47 vault-tests + 11 pipeline-tests groen.

Naamgeving discipline. KennisBank, vault-mcp, vault-app, kennisbank-web, Atelier zijn canonieke namen. Gebruik nooit “vault” kaal; dat verwart vier entiteiten. vault-app wordt Atelier bij start sub-project B, niet eerder.

Project-opslag. Sinds 2026-04-22 is ~/Claude/projects/Atelier/ de enige repo (samenvoeging van de eerdere losse repos ideeen/ en atelier/). Bevat: vault/ (MCP-server), vault-app/ (Tauri + React UI), pipelines/ (publicatie-executors), plans/ (implementatieplannen A-D), specs/ (spec-documenten), backlog/ (Backlog.md), PLAN.md. GitHub: github.com/Jvdbreemen/Atelier. Niet onderdeel van claude-workspace omdat ~/Claude/.gitignore alles onder projects/ negeert.

Volgorde en zichtbare waarde. A heeft als bewust zichtbaar resultaat een “public assets tab” in vault-app, zodat het niet alleen plumbing voelt. B is het eerste echte “Atelier-gevoel” moment. C verandert schrijf-gedrag; alleen zinvol als Atelier al home-base is. D sluit de loop met publicatie. Die volgorde is geen toeval.

Verbanden

Bronnen

Geen externe bronnen. Architectuur gedestilleerd uit sessie-brainstorm en vier design-specs.

Verbanden (aanvulling)

Drielaagse vault architectuur (sinds 2026-04-25)

Vault-mcp is gerefactord van MCP-only naar drielaagse architectuur. Alle drie lagen delen dezelfde createCore() initialisatie en tool-registry uit vault/src/core.ts.

LaagDoelEntry pointStatus
vault CLIMensen, scripts, Claude Code via Bashsrc/cli.tsPrimair
vault serve (JSON-lines)Tauri app, persistent agentssrc/serve.tsDefault voor serve
vault serve --mcpMCP-clients (Claude Code MCP-host, etc)src/server.ts + src/index.tsLegacy/opt-in

JSON-lines protocol: {"id":N,"cmd":"...","params":{...}} request {"id":N,"ok":true,"result":...} response. Geen handshake, geen capability-negotiation, geen notificaties.

Tauri app heeft parallel mcp.rs (origineel) en bridge.rs (JSON-lines, opt-in via VITE_TRANSPORT=bridge). MCP blijft volwaardige fallback tot bridge in productie gevalideerd is. Zie wiki-vault-cli-architectuur voor de implementatiedetails.

Cross-platform staat

Sinds 2026-04-25 platform-abstractie via vault/src/platform.ts:

  • PLATFORM_FEATURES.sips macOS-only (image thumbnails)
  • PLATFORM_FEATURES.lightroom macOS + Windows (XMP sync)
  • PLATFORM_FEATURES.indesign macOS + Windows
  • ThumbnailProvider valt terug op ffmpeg op Linux/Windows
  • VaultWatcher polling via VAULT_WATCHER_POLLING=1 env var

Tauri bundle-targets: app, dmg (macOS), msi, nsis (Windows), appimage, deb (Linux). GitHub Actions matrix valideert alle drie platforms per push.

Sessie-herkomst