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
-
Zie ook: wiki-parallelle-subagents-workflow
-
Zie ook: wiki-cc-scheduled-tasks
-
Gerelateerd project:
~/Claude/projects/atelier/ -
Zie ook: wiki-qmd-semantisch-zoeken — references
Bronnen
Geen externe bronnen. Architectuur gedestilleerd uit sessie-brainstorm en vier design-specs.
Verbanden (aanvulling)
- Zie ook: wiki-atelier-design-system — DS van de vault-app (Space Grotesk, oklch, Tailwind v4 tokens)
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.
| Laag | Doel | Entry point | Status |
|---|---|---|---|
vault CLI | Mensen, scripts, Claude Code via Bash | src/cli.ts | Primair |
vault serve (JSON-lines) | Tauri app, persistent agents | src/serve.ts | Default voor serve |
vault serve --mcp | MCP-clients (Claude Code MCP-host, etc) | src/server.ts + src/index.ts | Legacy/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.sipsmacOS-only (image thumbnails)PLATFORM_FEATURES.lightroommacOS + Windows (XMP sync)PLATFORM_FEATURES.indesignmacOS + WindowsThumbnailProvidervalt terug op ffmpeg op Linux/WindowsVaultWatcherpolling viaVAULT_WATCHER_POLLING=1env var
Tauri bundle-targets: app, dmg (macOS), msi, nsis (Windows), appimage, deb (Linux). GitHub Actions matrix valideert alle drie platforms per push.